bitsnap-react 1.22.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +20 -0
- package/dist/BitsnapCart-GK3MQGP7.js +2 -0
- package/dist/BitsnapCart-GK3MQGP7.js.map +1 -0
- package/dist/BitsnapCart-ZC6LMXLO.mjs +2 -0
- package/dist/CartProvider-FJDBDV4N.js +2 -0
- package/dist/CartProvider-FJDBDV4N.js.map +1 -0
- package/dist/{CartProvider-YUV2Q523.mjs → CartProvider-P7BZVK2M.mjs} +2 -2
- package/dist/PanelModelFiles-EKQRLF46.js.map +1 -1
- package/dist/analytics.js +1 -1
- package/dist/analytics.js.map +1 -1
- package/dist/analytics.mjs +1 -1
- package/dist/catalog.js +1 -1
- package/dist/catalog.js.map +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/chat.js +1 -1
- package/dist/chat.js.map +1 -1
- package/dist/chat.mjs +1 -1
- package/dist/{chunk-SAKZOHU7.js → chunk-2CL4B4KM.js} +2 -2
- package/dist/chunk-2CL4B4KM.js.map +1 -0
- package/dist/chunk-2D2TQK3R.js +2 -0
- package/dist/chunk-2D2TQK3R.js.map +1 -0
- package/dist/{chunk-C2AJ5B32.mjs → chunk-4AU5SEHU.mjs} +2 -2
- package/dist/chunk-6Q3VGPSF.js.map +1 -1
- package/dist/{chunk-ZFZR3CI5.js → chunk-7GSQV4NW.js} +2 -2
- package/dist/chunk-7GSQV4NW.js.map +1 -0
- package/dist/{chunk-WYRECFVW.js → chunk-CA5EJJW7.js} +2 -2
- package/dist/chunk-CA5EJJW7.js.map +1 -0
- package/dist/{chunk-U37ZH4YJ.js → chunk-DCICRN6G.js} +2 -2
- package/dist/chunk-DCICRN6G.js.map +1 -0
- package/dist/{chunk-QQSCVPOG.mjs → chunk-EVV25IKM.mjs} +2 -2
- package/dist/{chunk-QQSCVPOG.mjs.map → chunk-EVV25IKM.mjs.map} +1 -1
- package/dist/{chunk-MBSXTB6G.js → chunk-EVX5SQL2.js} +2 -2
- package/dist/chunk-EVX5SQL2.js.map +1 -0
- package/dist/chunk-FVZ4W7QG.js +5 -0
- package/dist/chunk-FVZ4W7QG.js.map +1 -0
- package/dist/chunk-GMQYQTUM.mjs +2 -0
- package/dist/chunk-GMQYQTUM.mjs.map +1 -0
- package/dist/{chunk-35ZQU353.js → chunk-I6QN3T6K.js} +2 -2
- package/dist/chunk-I6QN3T6K.js.map +1 -0
- package/dist/chunk-ILYJCT5S.js +2 -0
- package/dist/chunk-ILYJCT5S.js.map +1 -0
- package/dist/{chunk-QJOMFK4X.mjs → chunk-JRSQ2IGQ.mjs} +2 -2
- package/dist/chunk-JSDGZ4NY.js.map +1 -1
- package/dist/chunk-KOYBZORL.js.map +1 -1
- package/dist/{chunk-5MXBUGY3.mjs → chunk-M6QFQ3DR.mjs} +2 -2
- package/dist/chunk-MDAFPGPA.js.map +1 -1
- package/dist/{chunk-KFY6IOAA.js → chunk-MY6BPCRV.js} +2 -2
- package/dist/{chunk-ZFUE3AX5.mjs.map → chunk-MY6BPCRV.js.map} +1 -1
- package/dist/{chunk-QCIETNFZ.mjs → chunk-NMXTTD5M.mjs} +2 -2
- package/dist/chunk-PFKZ7KUU.js.map +1 -1
- package/dist/chunk-Q337IQNA.js.map +1 -1
- package/dist/{chunk-IVB3E4V3.mjs → chunk-RA6M3TJ3.mjs} +2 -2
- package/dist/{chunk-NCCP2UDM.mjs → chunk-SKQJESEB.mjs} +2 -2
- package/dist/chunk-STDV54FL.mjs +2 -0
- package/dist/chunk-STDV54FL.mjs.map +1 -0
- package/dist/{chunk-JS3KK56H.js → chunk-SZLSKIYU.js} +2 -2
- package/dist/chunk-SZLSKIYU.js.map +1 -0
- package/dist/chunk-W3RGQYPD.js.map +1 -1
- package/dist/{chunk-TVZLDLAV.mjs → chunk-W4EUYPJ3.mjs} +2 -2
- package/dist/chunk-Z3YOJ6NZ.js.map +1 -1
- package/dist/chunk-ZMEWUEZJ.mjs +5 -0
- package/dist/chunk-ZMEWUEZJ.mjs.map +1 -0
- package/dist/consent.js.map +1 -1
- package/dist/course.js +1 -1
- package/dist/course.js.map +1 -1
- package/dist/course.mjs +1 -1
- package/dist/embed/analytics.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/methods-IEHZTZEY.mjs +2 -0
- package/dist/methods-S4KBRY2I.js +2 -0
- package/dist/methods-S4KBRY2I.js.map +1 -0
- package/dist/model-files-client-P4PORZJ6.js.map +1 -1
- package/dist/models.js.map +1 -1
- package/dist/returns.js +1 -1
- package/dist/returns.js.map +1 -1
- package/dist/returns.mjs +1 -1
- package/dist/viewer3d.js.map +1 -1
- package/dist/viewer3d.mjs +1 -1
- package/package.json +2 -2
- package/dist/BitsnapCart-AINUJQVF.mjs +0 -2
- package/dist/BitsnapCart-GP2UJSG4.js +0 -2
- package/dist/BitsnapCart-GP2UJSG4.js.map +0 -1
- package/dist/CartProvider-HTKGBPVA.js +0 -2
- package/dist/CartProvider-HTKGBPVA.js.map +0 -1
- package/dist/chunk-35ZQU353.js.map +0 -1
- package/dist/chunk-3TUL63IC.js +0 -2
- package/dist/chunk-3TUL63IC.js.map +0 -1
- package/dist/chunk-4JR74NXR.js +0 -2
- package/dist/chunk-4JR74NXR.js.map +0 -1
- package/dist/chunk-GLKBCVNH.mjs +0 -2
- package/dist/chunk-GLKBCVNH.mjs.map +0 -1
- package/dist/chunk-JS3KK56H.js.map +0 -1
- package/dist/chunk-KFY6IOAA.js.map +0 -1
- package/dist/chunk-MBSXTB6G.js.map +0 -1
- package/dist/chunk-QJBQ45R6.mjs +0 -5
- package/dist/chunk-QJBQ45R6.mjs.map +0 -1
- package/dist/chunk-SAKZOHU7.js.map +0 -1
- package/dist/chunk-SZNTXRFD.js +0 -5
- package/dist/chunk-SZNTXRFD.js.map +0 -1
- package/dist/chunk-U37ZH4YJ.js.map +0 -1
- package/dist/chunk-WYRECFVW.js.map +0 -1
- package/dist/chunk-ZFUE3AX5.mjs +0 -2
- package/dist/chunk-ZFZR3CI5.js.map +0 -1
- package/dist/methods-4Q37ITIM.js +0 -2
- package/dist/methods-4Q37ITIM.js.map +0 -1
- package/dist/methods-JLVRTNPE.mjs +0 -2
- /package/dist/{BitsnapCart-AINUJQVF.mjs.map → BitsnapCart-ZC6LMXLO.mjs.map} +0 -0
- /package/dist/{CartProvider-YUV2Q523.mjs.map → CartProvider-P7BZVK2M.mjs.map} +0 -0
- /package/dist/{chunk-C2AJ5B32.mjs.map → chunk-4AU5SEHU.mjs.map} +0 -0
- /package/dist/{chunk-QJOMFK4X.mjs.map → chunk-JRSQ2IGQ.mjs.map} +0 -0
- /package/dist/{chunk-5MXBUGY3.mjs.map → chunk-M6QFQ3DR.mjs.map} +0 -0
- /package/dist/{chunk-QCIETNFZ.mjs.map → chunk-NMXTTD5M.mjs.map} +0 -0
- /package/dist/{chunk-IVB3E4V3.mjs.map → chunk-RA6M3TJ3.mjs.map} +0 -0
- /package/dist/{chunk-NCCP2UDM.mjs.map → chunk-SKQJESEB.mjs.map} +0 -0
- /package/dist/{chunk-TVZLDLAV.mjs.map → chunk-W4EUYPJ3.mjs.map} +0 -0
- /package/dist/{methods-JLVRTNPE.mjs.map → methods-IEHZTZEY.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gen/proto/common/v1/environment_pb.ts","../src/gen/proto/public/v1/returns_pb.ts","../src/rpc-provider.tsx","../src/gen/proto/dashboard/v1/notifications-NotificationsService_connectquery.ts","../src/gen/proto/dashboard/v1/notifications_pb.ts","../src/gen/proto/dashboard/v1/product_pb.ts","../src/gen/proto/public/v1/public_api-PublicApiService_connectquery.ts","../src/gen/proto/public/v1/returns-ReturnsService_connectquery.ts","../src/ui/button.tsx","../src/ui/input.tsx","../src/components/returns/color.ts","../src/ui/textarea.tsx","../src/ui/skeleton.tsx"],"sourcesContent":["// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/environment.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file common/v1/environment.proto.\n */\nexport const file_common_v1_environment: GenFile = /*@__PURE__*/\n fileDesc(\"Chtjb21tb24vdjEvZW52aXJvbm1lbnQucHJvdG8SCWNvbW1vbi52MSonCgtFbnZpcm9ubWVudBIOCgpQUk9EVUNUSU9OEAASCAoEVEVTVBABQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\");\n\n/**\n * @generated from enum common.v1.Environment\n */\nexport enum Environment {\n /**\n * @generated from enum value: PRODUCTION = 0;\n */\n PRODUCTION = 0,\n\n /**\n * @generated from enum value: TEST = 1;\n */\n TEST = 1,\n}\n\n/**\n * Describes the enum common.v1.Environment.\n */\nexport const EnvironmentSchema: GenEnum<Environment> = /*@__PURE__*/\n enumDesc(file_common_v1_environment, 0);\n\n","// @generated by protoc-gen-es v2.14.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Environment } from \"../../common/v1/environment_pb\";\nimport { file_common_v1_environment } from \"../../common/v1/environment_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file public/v1/returns.proto.\n */\nexport const file_public_v1_returns: GenFile = /*@__PURE__*/\n fileDesc(\"ChdwdWJsaWMvdjEvcmV0dXJucy5wcm90bxIJcHVibGljLnYxIosBChlTdGFydFJldHVyblNlc3Npb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZW1haWwYAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQSEwoGbG9jYWxlGAQgASgJSACIAQFCCQoHX2xvY2FsZSJhChpTdGFydFJldHVyblNlc3Npb25SZXNwb25zZRIUCgxjaGFsbGVuZ2VfaWQYASABKAkSHAoUcmVzZW5kX2FmdGVyX3NlY29uZHMYAiABKAUSDwoHbWVzc2FnZRgDIAEoCSKBAQoaVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFsbGVuZ2VfaWQYAiABKAkSDAoEY29kZRgDIAEoCRIrCgtlbnZpcm9ubWVudBgEIAEoDjIWLmNvbW1vbi52MS5FbnZpcm9ubWVudCJkChtWZXJpZnlSZXR1cm5TZXNzaW9uUmVzcG9uc2USFQoNc2Vzc2lvbl90b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ0ChtFeGNoYW5nZVBhbmVsU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQiZQocRXhjaGFuZ2VQYW5lbFNlc3Npb25SZXNwb25zZRIVCg1zZXNzaW9uX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjMKClJldHVyblBhZ2USEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAki1AEKElJldHVybk9yZGVyU3VtbWFyeRIaChJjYW5vbmljYWxfb3JkZXJfaWQYASABKAkSGQoRZGlzcGxheV9yZWZlcmVuY2UYAiABKAkSDwoHZ2F0ZXdheRgDIAEoCRIwCgxwdXJjaGFzZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3RvdGFsX21pbm9yGAUgASgDEhAKCGN1cnJlbmN5GAYgASgJEh0KFXJldHVybmFibGVfbGluZV9jb3VudBgHIAEoBSJrChdMaXN0UmV0dXJuT3JkZXJzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSEQoJcGFnZV9zaXplGAMgASgFEhIKCnBhZ2VfdG9rZW4YBCABKAkicQoYTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEi0KBm9yZGVycxgBIAMoCzIdLnB1YmxpYy52MS5SZXR1cm5PcmRlclN1bW1hcnkSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEg0KBXRvdGFsGAMgASgFIsQDCg9SZXR1cm5PcmRlckxpbmUSDwoHbGluZV9pZBgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEhIKCnZhcmlhbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAUgASgJEhoKEnB1cmNoYXNlZF9xdWFudGl0eRgGIAEoBRIZChFyZXNlcnZlZF9xdWFudGl0eRgHIAEoBRIZChFyZXR1cm5lZF9xdWFudGl0eRgIIAEoBRIaChJhdmFpbGFibGVfcXVhbnRpdHkYCSABKAUSGgoScmVndWxhcl91bml0X21pbm9yGAogASgDEhcKD3BhaWRfdW5pdF9taW5vchgLIAEoAxIQCghjdXJyZW5jeRgMIAEoCRIQCghlbGlnaWJsZRgNIAEoCBIYChBleGNsdXNpb25fcmVhc29uGA4gASgJEh0KFXBhaWRfbGluZV90b3RhbF9taW5vchgPIAEoAxIfChdjb3Vwb25fYWxsb2NhdGlvbl9taW5vchgQIAEoAxIVCg1hY2Nlc3Nfc291cmNlGBEgASgJEhgKEGFjY2Vzc19yZWZlcmVuY2UYEiABKAki3wEKEVJldHVybk9yZGVyRGV0YWlsEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgBIAEoCRIZChFkaXNwbGF5X3JlZmVyZW5jZRgCIAEoCRIPCgdnYXRld2F5GAMgASgJEjAKDHB1cmNoYXNlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLdG90YWxfbWlub3IYBSABKAMSEAoIY3VycmVuY3kYBiABKAkSKQoFbGluZXMYByADKAsyGi5wdWJsaWMudjEuUmV0dXJuT3JkZXJMaW5lIjsKFlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDwoHbGluZV9pZBgBIAEoCRIQCghxdWFudGl0eRgCIAEoBSJzChJSZXR1cm5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK5AQoVUmV0dXJuUmVxdWVzdExpbmVWaWV3Eg8KB2xpbmVfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAMgASgJEhoKEnJlcXVlc3RlZF9xdWFudGl0eRgEIAEoBRIZChFhcHByb3ZlZF9xdWFudGl0eRgFIAEoBRIZChFyZWNlaXZlZF9xdWFudGl0eRgGIAEoBRIVCg1hY2Nlc3Nfc3RhdHVzGAcgASgJIvoCChFSZXR1cm5SZXF1ZXN0VmlldxIKCgJpZBgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIVCg1yZWZ1bmRfc3RhdHVzGAUgASgJEhsKE3JlZnVuZF9hbW91bnRfbWlub3IYBiABKAMSEAoIY3VycmVuY3kYByABKAkSFQoNY3VzdG9tZXJfbm90ZRgIIAEoCRIPCgd2ZXJzaW9uGAkgASgDEi4KCmNyZWF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBWxpbmVzGAsgAygLMiAucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lVmlldxIuCgdoaXN0b3J5GAwgAygLMh0ucHVibGljLnYxLlJldHVybkhpc3RvcnlFbnRyeRIbChNyZXR1cm5faW5zdHJ1Y3Rpb25zGA0gASgJImIKGUdldFJldHVybmFibGVPcmRlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgDIAEoCSKAAQoaR2V0UmV0dXJuYWJsZU9yZGVyUmVzcG9uc2USKwoFb3JkZXIYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuT3JkZXJEZXRhaWwSNQoOcmV0dXJuX2hpc3RvcnkYAiADKAsyHS5wdWJsaWMudjEuUmV0dXJuSGlzdG9yeUVudHJ5IrwBChpDcmVhdGVSZXR1cm5SZXF1ZXN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEjAKBWl0ZW1zGAQgAygLMiEucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDAoEbm90ZRgFIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBiABKAkiTAobQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXciaAoUTGlzdE15UmV0dXJuc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJIm4KFUxpc3RNeVJldHVybnNSZXNwb25zZRItCgdyZXR1cm5zGAEgAygLMhwucHVibGljLnYxLlJldHVyblJlcXVlc3RWaWV3EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRINCgV0b3RhbBgDIAEoBSJSChJHZXRNeVJldHVyblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXJldHVybl9pZBgDIAEoCSJEChNHZXRNeVJldHVyblJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXcyigYKDlJldHVybnNTZXJ2aWNlEmEKElN0YXJ0UmV0dXJuU2Vzc2lvbhIkLnB1YmxpYy52MS5TdGFydFJldHVyblNlc3Npb25SZXF1ZXN0GiUucHVibGljLnYxLlN0YXJ0UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmQKE1ZlcmlmeVJldHVyblNlc3Npb24SJS5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QaJi5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmcKFEV4Y2hhbmdlUGFuZWxTZXNzaW9uEiYucHVibGljLnYxLkV4Y2hhbmdlUGFuZWxTZXNzaW9uUmVxdWVzdBonLnB1YmxpYy52MS5FeGNoYW5nZVBhbmVsU2Vzc2lvblJlc3BvbnNlElsKEExpc3RSZXR1cm5PcmRlcnMSIi5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1JlcXVlc3QaIy5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEmEKEkdldFJldHVybmFibGVPcmRlchIkLnB1YmxpYy52MS5HZXRSZXR1cm5hYmxlT3JkZXJSZXF1ZXN0GiUucHVibGljLnYxLkdldFJldHVybmFibGVPcmRlclJlc3BvbnNlEmQKE0NyZWF0ZVJldHVyblJlcXVlc3QSJS5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlcXVlc3QaJi5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlElIKDUxpc3RNeVJldHVybnMSHy5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1JlcXVlc3QaIC5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1Jlc3BvbnNlEkwKC0dldE15UmV0dXJuEh0ucHVibGljLnYxLkdldE15UmV0dXJuUmVxdWVzdBoeLnB1YmxpYy52MS5HZXRNeVJldHVyblJlc3BvbnNlYgZwcm90bzM\", [file_common_v1_environment, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message public.v1.StartReturnSessionRequest\n */\nexport type StartReturnSessionRequest = Message<\"public.v1.StartReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n\n /**\n * @generated from field: optional string locale = 4;\n */\n locale?: string | undefined;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionRequest.\n * Use `create(StartReturnSessionRequestSchema)` to create a new message.\n */\nexport const StartReturnSessionRequestSchema: GenMessage<StartReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 0);\n\n/**\n * @generated from message public.v1.StartReturnSessionResponse\n */\nexport type StartReturnSessionResponse = Message<\"public.v1.StartReturnSessionResponse\"> & {\n /**\n * @generated from field: string challenge_id = 1;\n */\n challengeId: string;\n\n /**\n * @generated from field: int32 resend_after_seconds = 2;\n */\n resendAfterSeconds: number;\n\n /**\n * @generated from field: string message = 3;\n */\n message: string;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionResponse.\n * Use `create(StartReturnSessionResponseSchema)` to create a new message.\n */\nexport const StartReturnSessionResponseSchema: GenMessage<StartReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 1);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionRequest\n */\nexport type VerifyReturnSessionRequest = Message<\"public.v1.VerifyReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string challenge_id = 2;\n */\n challengeId: string;\n\n /**\n * @generated from field: string code = 3;\n */\n code: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 4;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionRequest.\n * Use `create(VerifyReturnSessionRequestSchema)` to create a new message.\n */\nexport const VerifyReturnSessionRequestSchema: GenMessage<VerifyReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 2);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionResponse\n */\nexport type VerifyReturnSessionResponse = Message<\"public.v1.VerifyReturnSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionResponse.\n * Use `create(VerifyReturnSessionResponseSchema)` to create a new message.\n */\nexport const VerifyReturnSessionResponseSchema: GenMessage<VerifyReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 3);\n\n/**\n * Exchanges a customer panel access token for a returns session. The email comes\n * from the server-side panel session, never from the request.\n *\n * @generated from message public.v1.ExchangePanelSessionRequest\n */\nexport type ExchangePanelSessionRequest = Message<\"public.v1.ExchangePanelSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string access_token = 2;\n */\n accessToken: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionRequest.\n * Use `create(ExchangePanelSessionRequestSchema)` to create a new message.\n */\nexport const ExchangePanelSessionRequestSchema: GenMessage<ExchangePanelSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 4);\n\n/**\n * @generated from message public.v1.ExchangePanelSessionResponse\n */\nexport type ExchangePanelSessionResponse = Message<\"public.v1.ExchangePanelSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionResponse.\n * Use `create(ExchangePanelSessionResponseSchema)` to create a new message.\n */\nexport const ExchangePanelSessionResponseSchema: GenMessage<ExchangePanelSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 5);\n\n/**\n * @generated from message public.v1.ReturnPage\n */\nexport type ReturnPage = Message<\"public.v1.ReturnPage\"> & {\n /**\n * @generated from field: int32 page_size = 1;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 2;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ReturnPage.\n * Use `create(ReturnPageSchema)` to create a new message.\n */\nexport const ReturnPageSchema: GenMessage<ReturnPage> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 6);\n\n/**\n * @generated from message public.v1.ReturnOrderSummary\n */\nexport type ReturnOrderSummary = Message<\"public.v1.ReturnOrderSummary\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: int32 returnable_line_count = 7;\n */\n returnableLineCount: number;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderSummary.\n * Use `create(ReturnOrderSummarySchema)` to create a new message.\n */\nexport const ReturnOrderSummarySchema: GenMessage<ReturnOrderSummary> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 7);\n\n/**\n * @generated from message public.v1.ListReturnOrdersRequest\n */\nexport type ListReturnOrdersRequest = Message<\"public.v1.ListReturnOrdersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersRequest.\n * Use `create(ListReturnOrdersRequestSchema)` to create a new message.\n */\nexport const ListReturnOrdersRequestSchema: GenMessage<ListReturnOrdersRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 8);\n\n/**\n * @generated from message public.v1.ListReturnOrdersResponse\n */\nexport type ListReturnOrdersResponse = Message<\"public.v1.ListReturnOrdersResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnOrderSummary orders = 1;\n */\n orders: ReturnOrderSummary[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersResponse.\n * Use `create(ListReturnOrdersResponseSchema)` to create a new message.\n */\nexport const ListReturnOrdersResponseSchema: GenMessage<ListReturnOrdersResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 9);\n\n/**\n * @generated from message public.v1.ReturnOrderLine\n */\nexport type ReturnOrderLine = Message<\"public.v1.ReturnOrderLine\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: string variant_id = 3;\n */\n variantId: string;\n\n /**\n * @generated from field: string name = 4;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 5;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 purchased_quantity = 6;\n */\n purchasedQuantity: number;\n\n /**\n * @generated from field: int32 reserved_quantity = 7;\n */\n reservedQuantity: number;\n\n /**\n * @generated from field: int32 returned_quantity = 8;\n */\n returnedQuantity: number;\n\n /**\n * @generated from field: int32 available_quantity = 9;\n */\n availableQuantity: number;\n\n /**\n * @generated from field: int64 regular_unit_minor = 10;\n */\n regularUnitMinor: bigint;\n\n /**\n * @generated from field: int64 paid_unit_minor = 11;\n */\n paidUnitMinor: bigint;\n\n /**\n * @generated from field: string currency = 12;\n */\n currency: string;\n\n /**\n * @generated from field: bool eligible = 13;\n */\n eligible: boolean;\n\n /**\n * @generated from field: string exclusion_reason = 14;\n */\n exclusionReason: string;\n\n /**\n * @generated from field: int64 paid_line_total_minor = 15;\n */\n paidLineTotalMinor: bigint;\n\n /**\n * @generated from field: int64 coupon_allocation_minor = 16;\n */\n couponAllocationMinor: bigint;\n\n /**\n * @generated from field: string access_source = 17;\n */\n accessSource: string;\n\n /**\n * @generated from field: string access_reference = 18;\n */\n accessReference: string;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderLine.\n * Use `create(ReturnOrderLineSchema)` to create a new message.\n */\nexport const ReturnOrderLineSchema: GenMessage<ReturnOrderLine> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 10);\n\n/**\n * @generated from message public.v1.ReturnOrderDetail\n */\nexport type ReturnOrderDetail = Message<\"public.v1.ReturnOrderDetail\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnOrderLine lines = 7;\n */\n lines: ReturnOrderLine[];\n};\n\n/**\n * Describes the message public.v1.ReturnOrderDetail.\n * Use `create(ReturnOrderDetailSchema)` to create a new message.\n */\nexport const ReturnOrderDetailSchema: GenMessage<ReturnOrderDetail> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 11);\n\n/**\n * @generated from message public.v1.ReturnRequestLineInput\n */\nexport type ReturnRequestLineInput = Message<\"public.v1.ReturnRequestLineInput\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: int32 quantity = 2;\n */\n quantity: number;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineInput.\n * Use `create(ReturnRequestLineInputSchema)` to create a new message.\n */\nexport const ReturnRequestLineInputSchema: GenMessage<ReturnRequestLineInput> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 12);\n\n/**\n * @generated from message public.v1.ReturnHistoryEntry\n */\nexport type ReturnHistoryEntry = Message<\"public.v1.ReturnHistoryEntry\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string status = 3;\n */\n status: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ReturnHistoryEntry.\n * Use `create(ReturnHistoryEntrySchema)` to create a new message.\n */\nexport const ReturnHistoryEntrySchema: GenMessage<ReturnHistoryEntry> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 13);\n\n/**\n * @generated from message public.v1.ReturnRequestLineView\n */\nexport type ReturnRequestLineView = Message<\"public.v1.ReturnRequestLineView\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 3;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 requested_quantity = 4;\n */\n requestedQuantity: number;\n\n /**\n * @generated from field: int32 approved_quantity = 5;\n */\n approvedQuantity: number;\n\n /**\n * @generated from field: int32 received_quantity = 6;\n */\n receivedQuantity: number;\n\n /**\n * @generated from field: string access_status = 7;\n */\n accessStatus: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineView.\n * Use `create(ReturnRequestLineViewSchema)` to create a new message.\n */\nexport const ReturnRequestLineViewSchema: GenMessage<ReturnRequestLineView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 14);\n\n/**\n * @generated from message public.v1.ReturnRequestView\n */\nexport type ReturnRequestView = Message<\"public.v1.ReturnRequestView\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string status = 4;\n */\n status: string;\n\n /**\n * @generated from field: string refund_status = 5;\n */\n refundStatus: string;\n\n /**\n * @generated from field: int64 refund_amount_minor = 6;\n */\n refundAmountMinor: bigint;\n\n /**\n * @generated from field: string currency = 7;\n */\n currency: string;\n\n /**\n * @generated from field: string customer_note = 8;\n */\n customerNote: string;\n\n /**\n * @generated from field: int64 version = 9;\n */\n version: bigint;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 10;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineView lines = 11;\n */\n lines: ReturnRequestLineView[];\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry history = 12;\n */\n history: ReturnHistoryEntry[];\n\n /**\n * @generated from field: string return_instructions = 13;\n */\n returnInstructions: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestView.\n * Use `create(ReturnRequestViewSchema)` to create a new message.\n */\nexport const ReturnRequestViewSchema: GenMessage<ReturnRequestView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 15);\n\n/**\n * @generated from message public.v1.GetReturnableOrderRequest\n */\nexport type GetReturnableOrderRequest = Message<\"public.v1.GetReturnableOrderRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderRequest.\n * Use `create(GetReturnableOrderRequestSchema)` to create a new message.\n */\nexport const GetReturnableOrderRequestSchema: GenMessage<GetReturnableOrderRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 16);\n\n/**\n * @generated from message public.v1.GetReturnableOrderResponse\n */\nexport type GetReturnableOrderResponse = Message<\"public.v1.GetReturnableOrderResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnOrderDetail order = 1;\n */\n order?: ReturnOrderDetail | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry return_history = 2;\n */\n returnHistory: ReturnHistoryEntry[];\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderResponse.\n * Use `create(GetReturnableOrderResponseSchema)` to create a new message.\n */\nexport const GetReturnableOrderResponseSchema: GenMessage<GetReturnableOrderResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 17);\n\n/**\n * @generated from message public.v1.CreateReturnRequestRequest\n */\nexport type CreateReturnRequestRequest = Message<\"public.v1.CreateReturnRequestRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineInput items = 4;\n */\n items: ReturnRequestLineInput[];\n\n /**\n * @generated from field: string note = 5;\n */\n note: string;\n\n /**\n * @generated from field: string idempotency_key = 6;\n */\n idempotencyKey: string;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestRequest.\n * Use `create(CreateReturnRequestRequestSchema)` to create a new message.\n */\nexport const CreateReturnRequestRequestSchema: GenMessage<CreateReturnRequestRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 18);\n\n/**\n * @generated from message public.v1.CreateReturnRequestResponse\n */\nexport type CreateReturnRequestResponse = Message<\"public.v1.CreateReturnRequestResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestResponse.\n * Use `create(CreateReturnRequestResponseSchema)` to create a new message.\n */\nexport const CreateReturnRequestResponseSchema: GenMessage<CreateReturnRequestResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 19);\n\n/**\n * @generated from message public.v1.ListMyReturnsRequest\n */\nexport type ListMyReturnsRequest = Message<\"public.v1.ListMyReturnsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsRequest.\n * Use `create(ListMyReturnsRequestSchema)` to create a new message.\n */\nexport const ListMyReturnsRequestSchema: GenMessage<ListMyReturnsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 20);\n\n/**\n * @generated from message public.v1.ListMyReturnsResponse\n */\nexport type ListMyReturnsResponse = Message<\"public.v1.ListMyReturnsResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnRequestView returns = 1;\n */\n returns: ReturnRequestView[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsResponse.\n * Use `create(ListMyReturnsResponseSchema)` to create a new message.\n */\nexport const ListMyReturnsResponseSchema: GenMessage<ListMyReturnsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 21);\n\n/**\n * @generated from message public.v1.GetMyReturnRequest\n */\nexport type GetMyReturnRequest = Message<\"public.v1.GetMyReturnRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string return_id = 3;\n */\n returnId: string;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnRequest.\n * Use `create(GetMyReturnRequestSchema)` to create a new message.\n */\nexport const GetMyReturnRequestSchema: GenMessage<GetMyReturnRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 22);\n\n/**\n * @generated from message public.v1.GetMyReturnResponse\n */\nexport type GetMyReturnResponse = Message<\"public.v1.GetMyReturnResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnResponse.\n * Use `create(GetMyReturnResponseSchema)` to create a new message.\n */\nexport const GetMyReturnResponseSchema: GenMessage<GetMyReturnResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 23);\n\n/**\n * @generated from service public.v1.ReturnsService\n */\nexport const ReturnsService: GenService<{\n /**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\n startReturnSession: {\n methodKind: \"unary\";\n input: typeof StartReturnSessionRequestSchema;\n output: typeof StartReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\n verifyReturnSession: {\n methodKind: \"unary\";\n input: typeof VerifyReturnSessionRequestSchema;\n output: typeof VerifyReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\n exchangePanelSession: {\n methodKind: \"unary\";\n input: typeof ExchangePanelSessionRequestSchema;\n output: typeof ExchangePanelSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\n listReturnOrders: {\n methodKind: \"unary\";\n input: typeof ListReturnOrdersRequestSchema;\n output: typeof ListReturnOrdersResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\n getReturnableOrder: {\n methodKind: \"unary\";\n input: typeof GetReturnableOrderRequestSchema;\n output: typeof GetReturnableOrderResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\n createReturnRequest: {\n methodKind: \"unary\";\n input: typeof CreateReturnRequestRequestSchema;\n output: typeof CreateReturnRequestResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\n listMyReturns: {\n methodKind: \"unary\";\n input: typeof ListMyReturnsRequestSchema;\n output: typeof ListMyReturnsResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\n getMyReturn: {\n methodKind: \"unary\";\n input: typeof GetMyReturnRequestSchema;\n output: typeof GetMyReturnResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_public_v1_returns, 0);\n\n","import {\n TransportProvider,\n useMutation as um,\n useQuery as uq,\n} from \"@connectrpc/connect-query\";\nimport { createConnectTransport } from \"@connectrpc/connect-web\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { useState } from \"react\";\n\nimport { Transport } from \"@connectrpc/connect\";\nimport { clientHeaderInterceptor } from \"./lib/client-header\";\nimport { HOST, setCustomHost } from \"./components/checkout/constants\";\nimport * as notificationsRouter from \"./gen/proto/dashboard/v1/notifications-NotificationsService_connectquery\";\nimport * as publicApiRouter from \"./gen/proto/public/v1/public_api-PublicApiService_connectquery\";\nimport * as returnsRouter from \"./gen/proto/public/v1/returns-ReturnsService_connectquery\";\n\nlet currentFinalTransportHost: string | undefined;\nlet finalTransport: Transport | undefined;\n\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return this.toString();\n};\n\nexport const rpcProvider = {\n publicApi: publicApiRouter,\n notifications: notificationsRouter,\n returns: returnsRouter,\n};\n\nexport const useQuery = uq;\nexport const useMutation = um;\n\nlet customHost: string | undefined;\n\nexport function setHost(host: string): void {\n customHost = host;\n setCustomHost(host);\n}\n\nexport function getTransportHost(): string {\n return customHost ?? HOST;\n}\n\nfunction createRpcTransport(host: string): Transport {\n return createConnectTransport({\n baseUrl: host + \"/api/rpc\",\n useBinaryFormat: true,\n interceptors: [clientHeaderInterceptor],\n // @ts-ignore\n fetch: async (input, init?) => {\n return fetch(input, {\n ...init,\n keepalive: false,\n credentials: \"include\",\n });\n },\n });\n}\n\nconst transportsByHost = new Map<string, Transport>();\n\n/**\n * Transport for an explicit host, created once per host. Unlike the shared\n * transport behind `RpcProvider`, several hosts can be in use at the same time.\n */\nexport function getRpcTransport(host: string): Transport {\n let transport = transportsByHost.get(host);\n if (transport == null) {\n transport = createRpcTransport(host);\n transportsByHost.set(host, transport);\n }\n return transport;\n}\n\nexport const RpcProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const transportHost = getTransportHost();\n\n if (finalTransport == null || currentFinalTransportHost !== transportHost) {\n currentFinalTransportHost = transportHost;\n finalTransport = createRpcTransport(transportHost);\n }\n\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: { queries: { staleTime: 5000 } },\n }),\n );\n\n return (\n <TransportProvider transport={finalTransport}>\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n </TransportProvider>\n );\n};\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { NotificationsService } from \"./notifications_pb\";\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\nexport const createNotificationSetting = NotificationsService.method.createNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\nexport const readNotificationSetting = NotificationsService.method.readNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\nexport const updateNotificationSetting = NotificationsService.method.updateNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\nexport const deleteNotificationSetting = NotificationsService.method.deleteNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\nexport const createNotificationGroup = NotificationsService.method.createNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\nexport const readNotificationGroups = NotificationsService.method.readNotificationGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\nexport const updateNotificationGroup = NotificationsService.method.updateNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\nexport const deleteNotificationGroup = NotificationsService.method.deleteNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\nexport const createNotificationUser = NotificationsService.method.createNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\nexport const readNotificationUsers = NotificationsService.method.readNotificationUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\nexport const updateNotificationUser = NotificationsService.method.updateNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\nexport const deleteNotificationUser = NotificationsService.method.deleteNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\nexport const createNotificationGroupUser = NotificationsService.method.createNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\nexport const readNotificationGroupUsers = NotificationsService.method.readNotificationGroupUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\nexport const updateNotificationGroupUser = NotificationsService.method.updateNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\nexport const deleteNotificationGroupUser = NotificationsService.method.deleteNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\nexport const createNotificationMessage = NotificationsService.method.createNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\nexport const readNotificationMessages = NotificationsService.method.readNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\nexport const getSentNotificationMessages = NotificationsService.method.getSentNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\nexport const updateNotificationMessage = NotificationsService.method.updateNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\nexport const deleteNotificationMessage = NotificationsService.method.deleteNotificationMessage;\n\n/**\n * Planned -> cancelled, atomically (a message the worker already claimed cannot be cancelled).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CancelNotificationMessage\n */\nexport const cancelNotificationMessage = NotificationsService.method.cancelNotificationMessage;\n\n/**\n * Re-queues only the failed deliveries of a message (a delivery is retried at most 3 times).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.RetryFailedNotificationMessageJobs\n */\nexport const retryFailedNotificationMessageJobs = NotificationsService.method.retryFailedNotificationMessageJobs;\n\n/**\n * Copies a message (content, audience, channels) into a new draft without a send time.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DuplicateNotificationMessage\n */\nexport const duplicateNotificationMessage = NotificationsService.method.duplicateNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationMessageReport\n */\nexport const getNotificationMessageReport = NotificationsService.method.getNotificationMessageReport;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\nexport const createNotificationMessageJob = NotificationsService.method.createNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\nexport const readNotificationMessageJobs = NotificationsService.method.readNotificationMessageJobs;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\nexport const updateNotificationMessageJob = NotificationsService.method.updateNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\nexport const deleteNotificationMessageJob = NotificationsService.method.deleteNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\nexport const readNotificationProducts = NotificationsService.method.readNotificationProducts;\n\n/**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\nexport const getNotificationUserSettings = NotificationsService.method.getNotificationUserSettings;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\nexport const verifyUserEmail = NotificationsService.method.verifyUserEmail;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\nexport const getUserGroups = NotificationsService.method.getUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\nexport const updateUserGroups = NotificationsService.method.updateUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\nexport const getProjectedRecipientCount = NotificationsService.method.getProjectedRecipientCount;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\nexport const getNotificationStats = NotificationsService.method.getNotificationStats;\n\n/**\n * Renders the campaign e-mail of an unsaved message with the real template\n * (shop branding, sanitized rich body). Persists and sends nothing.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.PreviewNotificationMessageEmail\n */\nexport const previewNotificationMessageEmail = NotificationsService.method.previewNotificationMessageEmail;\n","// @generated by protoc-gen-es v2.14.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { EmptySchema, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { SearchProductsResponseSchema } from \"./product_pb\";\nimport { file_dashboard_v1_product } from \"./product_pb\";\nimport type { NotificationGroupHowOften } from \"../../common/v1/push_notifications_pb\";\nimport { file_common_v1_push_notifications } from \"../../common/v1/push_notifications_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/notifications.proto.\n */\nexport const file_dashboard_v1_notifications: GenFile = /*@__PURE__*/\n fileDesc(\"CiBkYXNoYm9hcmQvdjEvbm90aWZpY2F0aW9ucy5wcm90bxIaZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEiYAoWVmVyaWZ5VXNlckVtYWlsUmVxdWVzdBISCgVlbWFpbBgBIAEoCUgAiAEBEhEKBGNvZGUYAiABKAlIAYgBARIMCgRzbHVnGAMgASgJQggKBl9lbWFpbEIHCgVfY29kZSK/AQoXVmVyaWZ5VXNlckVtYWlsUmVzcG9uc2USDwoCb2sYASABKAhIAIgBARIZCgxhY2Nlc3NfdG9rZW4YAiABKAlIAYgBARIUCgd1c2VyX2lkGAMgASgJSAKIAQESFQoIcmV0cnlfaW4YBCABKAVIA4gBARIRCgRzZW50GAUgASgISASIAQFCBQoDX29rQg8KDV9hY2Nlc3NfdG9rZW5CCgoIX3VzZXJfaWRCCwoJX3JldHJ5X2luQgcKBV9zZW50IlAKFEdldFVzZXJHcm91cHNSZXF1ZXN0EgwKBHNsdWcYASABKAkSGQoMYWNjZXNzX3Rva2VuGAIgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiKJAgoVR2V0VXNlckdyb3Vwc1Jlc3BvbnNlEkcKBmdyb3VwcxgBIAMoCzI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFVzZXJHcm91cHNSZXNwb25zZS5Hcm91cBqmAQoFR3JvdXASCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBWlzX29uGAQgASgIEjwKCWhvd19vZnRlbhgFIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgwKCl9ob3dfb2Z0ZW4idwoXVXBkYXRlVXNlckdyb3Vwc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhEKCWdyb3VwX2lkcxgDIAMoCRIZCgxhY2Nlc3NfdG9rZW4YBCABKAlIAIgBAUIPCg1fYWNjZXNzX3Rva2VuIm8KIkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhkKDGFjY2Vzc190b2tlbhgDIAEoCUgAiAEBQg8KDV9hY2Nlc3NfdG9rZW4ijAQKI0dldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABrAAgoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSJAocZW1haWxfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgGIAEoCBIiChpzbXNfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgHIAEoCBIlCh1tb2JpbGVfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgIIAEoCBIeChZoYXNfdXNlcl9pbnN0YWxsZWRfYXBwGAkgASgIQggKBnJlc3VsdCIiCiBDcmVhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdCIgCh5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QigwIKIFVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIAoTZW1haWxfb3Blbl90cmFja2luZxgGIAEoCEgAiAEBQhYKFF9lbWFpbF9vcGVuX3RyYWNraW5nIkMKIERlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJIpADCh9SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgZSZXN1bHQSHwoXbm90aWZpY2F0aW9uX3NldHRpbmdfaWQYASABKAkSGQoRc3Vic2NyaXB0aW9uX3NsdWcYAiABKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAMgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAQgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgFIAEoCBIbChNlbWFpbF9vcGVuX3RyYWNraW5nGAYgASgIQggKBnJlc3VsdCLkAQobTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElEKB3N1Y2Nlc3MYASABKAsyPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaKQoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJQggKBnJlc3VsdCLKAQoeQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARI8Cglob3dfb2Z0ZW4YAyABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkgBiAEBEhYKCWlzX3B1YmxpYxgEIAEoCEgCiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuQgwKCl9pc19wdWJsaWMiWgodUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1JlcXVlc3QSEQoJZ3JvdXBfaWRzGAEgAygJEhcKCmdyb3VwX25hbWUYAiABKAlIAIgBAUINCgtfZ3JvdXBfbmFtZSLpAQoeVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0Eh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESPAoJaG93X29mdGVuGAQgASgOMiQuY29tbW9uLnYxLk5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW5IAYgBARIWCglpc19wdWJsaWMYBSABKAhIAogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX2hvd19vZnRlbkIMCgpfaXNfcHVibGljIj8KHkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAki6gMKHlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgVHcm91cBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKCWhvd19vZnRlbhgEIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQESDQoFdXNlcnMYBSABKAUSEQoJaXNfcHVibGljGAYgASgIQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuGloKBlJlc3VsdBJQCgZncm91cHMYASADKAsyQC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVzcG9uc2UuR3JvdXBCCAoGcmVzdWx0It4BChlOb3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEk8KB3N1Y2Nlc3MYASABKAsyPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGicKBlJlc3VsdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAlCCAoGcmVzdWx0IqMCCh1DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEg0KBWVtYWlsGAIgASgJEg4KBmdyb3VwcxgDIAMoCRISCgVwaG9uZRgEIAEoCUgAiAEBEhcKCmZpcnN0X25hbWUYBSABKAlIAYgBARIWCglsYXN0X25hbWUYBiABKAlIAogBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYByABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAkgASgIQggKBl9waG9uZUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lIlgKHFJlYWROb3RpZmljYXRpb25Vc2Vyc1JlcXVlc3QSEAoIdXNlcl9pZHMYASADKAkSFwoKdXNlcl9lbWFpbBgCIAEoCUgAiAEBQg0KC191c2VyX2VtYWlsIrACCh1VcGRhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEhkKDGFjY2Vzc190b2tlbhgIIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDwoNX2FjY2Vzc190b2tlbiJqCh1EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEgwKBHNsdWcYAiABKAkSGQoMYWNjZXNzX3Rva2VuGAMgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiL4AQodUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVzcG9uc2USUwoHc3VjY2VzcxgBIAEoCzJALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IqkCChhOb3RpZmljYXRpb25Vc2VyUmVzcG9uc2USTgoHc3VjY2VzcxgBIAEoCzI7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABIZCgxhY2Nlc3NfdG9rZW4YAyABKAlIAYgBARIUCgd1c2VyX2lkGAQgASgJSAKIAQEaJgoGUmVzdWx0EhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJQggKBnJlc3VsdEIPCg1fYWNjZXNzX3Rva2VuQgoKCF91c2VyX2lkImEKIkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QSHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJIjcKIlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMSEQoJZ3JvdXBfaWRzGAEgAygJIoUBCiJVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJEh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgCIAEoCRIcChRub3RpZmljYXRpb25fdXNlcl9pZBgDIAEoCSJICiJEZWxldGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJIoICCiJSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlElgKB3N1Y2Nlc3MYASABKAsyRS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IusBCh1Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRJTCgdzdWNjZXNzGAEgASgLMkAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaLAoGUmVzdWx0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJQggKBnJlc3VsdCJjCgxDaGFubmVsU3RhdHMSEgoKcmVjaXBpZW50cxgBIAEoBRIMCgRzZW50GAIgASgFEhEKCWRlbGl2ZXJlZBgDIAEoBRIOCgZvcGVuZWQYBCABKAUSDgoGZmFpbGVkGAUgASgFIsABChRNZXNzYWdlRGVsaXZlcnlTdGF0cxI3CgVlbWFpbBgBIAEoCzIoLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNoYW5uZWxTdGF0cxI4CgZtb2JpbGUYAiABKAsyKC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DaGFubmVsU3RhdHMSNQoDc21zGAMgASgLMiguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ2hhbm5lbFN0YXRzIt0FChNOb3RpZmljYXRpb25NZXNzYWdlEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJEkUKBnN0YXR1cxgCIAEoDjI1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSKwoHc2VuZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdGl0bGUYBCABKAkSFQoIc3VidGl0bGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAcgASgJSAKIAQESFQoIb3Blbl91cmwYDyABKAlIA4gBARIOCgZncm91cHMYCCADKAkSEAoIcHJvZHVjdHMYCSADKAkSDQoFdXNlcnMYCiADKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAsgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgNIAEoCBIaCg1lcnJvcl9tZXNzYWdlGA4gASgJSASIAQESNQoMY2FuY2VsbGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEkQKBXN0YXRzGBEgASgLMjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTWVzc2FnZURlbGl2ZXJ5U3RhdHNIBogBARIcCg9lbWFpbF9ib2R5X2h0bWwYEiABKAlIB4gBAUILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEILCglfb3Blbl91cmxCEAoOX2Vycm9yX21lc3NhZ2VCDwoNX2NhbmNlbGxlZF9hdEIICgZfc3RhdHNCEgoQX2VtYWlsX2JvZHlfaHRtbCKDBAogQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QSRQoGc3RhdHVzGAEgASgOMjUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVN0YXR1cxIrCgdzZW5kX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0aXRsZRgDIAEoCRIVCghzdWJ0aXRsZRgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARIWCglpbWFnZV91cmwYBiABKAlIAogBARIVCghvcGVuX3VybBgNIAEoCUgDiAEBEg4KBmdyb3VwcxgHIAMoCRIQCghwcm9kdWN0cxgIIAMoCRINCgV1c2VycxgJIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCiABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEhwKD2VtYWlsX2JvZHlfaHRtbBgOIAEoCUgEiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIqQCCiJHZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0EiQKF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJSACIAQESMwoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIxCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIgChNpbmNsdWRlX2V4cG9ydF9kYXRhGAQgASgISAOIAQFCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQg0KC19zdGFydF90aW1lQgsKCV9lbmRfdGltZUIWChRfaW5jbHVkZV9leHBvcnRfZGF0YSLhAwojR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGigKGE5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIMCgRzZW50GAEgASgFGusBCgZSZXN1bHQSTgoVbm90aWZpY2F0aW9uX21lc3NhZ2VzGAEgAygLMi8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZRJnCgVzdGF0cxgCIAEoCzJYLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIYCgtleHBvcnRfZGF0YRgDIAEoDEgAiAEBQg4KDF9leHBvcnRfZGF0YUIICgZyZXN1bHQi+gEKH1JlYWROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QSJAoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYASABKAlIAIgBARIWCglwYWdlX3NpemUYAiABKAVIAYgBARIXCgpwYWdlX3Rva2VuGAMgASgJSAKIAQESRwoIc3RhdHVzZXMYBCADKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzQhoKGF9ub3RpZmljYXRpb25fbWVzc2FnZV9pZEIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuItIECiBVcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCRJFCgZzdGF0dXMYAiABKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzEisKB3NlbmRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRpdGxlGAQgASgJEhUKCHN1YnRpdGxlGAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEhYKCWltYWdlX3VybBgHIAEoCUgCiAEBEg4KBmdyb3VwcxgIIAMoCRIQCghwcm9kdWN0cxgJIAMoCRINCgV1c2VycxgKIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYDCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGA0gASgIEhoKDWVycm9yX21lc3NhZ2UYDiABKAlIA4gBARIVCghvcGVuX3VybBgPIAEoCUgEiAEBEhwKD2VtYWlsX2JvZHlfaHRtbBgQIAEoCUgFiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIkMKIENhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkYKI0R1cGxpY2F0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkwKKVJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIoYCCipSZXRyeUZhaWxlZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USYAoHc3VjY2VzcxgBIAEoCzJNLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABotCgZSZXN1bHQSEAoIcmVxdWV1ZWQYASABKAUSEQoJZXhoYXVzdGVkGAIgASgFQggKBnJlc3VsdCJGCiNHZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSL6AgokR2V0Tm90aWZpY2F0aW9uTWVzc2FnZVJlcG9ydFJlc3BvbnNlEloKB3N1Y2Nlc3MYASABKAsyRy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAarAEKBlJlc3VsdBJNChRub3RpZmljYXRpb25fbWVzc2FnZRgBIAEoCzIvLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2USPwoFc3RhdHMYAiABKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5NZXNzYWdlRGVsaXZlcnlTdGF0cxISCgpyZWNpcGllbnRzGAMgASgFQggKBnJlc3VsdCJDCiBEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSK2AgogUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USVgoHc3VjY2VzcxgBIAEoCzJDLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGnEKBlJlc3VsdBJOChVub3RpZmljYXRpb25fbWVzc2FnZXMYASADKAsyLy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCUIICgZyZXN1bHQi5AEKG05vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRJRCgdzdWNjZXNzGAEgASgLMj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGikKBlJlc3VsdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCUIICgZyZXN1bHQikgIKI0NyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EkgKBnN0YXR1cxgBIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLY3VzdG9tZXJfaWQYAyABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYBCABKAkSEAoIcHJpb3JpdHkYBSADKAkSGgoNZXJyb3JfbWVzc2FnZRgGIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIuUEChROb3RpZmljYXRpb25EZWxpdmVyeRIgChhub3RpZmljYXRpb25fZGVsaXZlcnlfaWQYASABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYAiABKAkSEwoLY3VzdG9tZXJfaWQYAyABKAkSGwoOcmVjaXBpZW50X25hbWUYBCABKAlIAIgBARIXCg9yZWNpcGllbnRfZW1haWwYBSABKAkSSAoHY2hhbm5lbBgGIAEoDjI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkRlbGl2ZXJ5Q2hhbm5lbBJGCgZzdGF0dXMYByABKA4yNi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIwCgdzZW50X2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjUKDGRlbGl2ZXJlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIyCglvcGVuZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESGgoNZXJyb3JfbWVzc2FnZRgLIAEoCUgEiAEBEhIKCm9wZW5fY291bnQYDCABKAUSEAoIYXR0ZW1wdHMYDSABKAVCEQoPX3JlY2lwaWVudF9uYW1lQgoKCF9zZW50X2F0Qg8KDV9kZWxpdmVyZWRfYXRCDAoKX29wZW5lZF9hdEIQCg5fZXJyb3JfbWVzc2FnZSLIAwoiUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVxdWVzdBIoChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlIAIgBARIkChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgCIAEoCUgBiAEBEk0KB2NoYW5uZWwYAyABKA4yNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWxIAogBARJNCgdvdXRjb21lGAQgASgOMjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lSAOIAQESEwoGc2VhcmNoGAUgASgJSASIAQESEQoEcGFnZRgGIAEoBUgFiAEBEhYKCXBhZ2Vfc2l6ZRgHIAEoBUgGiAEBQh4KHF9ub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWRCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQgoKCF9jaGFubmVsQgoKCF9vdXRjb21lQgkKB19zZWFyY2hCBwoFX3BhZ2VCDAoKX3BhZ2Vfc2l6ZSLvAQojVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QSIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJEkgKBnN0YXR1cxgCIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoNZXJyb3JfbWVzc2FnZRgEIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIkoKI0RlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCSLRBQojUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGqoCChZOb3RpZmljYXRpb25NZXNzYWdlSm9iEiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCRJICgZzdGF0dXMYAiABKA4yOC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iU3RhdHVzEisKB3NlbnRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2N1c3RvbWVyX2lkGAQgASgJEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAUgASgJEhAKCHByaW9yaXR5GAYgAygJEhoKDWVycm9yX21lc3NhZ2UYByABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZRrYAQoGUmVzdWx0EnkKGW5vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYnMYASADKAsyVi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iEkQKCmRlbGl2ZXJpZXMYAiADKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeRINCgV0b3RhbBgDIAEoBUIICgZyZXN1bHQi7gEKHk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGi0KBlJlc3VsdBIjChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlCCAoGcmVzdWx0ItACCgRVc2VyEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh0KEGlzX2FwcF9pbnN0YWxsZWQYCSABKAhIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQhMKEV9pc19hcHBfaW5zdGFsbGVkIjYKH1JlYWROb3RpZmljYXRpb25Qcm9kdWN0c1JlcXVlc3QSEwoLcHJvZHVjdF9pZHMYASADKAkisQEKJlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhQKB21lc3NhZ2UYAiABKAlIAIgBARIcCg9lbWFpbF9ib2R5X2h0bWwYAyABKAlIAYgBARIWCglpbWFnZV91cmwYBCABKAlIAogBAUIKCghfbWVzc2FnZUISChBfZW1haWxfYm9keV9odG1sQgwKCl9pbWFnZV91cmwimwIKJ1ByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXNwb25zZRJdCgdzdWNjZXNzGAEgASgLMkouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGkgKBlJlc3VsdBIPCgdzdWJqZWN0GAEgASgJEhEKCXByZWhlYWRlchgCIAEoCRIMCgRodG1sGAMgASgJEgwKBHRleHQYBCABKAlCCAoGcmVzdWx0IlQKIUdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBIOCgZncm91cHMYASADKAkSEAoIcHJvZHVjdHMYAiADKAkSDQoFdXNlcnMYAyADKAkicQoiR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXNwb25zZRINCgV0b3RhbBgBIAEoBRITCgtlbWFpbF9jb3VudBgCIAEoBRIRCglzbXNfY291bnQYAyABKAUSFAoMbW9iaWxlX2NvdW50GAQgASgFIqEBChtHZXROb3RpZmljYXRpb25TdGF0c1JlcXVlc3QSMwoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIxCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUi7AUKHEdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2USUgoHc3VjY2VzcxgBIAEoCzI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAadwoPU3RhdHVzQnJlYWtkb3duEg4KBmRyYWZ0cxgBIAEoBRIPCgdwbGFubmVkGAIgASgFEhMKC2luX3Byb2dyZXNzGAMgASgFEgwKBHNlbnQYBCABKAUSDQoFZXJyb3IYBSABKAUSEQoJY2FuY2VsbGVkGAYgASgFGj4KEENoYW5uZWxCcmVha2Rvd24SDgoGbW9iaWxlGAEgASgFEg0KBWVtYWlsGAIgASgFEgsKA3NtcxgDIAEoBRosCg1UaW1lbGluZVBvaW50EgwKBGRhdGUYASABKAkSDQoFY291bnQYAiABKAUaxwIKBlJlc3VsdBJiChBzdGF0dXNfYnJlYWtkb3duGAEgASgLMkguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZS5TdGF0dXNCcmVha2Rvd24SZAoRY2hhbm5lbF9icmVha2Rvd24YAiABKAsySS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLkNoYW5uZWxCcmVha2Rvd24SWAoIdGltZWxpbmUYAyADKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLlRpbWVsaW5lUG9pbnQSGQoRdG90YWxfc3Vic2NyaWJlcnMYBCABKAVCCAoGcmVzdWx0KmgKGU5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSCQoFRFJBRlQQABILCgdQTEFOTkVEEAESDwoLSU5fUFJPR1JFU1MQAhIICgRTRU5UEAMSCQoFRVJST1IQBBINCglDQU5DRUxMRUQQBSrOAQocTm90aWZpY2F0aW9uTWVzc2FnZUpvYlN0YXR1cxIoCiROT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX1RPRE8QABIvCitOT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX0lOX1BST0dSRVNTEAESKAokTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19TRU5UEAISKQolTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19FUlJPUhADKsYBChtOb3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWwSLQopTk9USUZJQ0FUSU9OX0RFTElWRVJZX0NIQU5ORUxfVU5TUEVDSUZJRUQQABInCiNOT1RJRklDQVRJT05fREVMSVZFUllfQ0hBTk5FTF9FTUFJTBABEigKJE5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX01PQklMRRACEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX1NNUxADKu4BChpOb3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIsCihOT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKAokTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19QRU5ESU5HEAESJQohTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19TRU5UEAISJwojTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19GQUlMRUQQAxIoCiROT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1NLSVBQRUQQBCrAAQobTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX0FOWRAAEiYKIk5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX1NFTlQQARIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9GQUlMRUQQAhIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9PUEVORUQQAyrPEQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIyCi5GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfTk9UX0ZPVU5EEAISNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fU0VUVElOR19GQUlMRUQQAxI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9TRVRUSU5HX0ZBSUxFRBAEEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX1NFVFRJTkdfRkFJTEVEEAUSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9HUk9VUF9OT1RfRk9VTkQQBhIxCi1GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQU19OT1RfRk9VTkQQBxI0CjBGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCBI0CjBGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCRI0CjBGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQChIvCitGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfTk9UX0ZPVU5EEAsSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9VU0VSU19OT1RfRk9VTkQQDBIzCi9GQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9VU0VSX0ZBSUxFRBANEjMKL0ZBSUxVUkVfTUVTU0FHRV9VUERBVEVfTk9USUZJQ0FUSU9OX1VTRVJfRkFJTEVEEA4SMwovRkFJTFVSRV9NRVNTQUdFX0RFTEVURV9OT1RJRklDQVRJT05fVVNFUl9GQUlMRUQQDxI1CjFGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfTk9UX0ZPVU5EEBASOQo1RkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fR1JPVVBfVVNFUl9GQUlMRUQQERI5CjVGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9VU0VSX0ZBSUxFRBASEjkKNUZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfRkFJTEVEEBMSMgouRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX05PVF9GT1VORBAUEjMKL0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRVNfTk9UX0ZPVU5EEBUSNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQFhI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAXEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX01FU1NBR0VfRkFJTEVEEBgSNgoyRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9OT1RfRk9VTkQQGRI3CjNGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CU19OT1RfRk9VTkQQGhI6CjZGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQGxI6CjZGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHBI6CjZGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHRI2CjJGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfQUxSRUFEWV9FWElTVBAeEjsKN0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fU0VUVElOR19TTFVHX0FMUkVBRFlfVEFLRU4QHxIzCi9GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfQUxSRUFEWV9FWElTVBAgEjQKMEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fR1JPVVBfQUxSRUFEWV9FWElTVBAhEjgKNEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfQ0FOQ0VMTEFCTEUQIhI2CjJGQUlMVVJFX01FU1NBR0VfQ0FOQ0VMX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAjEjUKMUZBSUxVUkVfTUVTU0FHRV9SRVRSWV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQJBI5CjVGQUlMVVJFX01FU1NBR0VfRFVQTElDQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAlEjUKMUZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfRURJVEFCTEUQJhIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUVVPVEFfRVhDRUVERUQQJxIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUFJFVklFV19GQUlMRUQQKBInCiNGQUlMVVJFX01FU1NBR0VfRU1BSUxfQk9EWV9UT09fTE9ORxApMpwrChROb3RpZmljYXRpb25zU2VydmljZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEpIBChdSZWFkTm90aWZpY2F0aW9uU2V0dGluZxI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2USkgEKGVVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmcSPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRKSAQoZRGVsZXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEowBChdDcmVhdGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USjwEKFlJlYWROb3RpZmljYXRpb25Hcm91cHMSOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRKMAQoXVXBkYXRlTm90aWZpY2F0aW9uR3JvdXASOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QaNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEowBChdEZWxldGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USiQEKFkNyZWF0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKMAQoVUmVhZE5vdGlmaWNhdGlvblVzZXJzEjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlEokBChZVcGRhdGVOb3RpZmljYXRpb25Vc2VyEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QaNC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2USiQEKFkRlbGV0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKYAQobQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwVXNlclJlc3BvbnNlEpwBChpSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2VycxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMaPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlEpgBChtVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXISPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0GjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2USmAEKG0RlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlchI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QaOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpUBChhSZWFkTm90aWZpY2F0aW9uTWVzc2FnZXMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0GjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USngEKG0dldFNlbnROb3RpZmljYXRpb25NZXNzYWdlcxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QaPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXNwb25zZRKSAQoZVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpIBChlEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlEjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USkgEKGUNhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2USPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DYW5jZWxOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRKzAQoiUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9icxJFLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0GkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlEpgBChxEdXBsaWNhdGVOb3RpZmljYXRpb25NZXNzYWdlEj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRHVwbGljYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USoQEKHEdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnQSPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBpALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnRSZXNwb25zZRKbAQocQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEp4BChtSZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnMSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Gj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USmwEKHFVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2ISPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlSm9iUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRKbAQocRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEoUBChhSZWFkTm90aWZpY2F0aW9uUHJvZHVjdHMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uUHJvZHVjdHNSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VhcmNoUHJvZHVjdHNSZXNwb25zZRKeAQobR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzUmVxdWVzdBo/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlEnoKD1ZlcmlmeVVzZXJFbWFpbBIyLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlZlcmlmeVVzZXJFbWFpbFJlcXVlc3QaMy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5WZXJpZnlVc2VyRW1haWxSZXNwb25zZRJ0Cg1HZXRVc2VyR3JvdXBzEjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0VXNlckdyb3Vwc1JlcXVlc3QaMS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRVc2VyR3JvdXBzUmVzcG9uc2USXwoQVXBkYXRlVXNlckdyb3VwcxIzLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZVVzZXJHcm91cHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EpsBChpHZXRQcm9qZWN0ZWRSZWNpcGllbnRDb3VudBI9LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBo+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVzcG9uc2USiQEKFEdldE5vdGlmaWNhdGlvblN0YXRzEjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXF1ZXN0GjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZRKqAQofUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbBJCLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0GkMuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_dashboard_v1_product, file_common_v1_push_notifications]);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailRequest\n */\nexport type VerifyUserEmailRequest = Message<\"dashboard.notifications.v1.VerifyUserEmailRequest\"> & {\n /**\n * @generated from field: optional string email = 1;\n */\n email?: string | undefined;\n\n /**\n * @generated from field: optional string code = 2;\n */\n code?: string | undefined;\n\n /**\n * @generated from field: string slug = 3;\n */\n slug: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailRequest.\n * Use `create(VerifyUserEmailRequestSchema)` to create a new message.\n */\nexport const VerifyUserEmailRequestSchema: GenMessage<VerifyUserEmailRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailResponse\n */\nexport type VerifyUserEmailResponse = Message<\"dashboard.notifications.v1.VerifyUserEmailResponse\"> & {\n /**\n * @generated from field: optional bool ok = 1;\n */\n ok?: boolean | undefined;\n\n /**\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string | undefined;\n\n /**\n * @generated from field: optional string user_id = 3;\n */\n userId?: string | undefined;\n\n /**\n * Seconds until another code can be requested: the remaining time of the\n * per-e-mail resend throttle (sent = false) or of the per-address window.\n *\n * @generated from field: optional int32 retry_in = 4;\n */\n retryIn?: number | undefined;\n\n /**\n * Whether a code was actually sent by this call. ok = true, sent = false\n * is a throttled resend (the earlier code is still valid). Absent on old\n * servers and on the code-verification response.\n *\n * @generated from field: optional bool sent = 5;\n */\n sent?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailResponse.\n * Use `create(VerifyUserEmailResponseSchema)` to create a new message.\n */\nexport const VerifyUserEmailResponseSchema: GenMessage<VerifyUserEmailResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsRequest\n */\nexport type GetUserGroupsRequest = Message<\"dashboard.notifications.v1.GetUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * if access token is not provided, all groups are off and user needs to check which groups are for him.\n *\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsRequest.\n * Use `create(GetUserGroupsRequestSchema)` to create a new message.\n */\nexport const GetUserGroupsRequestSchema: GenMessage<GetUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse\n */\nexport type GetUserGroupsResponse = Message<\"dashboard.notifications.v1.GetUserGroupsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetUserGroupsResponse.Group groups = 1;\n */\n groups: GetUserGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.\n * Use `create(GetUserGroupsResponseSchema)` to create a new message.\n */\nexport const GetUserGroupsResponseSchema: GenMessage<GetUserGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse.Group\n */\nexport type GetUserGroupsResponse_Group = Message<\"dashboard.notifications.v1.GetUserGroupsResponse.Group\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: bool is_on = 4;\n */\n isOn: boolean;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 5;\n */\n howOften?: NotificationGroupHowOften | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.Group.\n * Use `create(GetUserGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const GetUserGroupsResponse_GroupSchema: GenMessage<GetUserGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateUserGroupsRequest\n */\nexport type UpdateUserGroupsRequest = Message<\"dashboard.notifications.v1.UpdateUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: repeated string group_ids = 3;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string access_token = 4;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateUserGroupsRequest.\n * Use `create(UpdateUserGroupsRequestSchema)` to create a new message.\n */\nexport const UpdateUserGroupsRequestSchema: GenMessage<UpdateUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 4);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsRequest\n */\nexport type GetNotificationUserSettingsRequest = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsRequest.\n * Use `create(GetNotificationUserSettingsRequestSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsRequestSchema: GenMessage<GetNotificationUserSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 5);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse\n */\nexport type GetNotificationUserSettingsResponse = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationUserSettingsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result success = 1;\n */\n value: GetNotificationUserSettingsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.\n * Use `create(GetNotificationUserSettingsResponseSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponseSchema: GenMessage<GetNotificationUserSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\n */\nexport type GetNotificationUserSettingsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * it can be unavailable for certain of reasons.\n *\n * @generated from field: bool email_notification_available = 6;\n */\n emailNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool sms_notification_available = 7;\n */\n smsNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool mobile_notification_available = 8;\n */\n mobileNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool has_user_installed_app = 9;\n */\n hasUserInstalledApp: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result.\n * Use `create(GetNotificationUserSettingsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponse_ResultSchema: GenMessage<GetNotificationUserSettingsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationSettingRequest\n */\nexport type CreateNotificationSettingRequest = Message<\"dashboard.notifications.v1.CreateNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationSettingRequest.\n * Use `create(CreateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const CreateNotificationSettingRequestSchema: GenMessage<CreateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 7);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingRequest\n */\nexport type ReadNotificationSettingRequest = Message<\"dashboard.notifications.v1.ReadNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingRequest.\n * Use `create(ReadNotificationSettingRequestSchema)` to create a new message.\n */\nexport const ReadNotificationSettingRequestSchema: GenMessage<ReadNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 8);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationSettingRequest\n */\nexport type UpdateNotificationSettingRequest = Message<\"dashboard.notifications.v1.UpdateNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Absent = unchanged.\n *\n * @generated from field: optional bool email_open_tracking = 6;\n */\n emailOpenTracking?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationSettingRequest.\n * Use `create(UpdateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationSettingRequestSchema: GenMessage<UpdateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 9);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationSettingRequest\n */\nexport type DeleteNotificationSettingRequest = Message<\"dashboard.notifications.v1.DeleteNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationSettingRequest.\n * Use `create(DeleteNotificationSettingRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationSettingRequestSchema: GenMessage<DeleteNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 10);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse\n */\nexport type ReadNotificationSettingResponse = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationSettingResponse.Result success = 1;\n */\n value: ReadNotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.\n * Use `create(ReadNotificationSettingResponseSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponseSchema: GenMessage<ReadNotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse.Result\n */\nexport type ReadNotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Invisible pixel in notification e-mails; opens are approximate.\n *\n * @generated from field: bool email_open_tracking = 6;\n */\n emailOpenTracking: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.Result.\n * Use `create(ReadNotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponse_ResultSchema: GenMessage<ReadNotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse\n */\nexport type NotificationSettingResponse = Message<\"dashboard.notifications.v1.NotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationSettingResponse.Result success = 1;\n */\n value: NotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.\n * Use `create(NotificationSettingResponseSchema)` to create a new message.\n */\nexport const NotificationSettingResponseSchema: GenMessage<NotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse.Result\n */\nexport type NotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.NotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.Result.\n * Use `create(NotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationSettingResponse_ResultSchema: GenMessage<NotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupRequest\n */\nexport type CreateNotificationGroupRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 3;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: optional bool is_public = 4;\n */\n isPublic?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupRequest.\n * Use `create(CreateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupRequestSchema: GenMessage<CreateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 13);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsRequest\n */\nexport type ReadNotificationGroupsRequest = Message<\"dashboard.notifications.v1.ReadNotificationGroupsRequest\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string group_name = 2;\n */\n groupName?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsRequest.\n * Use `create(ReadNotificationGroupsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsRequestSchema: GenMessage<ReadNotificationGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 14);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupRequest\n */\nexport type UpdateNotificationGroupRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: optional bool is_public = 5;\n */\n isPublic?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupRequest.\n * Use `create(UpdateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupRequestSchema: GenMessage<UpdateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 15);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupRequest\n */\nexport type DeleteNotificationGroupRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupRequest.\n * Use `create(DeleteNotificationGroupRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupRequestSchema: GenMessage<DeleteNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 16);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse\n */\nexport type ReadNotificationGroupsResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupsResponse.Result success = 1;\n */\n value: ReadNotificationGroupsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.\n * Use `create(ReadNotificationGroupsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponseSchema: GenMessage<ReadNotificationGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\n */\nexport type ReadNotificationGroupsResponse_Group = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: int32 users = 5;\n */\n users: number;\n\n /**\n * @generated from field: bool is_public = 6;\n */\n isPublic: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group.\n * Use `create(ReadNotificationGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_GroupSchema: GenMessage<ReadNotificationGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\n */\nexport type ReadNotificationGroupsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationGroupsResponse.Group groups = 1;\n */\n groups: ReadNotificationGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result.\n * Use `create(ReadNotificationGroupsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_ResultSchema: GenMessage<ReadNotificationGroupsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse\n */\nexport type NotificationGroupResponse = Message<\"dashboard.notifications.v1.NotificationGroupResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupResponse.Result success = 1;\n */\n value: NotificationGroupResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.\n * Use `create(NotificationGroupResponseSchema)` to create a new message.\n */\nexport const NotificationGroupResponseSchema: GenMessage<NotificationGroupResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse.Result\n */\nexport type NotificationGroupResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.Result.\n * Use `create(NotificationGroupResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupResponse_ResultSchema: GenMessage<NotificationGroupResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationUserRequest\n */\nexport type CreateNotificationUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: repeated string groups = 3;\n */\n groups: string[];\n\n /**\n * @generated from field: optional string phone = 4;\n */\n phone?: string | undefined;\n\n /**\n * @generated from field: optional string first_name = 5;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 6;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 7;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 8;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 9;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationUserRequest.\n * Use `create(CreateNotificationUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationUserRequestSchema: GenMessage<CreateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 19);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersRequest\n */\nexport type ReadNotificationUsersRequest = Message<\"dashboard.notifications.v1.ReadNotificationUsersRequest\"> & {\n /**\n * @generated from field: repeated string user_ids = 1;\n */\n userIds: string[];\n\n /**\n * @generated from field: optional string user_email = 2;\n */\n userEmail?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersRequest.\n * Use `create(ReadNotificationUsersRequestSchema)` to create a new message.\n */\nexport const ReadNotificationUsersRequestSchema: GenMessage<ReadNotificationUsersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 20);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationUserRequest\n */\nexport type UpdateNotificationUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string access_token = 8;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationUserRequest.\n * Use `create(UpdateNotificationUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationUserRequestSchema: GenMessage<UpdateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 21);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationUserRequest\n */\nexport type DeleteNotificationUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationUserRequest\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string slug = 2;\n */\n slug: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationUserRequest.\n * Use `create(DeleteNotificationUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationUserRequestSchema: GenMessage<DeleteNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 22);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse\n */\nexport type ReadNotificationUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationUsersResponse.Result success = 1;\n */\n value: ReadNotificationUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.\n * Use `create(ReadNotificationUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponseSchema: GenMessage<ReadNotificationUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse.Result\n */\nexport type ReadNotificationUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.Result.\n * Use `create(ReadNotificationUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponse_ResultSchema: GenMessage<ReadNotificationUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse\n */\nexport type NotificationUserResponse = Message<\"dashboard.notifications.v1.NotificationUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationUserResponse.Result success = 1;\n */\n value: NotificationUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n\n /**\n * @generated from field: optional string user_id = 4;\n */\n userId?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.\n * Use `create(NotificationUserResponseSchema)` to create a new message.\n */\nexport const NotificationUserResponseSchema: GenMessage<NotificationUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse.Result\n */\nexport type NotificationUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.Result.\n * Use `create(NotificationUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationUserResponse_ResultSchema: GenMessage<NotificationUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupUserRequest\n */\nexport type CreateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupUserRequest.\n * Use `create(CreateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupUserRequestSchema: GenMessage<CreateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 25);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersRequests\n */\nexport type ReadNotificationGroupUsersRequests = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersRequests\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersRequests.\n * Use `create(ReadNotificationGroupUsersRequestsSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersRequestsSchema: GenMessage<ReadNotificationGroupUsersRequests> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 26);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupUserRequest\n */\nexport type UpdateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n\n /**\n * @generated from field: string notification_group_id = 2;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 3;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupUserRequest.\n * Use `create(UpdateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupUserRequestSchema: GenMessage<UpdateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 27);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupUserRequest\n */\nexport type DeleteNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupUserRequest.\n * Use `create(DeleteNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupUserRequestSchema: GenMessage<DeleteNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 28);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse\n */\nexport type ReadNotificationGroupUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result success = 1;\n */\n value: ReadNotificationGroupUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.\n * Use `create(ReadNotificationGroupUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponseSchema: GenMessage<ReadNotificationGroupUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\n */\nexport type ReadNotificationGroupUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result.\n * Use `create(ReadNotificationGroupUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponse_ResultSchema: GenMessage<ReadNotificationGroupUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse\n */\nexport type NotificationGroupUserResponse = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupUserResponse.Result success = 1;\n */\n value: NotificationGroupUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.\n * Use `create(NotificationGroupUserResponseSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponseSchema: GenMessage<NotificationGroupUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse.Result\n */\nexport type NotificationGroupUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.Result.\n * Use `create(NotificationGroupUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponse_ResultSchema: GenMessage<NotificationGroupUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30, 0);\n\n/**\n * Counters for one channel of one message. `recipients` = deliveries created\n * for the channel; `delivered` and `opened` stay 0 where the channel has no\n * such signal (e-mail delivered needs the provider webhook; opens are approximate).\n *\n * @generated from message dashboard.notifications.v1.ChannelStats\n */\nexport type ChannelStats = Message<\"dashboard.notifications.v1.ChannelStats\"> & {\n /**\n * @generated from field: int32 recipients = 1;\n */\n recipients: number;\n\n /**\n * @generated from field: int32 sent = 2;\n */\n sent: number;\n\n /**\n * @generated from field: int32 delivered = 3;\n */\n delivered: number;\n\n /**\n * @generated from field: int32 opened = 4;\n */\n opened: number;\n\n /**\n * @generated from field: int32 failed = 5;\n */\n failed: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ChannelStats.\n * Use `create(ChannelStatsSchema)` to create a new message.\n */\nexport const ChannelStatsSchema: GenMessage<ChannelStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 31);\n\n/**\n * @generated from message dashboard.notifications.v1.MessageDeliveryStats\n */\nexport type MessageDeliveryStats = Message<\"dashboard.notifications.v1.MessageDeliveryStats\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats email = 1;\n */\n email?: ChannelStats | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats mobile = 2;\n */\n mobile?: ChannelStats | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats sms = 3;\n */\n sms?: ChannelStats | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.MessageDeliveryStats.\n * Use `create(MessageDeliveryStatsSchema)` to create a new message.\n */\nexport const MessageDeliveryStatsSchema: GenMessage<MessageDeliveryStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 32);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessage\n */\nexport type NotificationMessage = Message<\"dashboard.notifications.v1.NotificationMessage\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: optional string open_url = 15;\n */\n openUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp cancelled_at = 16;\n */\n cancelledAt?: Timestamp | undefined;\n\n /**\n * Filled on list rows of sent / in-progress / error messages.\n *\n * @generated from field: optional dashboard.notifications.v1.MessageDeliveryStats stats = 17;\n */\n stats?: MessageDeliveryStats | undefined;\n\n /**\n * Rich body of the e-mail (sanitized HTML from the composer's editor).\n * Absent = the e-mail uses `message`, like push.\n *\n * @generated from field: optional string email_body_html = 18;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessage.\n * Use `create(NotificationMessageSchema)` to create a new message.\n */\nexport const NotificationMessageSchema: GenMessage<NotificationMessage> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 33);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageRequest\n */\nexport type CreateNotificationMessageRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 1;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 2;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 3;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 4;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 5;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 6;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: optional string open_url = 13;\n */\n openUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 7;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 8;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 9;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 10;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 11;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 12;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Rich e-mail body (HTML); absent or empty = the e-mail uses `message`.\n *\n * @generated from field: optional string email_body_html = 14;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageRequest.\n * Use `create(CreateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageRequestSchema: GenMessage<CreateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 34);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesRequest\n */\nexport type GetSentNotificationMessagesRequest = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 2;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 3;\n */\n endTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional bool include_export_data = 4;\n */\n includeExportData?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesRequest.\n * Use `create(GetSentNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesRequestSchema: GenMessage<GetSentNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 35);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse\n */\nexport type GetSentNotificationMessagesResponse = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetSentNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result success = 1;\n */\n value: GetSentNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.\n * Use `create(GetSentNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponseSchema: GenMessage<GetSentNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\n */\nexport type GetSentNotificationMessagesResponse_NotificationMessageStats = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\"> & {\n /**\n * @generated from field: int32 sent = 1;\n */\n sent: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats.\n * Use `create(GetSentNotificationMessagesResponse_NotificationMessageStatsSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_NotificationMessageStatsSchema: GenMessage<GetSentNotificationMessagesResponse_NotificationMessageStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\n */\nexport type GetSentNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats stats = 2;\n */\n stats?: GetSentNotificationMessagesResponse_NotificationMessageStats | undefined;\n\n /**\n * @generated from field: optional bytes export_data = 3;\n */\n exportData?: Uint8Array | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result.\n * Use `create(GetSentNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_ResultSchema: GenMessage<GetSentNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesRequest\n */\nexport type ReadNotificationMessagesRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * Paging of the list (ignored when notification_message_id is set). Without\n * page_size the list is the newest 100 messages, as before.\n * page_size is capped at 100.\n *\n * @generated from field: optional int32 page_size = 2;\n */\n pageSize?: number | undefined;\n\n /**\n * The next_page_token of the previous page; empty for the first one.\n *\n * @generated from field: optional string page_token = 3;\n */\n pageToken?: string | undefined;\n\n /**\n * Only messages in these statuses; empty = every status.\n *\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessageStatus statuses = 4;\n */\n statuses: NotificationMessageStatus[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesRequest.\n * Use `create(ReadNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesRequestSchema: GenMessage<ReadNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 37);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageRequest\n */\nexport type UpdateNotificationMessageRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string | undefined;\n\n /**\n * Absent = unchanged (previously every update cleared it).\n *\n * @generated from field: optional string open_url = 15;\n */\n openUrl?: string | undefined;\n\n /**\n * Absent = unchanged; an empty string clears it (the e-mail uses `message` again).\n *\n * @generated from field: optional string email_body_html = 16;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageRequest.\n * Use `create(UpdateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageRequestSchema: GenMessage<UpdateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 38);\n\n/**\n * @generated from message dashboard.notifications.v1.CancelNotificationMessageRequest\n */\nexport type CancelNotificationMessageRequest = Message<\"dashboard.notifications.v1.CancelNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CancelNotificationMessageRequest.\n * Use `create(CancelNotificationMessageRequestSchema)` to create a new message.\n */\nexport const CancelNotificationMessageRequestSchema: GenMessage<CancelNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 39);\n\n/**\n * @generated from message dashboard.notifications.v1.DuplicateNotificationMessageRequest\n */\nexport type DuplicateNotificationMessageRequest = Message<\"dashboard.notifications.v1.DuplicateNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DuplicateNotificationMessageRequest.\n * Use `create(DuplicateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const DuplicateNotificationMessageRequestSchema: GenMessage<DuplicateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 40);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest\n */\nexport type RetryFailedNotificationMessageJobsRequest = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest.\n * Use `create(RetryFailedNotificationMessageJobsRequestSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsRequestSchema: GenMessage<RetryFailedNotificationMessageJobsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 41);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse\n */\nexport type RetryFailedNotificationMessageJobsResponse = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result success = 1;\n */\n value: RetryFailedNotificationMessageJobsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.\n * Use `create(RetryFailedNotificationMessageJobsResponseSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsResponseSchema: GenMessage<RetryFailedNotificationMessageJobsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 42);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result\n */\nexport type RetryFailedNotificationMessageJobsResponse_Result = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result\"> & {\n /**\n * Deliveries put back in the queue.\n *\n * @generated from field: int32 requeued = 1;\n */\n requeued: number;\n\n /**\n * Failed deliveries that already used all retries.\n *\n * @generated from field: int32 exhausted = 2;\n */\n exhausted: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result.\n * Use `create(RetryFailedNotificationMessageJobsResponse_ResultSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsResponse_ResultSchema: GenMessage<RetryFailedNotificationMessageJobsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 42, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportRequest\n */\nexport type GetNotificationMessageReportRequest = Message<\"dashboard.notifications.v1.GetNotificationMessageReportRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportRequest.\n * Use `create(GetNotificationMessageReportRequestSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportRequestSchema: GenMessage<GetNotificationMessageReportRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 43);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportResponse\n */\nexport type GetNotificationMessageReportResponse = Message<\"dashboard.notifications.v1.GetNotificationMessageReportResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationMessageReportResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationMessageReportResponse.Result success = 1;\n */\n value: GetNotificationMessageReportResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportResponse.\n * Use `create(GetNotificationMessageReportResponseSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportResponseSchema: GenMessage<GetNotificationMessageReportResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportResponse.Result\n */\nexport type GetNotificationMessageReportResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationMessageReportResponse.Result\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessage notification_message = 1;\n */\n notificationMessage?: NotificationMessage | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.MessageDeliveryStats stats = 2;\n */\n stats?: MessageDeliveryStats | undefined;\n\n /**\n * Distinct recipients (a person reached on two channels counts once).\n *\n * @generated from field: int32 recipients = 3;\n */\n recipients: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportResponse.Result.\n * Use `create(GetNotificationMessageReportResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportResponse_ResultSchema: GenMessage<GetNotificationMessageReportResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageRequest\n */\nexport type DeleteNotificationMessageRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageRequest.\n * Use `create(DeleteNotificationMessageRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageRequestSchema: GenMessage<DeleteNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 45);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse\n */\nexport type ReadNotificationMessagesResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessagesResponse.Result success = 1;\n */\n value: ReadNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.\n * Use `create(ReadNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponseSchema: GenMessage<ReadNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 46);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\n */\nexport type ReadNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n\n /**\n * Empty on the last page.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result.\n * Use `create(ReadNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponse_ResultSchema: GenMessage<ReadNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 46, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse\n */\nexport type NotificationMessageResponse = Message<\"dashboard.notifications.v1.NotificationMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageResponse.Result success = 1;\n */\n value: NotificationMessageResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.\n * Use `create(NotificationMessageResponseSchema)` to create a new message.\n */\nexport const NotificationMessageResponseSchema: GenMessage<NotificationMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 47);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse.Result\n */\nexport type NotificationMessageResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.Result.\n * Use `create(NotificationMessageResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageResponse_ResultSchema: GenMessage<NotificationMessageResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 47, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageJobRequest\n */\nexport type CreateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 1;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 2;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string customer_id = 3;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 4;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 5;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 6;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageJobRequest.\n * Use `create(CreateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageJobRequestSchema: GenMessage<CreateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 48);\n\n/**\n * One recipient on one channel.\n *\n * @generated from message dashboard.notifications.v1.NotificationDelivery\n */\nexport type NotificationDelivery = Message<\"dashboard.notifications.v1.NotificationDelivery\"> & {\n /**\n * @generated from field: string notification_delivery_id = 1;\n */\n notificationDeliveryId: string;\n\n /**\n * @generated from field: string notification_message_id = 2;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: string customer_id = 3;\n */\n customerId: string;\n\n /**\n * @generated from field: optional string recipient_name = 4;\n */\n recipientName?: string | undefined;\n\n /**\n * @generated from field: string recipient_email = 5;\n */\n recipientEmail: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationDeliveryChannel channel = 6;\n */\n channel: NotificationDeliveryChannel;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationDeliveryStatus status = 7;\n */\n status: NotificationDeliveryStatus;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp sent_at = 8;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp delivered_at = 9;\n */\n deliveredAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp opened_at = 10;\n */\n openedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional string error_message = 11;\n */\n errorMessage?: string | undefined;\n\n /**\n * @generated from field: int32 open_count = 12;\n */\n openCount: number;\n\n /**\n * @generated from field: int32 attempts = 13;\n */\n attempts: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationDelivery.\n * Use `create(NotificationDeliverySchema)` to create a new message.\n */\nexport const NotificationDeliverySchema: GenMessage<NotificationDelivery> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 49);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsRequest\n */\nexport type ReadNotificationMessageJobsRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsRequest\"> & {\n /**\n * @generated from field: optional string notification_message_job_id = 1;\n */\n notificationMessageJobId?: string | undefined;\n\n /**\n * Filters below apply to `deliveries` (per recipient and channel), which\n * is returned instead of `notification_message_jobs` when a message is given.\n *\n * @generated from field: optional string notification_message_id = 2;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * @generated from field: optional dashboard.notifications.v1.NotificationDeliveryChannel channel = 3;\n */\n channel?: NotificationDeliveryChannel | undefined;\n\n /**\n * @generated from field: optional dashboard.notifications.v1.NotificationDeliveryOutcome outcome = 4;\n */\n outcome?: NotificationDeliveryOutcome | undefined;\n\n /**\n * Matches recipient e-mail and name.\n *\n * @generated from field: optional string search = 5;\n */\n search?: string | undefined;\n\n /**\n * 0-based\n *\n * @generated from field: optional int32 page = 6;\n */\n page?: number | undefined;\n\n /**\n * default 50, max 200\n *\n * @generated from field: optional int32 page_size = 7;\n */\n pageSize?: number | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsRequest.\n * Use `create(ReadNotificationMessageJobsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsRequestSchema: GenMessage<ReadNotificationMessageJobsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 50);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageJobRequest\n */\nexport type UpdateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional string error_message = 4;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageJobRequest.\n * Use `create(UpdateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageJobRequestSchema: GenMessage<UpdateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageJobRequest\n */\nexport type DeleteNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageJobRequest.\n * Use `create(DeleteNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageJobRequestSchema: GenMessage<DeleteNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 52);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse\n */\nexport type ReadNotificationMessageJobsResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessageJobsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result success = 1;\n */\n value: ReadNotificationMessageJobsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.\n * Use `create(ReadNotificationMessageJobsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponseSchema: GenMessage<ReadNotificationMessageJobsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\n */\nexport type ReadNotificationMessageJobsResponse_NotificationMessageJob = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string customer_id = 4;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 5;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 6;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 7;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob.\n * Use `create(ReadNotificationMessageJobsResponse_NotificationMessageJobSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_NotificationMessageJobSchema: GenMessage<ReadNotificationMessageJobsResponse_NotificationMessageJob> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\n */\nexport type ReadNotificationMessageJobsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob notification_message_jobs = 1;\n */\n notificationMessageJobs: ReadNotificationMessageJobsResponse_NotificationMessageJob[];\n\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationDelivery deliveries = 2;\n */\n deliveries: NotificationDelivery[];\n\n /**\n * Rows matching the filters, ignoring paging.\n *\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result.\n * Use `create(ReadNotificationMessageJobsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_ResultSchema: GenMessage<ReadNotificationMessageJobsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse\n */\nexport type NotificationMessageJobResponse = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageJobResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobResponse.Result success = 1;\n */\n value: NotificationMessageJobResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.\n * Use `create(NotificationMessageJobResponseSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponseSchema: GenMessage<NotificationMessageJobResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 54);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse.Result\n */\nexport type NotificationMessageJobResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.Result.\n * Use `create(NotificationMessageJobResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponse_ResultSchema: GenMessage<NotificationMessageJobResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 54, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.User\n */\nexport type User = Message<\"dashboard.notifications.v1.User\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional bool is_app_installed = 9;\n */\n isAppInstalled?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.User.\n * Use `create(UserSchema)` to create a new message.\n */\nexport const UserSchema: GenMessage<User> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 55);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationProductsRequest\n */\nexport type ReadNotificationProductsRequest = Message<\"dashboard.notifications.v1.ReadNotificationProductsRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationProductsRequest.\n * Use `create(ReadNotificationProductsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationProductsRequestSchema: GenMessage<ReadNotificationProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 56);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailRequest\n */\nexport type PreviewNotificationMessageEmailRequest = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailRequest\"> & {\n /**\n * @generated from field: string title = 1;\n */\n title: string;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string email_body_html = 3;\n */\n emailBodyHtml?: string | undefined;\n\n /**\n * Storage key or absolute URL, like `image_url` of a message.\n *\n * @generated from field: optional string image_url = 4;\n */\n imageUrl?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailRequest.\n * Use `create(PreviewNotificationMessageEmailRequestSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailRequestSchema: GenMessage<PreviewNotificationMessageEmailRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 57);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse\n */\nexport type PreviewNotificationMessageEmailResponse = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result success = 1;\n */\n value: PreviewNotificationMessageEmailResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.\n * Use `create(PreviewNotificationMessageEmailResponseSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailResponseSchema: GenMessage<PreviewNotificationMessageEmailResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 58);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result\n */\nexport type PreviewNotificationMessageEmailResponse_Result = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result\"> & {\n /**\n * @generated from field: string subject = 1;\n */\n subject: string;\n\n /**\n * @generated from field: string preheader = 2;\n */\n preheader: string;\n\n /**\n * @generated from field: string html = 3;\n */\n html: string;\n\n /**\n * @generated from field: string text = 4;\n */\n text: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result.\n * Use `create(PreviewNotificationMessageEmailResponse_ResultSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailResponse_ResultSchema: GenMessage<PreviewNotificationMessageEmailResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 58, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountRequest\n */\nexport type GetProjectedRecipientCountRequest = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountRequest\"> & {\n /**\n * @generated from field: repeated string groups = 1;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 2;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 3;\n */\n users: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountRequest.\n * Use `create(GetProjectedRecipientCountRequestSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountRequestSchema: GenMessage<GetProjectedRecipientCountRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 59);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountResponse\n */\nexport type GetProjectedRecipientCountResponse = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountResponse\"> & {\n /**\n * @generated from field: int32 total = 1;\n */\n total: number;\n\n /**\n * @generated from field: int32 email_count = 2;\n */\n emailCount: number;\n\n /**\n * @generated from field: int32 sms_count = 3;\n */\n smsCount: number;\n\n /**\n * @generated from field: int32 mobile_count = 4;\n */\n mobileCount: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountResponse.\n * Use `create(GetProjectedRecipientCountResponseSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountResponseSchema: GenMessage<GetProjectedRecipientCountResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 60);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsRequest\n */\nexport type GetNotificationStatsRequest = Message<\"dashboard.notifications.v1.GetNotificationStatsRequest\"> & {\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsRequest.\n * Use `create(GetNotificationStatsRequestSchema)` to create a new message.\n */\nexport const GetNotificationStatsRequestSchema: GenMessage<GetNotificationStatsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 61);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse\n */\nexport type GetNotificationStatsResponse = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationStatsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.Result success = 1;\n */\n value: GetNotificationStatsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.\n * Use `create(GetNotificationStatsResponseSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponseSchema: GenMessage<GetNotificationStatsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\n */\nexport type GetNotificationStatsResponse_StatusBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\"> & {\n /**\n * @generated from field: int32 drafts = 1;\n */\n drafts: number;\n\n /**\n * @generated from field: int32 planned = 2;\n */\n planned: number;\n\n /**\n * @generated from field: int32 in_progress = 3;\n */\n inProgress: number;\n\n /**\n * @generated from field: int32 sent = 4;\n */\n sent: number;\n\n /**\n * @generated from field: int32 error = 5;\n */\n error: number;\n\n /**\n * @generated from field: int32 cancelled = 6;\n */\n cancelled: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown.\n * Use `create(GetNotificationStatsResponse_StatusBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_StatusBreakdownSchema: GenMessage<GetNotificationStatsResponse_StatusBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\n */\nexport type GetNotificationStatsResponse_ChannelBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\"> & {\n /**\n * @generated from field: int32 mobile = 1;\n */\n mobile: number;\n\n /**\n * @generated from field: int32 email = 2;\n */\n email: number;\n\n /**\n * @generated from field: int32 sms = 3;\n */\n sms: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown.\n * Use `create(GetNotificationStatsResponse_ChannelBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ChannelBreakdownSchema: GenMessage<GetNotificationStatsResponse_ChannelBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\n */\nexport type GetNotificationStatsResponse_TimelinePoint = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\"> & {\n /**\n * @generated from field: string date = 1;\n */\n date: string;\n\n /**\n * @generated from field: int32 count = 2;\n */\n count: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint.\n * Use `create(GetNotificationStatsResponse_TimelinePointSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_TimelinePointSchema: GenMessage<GetNotificationStatsResponse_TimelinePoint> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.Result\n */\nexport type GetNotificationStatsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.Result\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown status_breakdown = 1;\n */\n statusBreakdown?: GetNotificationStatsResponse_StatusBreakdown | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown channel_breakdown = 2;\n */\n channelBreakdown?: GetNotificationStatsResponse_ChannelBreakdown | undefined;\n\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint timeline = 3;\n */\n timeline: GetNotificationStatsResponse_TimelinePoint[];\n\n /**\n * @generated from field: int32 total_subscribers = 4;\n */\n totalSubscribers: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.Result.\n * Use `create(GetNotificationStatsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ResultSchema: GenMessage<GetNotificationStatsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 3);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageStatus\n */\nexport enum NotificationMessageStatus {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: PLANNED = 1;\n */\n PLANNED = 1,\n\n /**\n * @generated from enum value: IN_PROGRESS = 2;\n */\n IN_PROGRESS = 2,\n\n /**\n * @generated from enum value: SENT = 3;\n */\n SENT = 3,\n\n /**\n * @generated from enum value: ERROR = 4;\n */\n ERROR = 4,\n\n /**\n * @generated from enum value: CANCELLED = 5;\n */\n CANCELLED = 5,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageStatus.\n */\nexport const NotificationMessageStatusSchema: GenEnum<NotificationMessageStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageJobStatus\n */\nexport enum NotificationMessageJobStatus {\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_TODO = 0;\n */\n TODO = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_IN_PROGRESS = 1;\n */\n IN_PROGRESS = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_SENT = 2;\n */\n SENT = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_ERROR = 3;\n */\n ERROR = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageJobStatus.\n */\nexport const NotificationMessageJobStatusSchema: GenEnum<NotificationMessageJobStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryChannel\n */\nexport enum NotificationDeliveryChannel {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_EMAIL = 1;\n */\n EMAIL = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_MOBILE = 2;\n */\n MOBILE = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_SMS = 3;\n */\n SMS = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryChannel.\n */\nexport const NotificationDeliveryChannelSchema: GenEnum<NotificationDeliveryChannel> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryStatus\n */\nexport enum NotificationDeliveryStatus {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_PENDING = 1;\n */\n PENDING = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_SENT = 2;\n */\n SENT = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_FAILED = 3;\n */\n FAILED = 3,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_SKIPPED = 4;\n */\n SKIPPED = 4,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryStatus.\n */\nexport const NotificationDeliveryStatusSchema: GenEnum<NotificationDeliveryStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 3);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryOutcome\n */\nexport enum NotificationDeliveryOutcome {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_ANY = 0;\n */\n ANY = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_SENT = 1;\n */\n SENT = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_FAILED = 2;\n */\n FAILED = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_OPENED = 3;\n */\n OPENED = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryOutcome.\n */\nexport const NotificationDeliveryOutcomeSchema: GenEnum<NotificationDeliveryOutcome> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 4);\n\n/**\n * @generated from enum dashboard.notifications.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_NOT_FOUND = 2;\n */\n NOTIFICATION_SETTING_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_SETTING_FAILED = 3;\n */\n CREATE_NOTIFICATION_SETTING_FAILED = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_SETTING_FAILED = 4;\n */\n UPDATE_NOTIFICATION_SETTING_FAILED = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_SETTING_FAILED = 5;\n */\n DELETE_NOTIFICATION_SETTING_FAILED = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_NOT_FOUND = 6;\n */\n NOTIFICATION_GROUP_NOT_FOUND = 6,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUPS_NOT_FOUND = 7;\n */\n NOTIFICATION_GROUPS_NOT_FOUND = 7,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_FAILED = 8;\n */\n CREATE_NOTIFICATION_GROUP_FAILED = 8,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_FAILED = 9;\n */\n UPDATE_NOTIFICATION_GROUP_FAILED = 9,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_FAILED = 10;\n */\n DELETE_NOTIFICATION_GROUP_FAILED = 10,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_NOT_FOUND = 11;\n */\n NOTIFICATION_USER_NOT_FOUND = 11,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USERS_NOT_FOUND = 12;\n */\n NOTIFICATION_USERS_NOT_FOUND = 12,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_USER_FAILED = 13;\n */\n CREATE_NOTIFICATION_USER_FAILED = 13,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_USER_FAILED = 14;\n */\n UPDATE_NOTIFICATION_USER_FAILED = 14,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_USER_FAILED = 15;\n */\n DELETE_NOTIFICATION_USER_FAILED = 15,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_USER_NOT_FOUND = 16;\n */\n NOTIFICATION_GROUP_USER_NOT_FOUND = 16,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_USER_FAILED = 17;\n */\n CREATE_NOTIFICATION_GROUP_USER_FAILED = 17,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18;\n */\n UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_USER_FAILED = 19;\n */\n DELETE_NOTIFICATION_GROUP_USER_FAILED = 19,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_FOUND = 20;\n */\n NOTIFICATION_MESSAGE_NOT_FOUND = 20,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGES_NOT_FOUND = 21;\n */\n NOTIFICATION_MESSAGES_NOT_FOUND = 21,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_FAILED = 22;\n */\n CREATE_NOTIFICATION_MESSAGE_FAILED = 22,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_FAILED = 23;\n */\n UPDATE_NOTIFICATION_MESSAGE_FAILED = 23,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_FAILED = 24;\n */\n DELETE_NOTIFICATION_MESSAGE_FAILED = 24,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25;\n */\n NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26;\n */\n NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27;\n */\n CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28;\n */\n UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29;\n */\n DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_ALREADY_EXIST = 30;\n */\n NOTIFICATION_SETTING_ALREADY_EXIST = 30,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31;\n */\n NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_ALREADY_EXIST = 32;\n */\n NOTIFICATION_USER_ALREADY_EXIST = 32,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_ALREADY_EXIST = 33;\n */\n NOTIFICATION_GROUP_ALREADY_EXIST = 33,\n\n /**\n * Cancel is only possible while the message is planned.\n *\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_CANCELLABLE = 34;\n */\n NOTIFICATION_MESSAGE_NOT_CANCELLABLE = 34,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CANCEL_NOTIFICATION_MESSAGE_FAILED = 35;\n */\n CANCEL_NOTIFICATION_MESSAGE_FAILED = 35,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_RETRY_NOTIFICATION_MESSAGE_FAILED = 36;\n */\n RETRY_NOTIFICATION_MESSAGE_FAILED = 36,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DUPLICATE_NOTIFICATION_MESSAGE_FAILED = 37;\n */\n DUPLICATE_NOTIFICATION_MESSAGE_FAILED = 37,\n\n /**\n * Already sent, in progress or cancelled: content and status are locked.\n *\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_EDITABLE = 38;\n */\n NOTIFICATION_MESSAGE_NOT_EDITABLE = 38,\n\n /**\n * The e-mails would exceed what is left of the plan's Bitsnap e-mail quota\n * (Podstawowy / Klasyczny); Profesjonalny is charged instead and never refused.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_QUOTA_EXCEEDED = 39;\n */\n EMAIL_QUOTA_EXCEEDED = 39,\n\n /**\n * The campaign e-mail could not be rendered for the preview.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_PREVIEW_FAILED = 40;\n */\n EMAIL_PREVIEW_FAILED = 40,\n\n /**\n * The rich e-mail body is over its length limit.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_BODY_TOO_LONG = 41;\n */\n EMAIL_BODY_TOO_LONG = 41,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 5);\n\n/**\n * @generated from service dashboard.notifications.v1.NotificationsService\n */\nexport const NotificationsService: GenService<{\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\n createNotificationSetting: {\n methodKind: \"unary\";\n input: typeof CreateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\n readNotificationSetting: {\n methodKind: \"unary\";\n input: typeof ReadNotificationSettingRequestSchema;\n output: typeof ReadNotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\n updateNotificationSetting: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\n deleteNotificationSetting: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\n createNotificationGroup: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\n readNotificationGroups: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupsRequestSchema;\n output: typeof ReadNotificationGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\n updateNotificationGroup: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\n deleteNotificationGroup: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\n createNotificationUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\n readNotificationUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationUsersRequestSchema;\n output: typeof ReadNotificationUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\n updateNotificationUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\n deleteNotificationUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\n createNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\n readNotificationGroupUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupUsersRequestsSchema;\n output: typeof ReadNotificationGroupUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\n updateNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\n deleteNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\n createNotificationMessage: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\n readNotificationMessages: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessagesRequestSchema;\n output: typeof ReadNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\n getSentNotificationMessages: {\n methodKind: \"unary\";\n input: typeof GetSentNotificationMessagesRequestSchema;\n output: typeof GetSentNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\n updateNotificationMessage: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\n deleteNotificationMessage: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * Planned -> cancelled, atomically (a message the worker already claimed cannot be cancelled).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CancelNotificationMessage\n */\n cancelNotificationMessage: {\n methodKind: \"unary\";\n input: typeof CancelNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * Re-queues only the failed deliveries of a message (a delivery is retried at most 3 times).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.RetryFailedNotificationMessageJobs\n */\n retryFailedNotificationMessageJobs: {\n methodKind: \"unary\";\n input: typeof RetryFailedNotificationMessageJobsRequestSchema;\n output: typeof RetryFailedNotificationMessageJobsResponseSchema;\n },\n /**\n * Copies a message (content, audience, channels) into a new draft without a send time.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DuplicateNotificationMessage\n */\n duplicateNotificationMessage: {\n methodKind: \"unary\";\n input: typeof DuplicateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationMessageReport\n */\n getNotificationMessageReport: {\n methodKind: \"unary\";\n input: typeof GetNotificationMessageReportRequestSchema;\n output: typeof GetNotificationMessageReportResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\n createNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\n readNotificationMessageJobs: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessageJobsRequestSchema;\n output: typeof ReadNotificationMessageJobsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\n updateNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\n deleteNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\n readNotificationProducts: {\n methodKind: \"unary\";\n input: typeof ReadNotificationProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\n getNotificationUserSettings: {\n methodKind: \"unary\";\n input: typeof GetNotificationUserSettingsRequestSchema;\n output: typeof GetNotificationUserSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\n verifyUserEmail: {\n methodKind: \"unary\";\n input: typeof VerifyUserEmailRequestSchema;\n output: typeof VerifyUserEmailResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\n getUserGroups: {\n methodKind: \"unary\";\n input: typeof GetUserGroupsRequestSchema;\n output: typeof GetUserGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\n updateUserGroups: {\n methodKind: \"unary\";\n input: typeof UpdateUserGroupsRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\n getProjectedRecipientCount: {\n methodKind: \"unary\";\n input: typeof GetProjectedRecipientCountRequestSchema;\n output: typeof GetProjectedRecipientCountResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\n getNotificationStats: {\n methodKind: \"unary\";\n input: typeof GetNotificationStatsRequestSchema;\n output: typeof GetNotificationStatsResponseSchema;\n },\n /**\n * Renders the campaign e-mail of an unsaved message with the real template\n * (shop branding, sanitized rich body). Persists and sends nothing.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.PreviewNotificationMessageEmail\n */\n previewNotificationMessageEmail: {\n methodKind: \"unary\";\n input: typeof PreviewNotificationMessageEmailRequestSchema;\n output: typeof PreviewNotificationMessageEmailResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_notifications, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file dashboard/v1/product.proto (package dashboard.product.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Empty, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/product.proto.\n */\nexport const file_dashboard_v1_product: GenFile = /*@__PURE__*/\n fileDesc(\"ChpkYXNoYm9hcmQvdjEvcHJvZHVjdC5wcm90bxIUZGFzaGJvYXJkLnByb2R1Y3QudjEiNAoeR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkibAobU2V0R3Vlc3RDYXRhbG9nRW50cnlSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMcHJvZHVjdF90eXBlGAIgASgJEg8KB2VuYWJsZWQYAyABKAgSEgoKc29ydF9vcmRlchgEIAEoBSL3AQofR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRISCgpjYW5fbWFuYWdlGAEgASgIEh0KFWd1ZXN0X2NhdGFsb2dfZW5hYmxlZBgCIAEoCBI4CgdlbnRyaWVzGAMgAygLMicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR3Vlc3RDYXRhbG9nRW50cnkSHQoVYXZhaWxhYmxlX3Byb2R1Y3RfaWRzGAQgAygJEkgKD3Byb2R1Y3Rfb3B0aW9ucxgFIAMoCzIvLmRhc2hib2FyZC5wcm9kdWN0LnYxLkd1ZXN0Q2F0YWxvZ1Byb2R1Y3RPcHRpb24iRQoZR3Vlc3RDYXRhbG9nUHJvZHVjdE9wdGlvbhISCgpwcm9kdWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSJ+ChFHdWVzdENhdGFsb2dFbnRyeRISCgpwcm9kdWN0X2lkGAEgASgJEhQKDHByb2R1Y3RfdHlwZRgCIAEoCRIPCgdlbmFibGVkGAMgASgIEhIKCnNvcnRfb3JkZXIYBCABKAUSGgoSZWxpZ2liaWxpdHlfcmVhc29uGAUgASgJIisKFUFyY2hpdmVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIi0KF0R1cGxpY2F0ZVByb2R1Y3RSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiOQoYRHVwbGljYXRlUHJvZHVjdFJlc3BvbnNlEh0KFWR1cGxpY2F0ZWRfcHJvZHVjdF9pZBgBIAEoCSI3CiBFeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBITCgtwcm9kdWN0X2lkcxgBIAMoCSK6AQohRXhjaGFuZ2VQcm9kdWN0SURzVG9OYW1lc1Jlc3BvbnNlEmAKDXByb2R1Y3RfbmFtZXMYASADKAsySS5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVzcG9uc2UuUHJvZHVjdE5hbWVzRW50cnkaMwoRUHJvZHVjdE5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJ5ChtHZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARIXCgp2YXJpYW50X2lkGAMgASgJSAGIAQFCCQoHX3NlYXJjaEINCgtfdmFyaWFudF9pZCLRAQocR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZRJJCgdtZW1iZXJzGAEgAygLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZS5WYWx1ZRpmCgVWYWx1ZRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIzCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19jcmVhdGVkX2F0ImQKF0dpdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoKdmFyaWFudF9pZBgCIAEoCUgAiAEBEg0KBWVtYWlsGAMgASgJQg0KC192YXJpYW50X2lkIisKGEdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIicKGVJlbW92ZUFjY2Vzc1RvRmlsZVJlcXVlc3QSCgoCaWQYASABKAkiLQoaUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJkCh9TZW5kVGVzdEVtYWlsV2l0aE1lc3NhZ2VSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhQKDGh0bWxfbWVzc2FnZRgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBQggKBl90aXRsZSIvChlHZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkimQEKGkdldFByb2R1Y3RWYXJpYW50c1Jlc3BvbnNlElAKCHZhcmlhbnRzGAEgAygLMj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2UuU2luZ2xlVmFyaWFudBopCg1TaW5nbGVWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkigwEKKFVwZGF0ZVByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhQKDGh0bWxfbWVzc2FnZRgDIAEoCRISCgV0aXRsZRgEIAEoCUgAiAEBQggKBl90aXRsZSI7CiVHZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiuwIKJkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAadQoHU3VjY2VzcxIUCgdtZXNzYWdlGAEgASgJSACIAQESGQoMaHRtbF9tZXNzYWdlGAIgASgJSAGIAQESEgoFdGl0bGUYAyABKAlIAogBAUIKCghfbWVzc2FnZUIPCg1faHRtbF9tZXNzYWdlQggKBl90aXRsZUIICgZyZXN1bHQiMwodUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSJlCitVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSIgoac2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2UYAiABKAgiVgoqVXBkYXRlUHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMYXVkaW9ib29rX2lkGAIgASgJIj4KKEdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSL5AQopR2V0UHJvZHVjdFNlbmRUaWNrZXRBZnRlclB1cmNoYXNlUmVzcG9uc2USWgoHc3VjY2VzcxgBIAEoCzJHLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlc3BvbnNlLlN1Y2Nlc3NIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABotCgdTdWNjZXNzEiIKGnNlbmRfdGlja2V0X2FmdGVyX3B1cmNoYXNlGAEgASgIQggKBnJlc3VsdCI9CidHZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKfAgooR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaVQoHU3VjY2VzcxIUCgxhdWRpb2Jvb2tfaWQYASABKAkSFwoPYXVkaW9ib29rX3RpdGxlGAIgASgJEhsKE2F1ZGlvYm9va19pbWFnZV91cmwYAyABKAlCCAoGcmVzdWx0IjcKFVNlYXJjaFByb2R1Y3RzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBAUIJCgdfc2VhcmNoIswCChZTZWFyY2hQcm9kdWN0c1Jlc3BvbnNlEkYKB3N1Y2Nlc3MYASABKAsyMy5kYXNoYm9hcmQucHJvZHVjdC52MS5TZWFyY2hQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGk8KDVNpbmdsZVByb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIWCglpbWFnZV91cmwYAyABKAlIAIgBAUIMCgpfaW1hZ2VfdXJsGlYKBlJlc3VsdBJMCghwcm9kdWN0cxgBIAMoCzI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2UuU2luZ2xlUHJvZHVjdEIICgZyZXN1bHQiNQofR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJImAKIEdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEjwKCGFydGljbGVzGAEgAygLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiiAEKFFByb2R1Y3RCb3VnaHRBcnRpY2xlEgoKAmlkGAEgASgJEhIKCnByb2R1Y3RfaWQYAiABKAkSFAoHY29udGVudBgDIAEoCUgAiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9jb250ZW50ImAKIVVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlUmVxdWVzdBI7CgdhcnRpY2xlGAEgASgLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiJwoRR2V0UHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKBAgoSR2V0UHJvZHVjdFJlc3BvbnNlEjIKB3Byb2R1Y3QYASABKAsyHy5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjJIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABJGCgpzZWxsX3N0YXRzGAMgAygLMjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlc3BvbnNlLlNlbGxTdGF0cxosCglTZWxsU3RhdHMSEQoJcHJvZHVjdElEGAEgASgJEgwKBHNvbGQYAiABKAVCCAoGcmVzdWx0InIKHENyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlcXVlc3QSMAoHcHJvZHVjdBgBIAEoCzIfLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMhIgChhpc19kZXNjcmlwdGlvbl9kaWZmZXJlbnQYAiABKAgiTQoeVXBkYXRlUHJvZHVjdFVuaXF1ZVNsdWdSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoPbmV3X3VuaXF1ZV9zbHVnGAIgASgJIqULCglQcm9kdWN0VjISDwoCaWQYASABKAlIAIgBARITCgt1bmlxdWVfc2x1ZxgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjYKBnN0YXR1cxgEIAEoDjImLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMi5TdGF0dXMSGQoMaXNfcmVjdXJyaW5nGAUgASgISAGIAQESNwoJcmVjdXJyaW5nGAYgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSAKIAQESDAoEbmFtZRgHIAEoCRIYCgtkZXNjcmlwdGlvbhgIIAEoCUgDiAEBEh0KEGh0bWxfZGVzY3JpcHRpb24YCSABKAlIBIgBARIeChFzaG9ydF9kZXNjcmlwdGlvbhgKIAEoCUgFiAEBEhkKDHByaWNlX2Ftb3VudBgLIAEoBUgGiAEBEhsKDnByaWNlX2N1cnJlbmN5GAwgASgJSAeIAQESEAoDdGF4GA0gASgCSAiIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GA4gASgFSAmIAQESPwoIZmVhdHVyZXMYDyADKAsyLS5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjIuRmVhdHVyZXNFbnRyeRIOCgZpbWFnZXMYECADKAkSHAoPdGh1bWJuYWlsX2ltYWdlGBEgASgJSAqIAQESFwoKbWFpbl9pbWFnZRgSIAEoCUgLiAEBEi8KCHZhcmlhbnRzGBMgAygLMh0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudBInChpzZW5kX3RpY2tldF9hZnRlcl9wdXJjaGFzZRgUIAEoCEgMiAEBEicKGmlzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0GBUgASgISA2IAQESGwoOaXNfZGVsaXZlcmFibGUYGCABKAhIDogBARIhChRmb3JjZV9tYW51YWxfcGF5bWVudBgdIAEoCEgPiAEBEhkKDHdlaWdodF9ncmFtcxgeIAEoBUgQiAEBEh4KEXdpZHRoX21pbGxpbWV0ZXJzGB8gASgFSBGIAQESHwoSaGVpZ2h0X21pbGxpbWV0ZXJzGCAgASgFSBKIAQESEgoKY3JlYXRlZF9hdBgZIAEoAxISCgp1cGRhdGVkX2F0GBogASgDEhcKCmRlbGV0ZWRfYXQYGyABKANIE4gBARIVCghhcmNoaXZlZBgcIAEoCEgUiAEBEhAKCHJldmlzaW9uGCEgASgFGi8KDUZlYXR1cmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIzCgZTdGF0dXMSCQoFRFJBRlQQABIPCgtVTlBVQkxJU0hFRBABEg0KCVBVQkxJU0hFRBACQgUKA19pZEIPCg1faXNfcmVjdXJyaW5nQgwKCl9yZWN1cnJpbmdCDgoMX2Rlc2NyaXB0aW9uQhMKEV9odG1sX2Rlc2NyaXB0aW9uQhQKEl9zaG9ydF9kZXNjcmlwdGlvbkIPCg1fcHJpY2VfYW1vdW50QhEKD19wcmljZV9jdXJyZW5jeUIGCgRfdGF4QhUKE19hdmFpbGFibGVfcXVhbnRpdHlCEgoQX3RodW1ibmFpbF9pbWFnZUINCgtfbWFpbl9pbWFnZUIdChtfc2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2VCHQobX2lzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0QhEKD19pc19kZWxpdmVyYWJsZUIXChVfZm9yY2VfbWFudWFsX3BheW1lbnRCDwoNX3dlaWdodF9ncmFtc0IUChJfd2lkdGhfbWlsbGltZXRlcnNCFQoTX2hlaWdodF9taWxsaW1ldGVyc0INCgtfZGVsZXRlZF9hdEILCglfYXJjaGl2ZWQiuwMKCVJlY3VycmluZxI6Cg1iaWxsaW5nUGVyaW9kGAEgASgOMiMuZGFzaGJvYXJkLnByb2R1Y3QudjEuQmlsbGluZ1BlcmlvZBIXCgp0cmlhbF9kYXlzGAIgASgFSACIAQESHwoSbnVtYmVyX29mX3BheW1lbnRzGAMgASgFSAGIAQESMQokY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzGAQgASgISAKIAQESNAoncmVtb3ZlX2FjY2Vzc19mb3JfY2FuY2VsbGVkX3N1YnNjcmliZXJzGAUgASgISAOIAQESLgohc2hvdWxkX3NlbmRfdHJpYWxfcGVyaW9kX3JlbWluZGVyGAYgASgISASIAQFCDQoLX3RyaWFsX2RheXNCFQoTX251bWJlcl9vZl9wYXltZW50c0InCiVfY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzQioKKF9yZW1vdmVfYWNjZXNzX2Zvcl9jYW5jZWxsZWRfc3Vic2NyaWJlcnNCJAoiX3Nob3VsZF9zZW5kX3RyaWFsX3BlcmlvZF9yZW1pbmRlciKrAgoPVmFyaWFudERpc2NvdW50EjgKBHR5cGUYASABKA4yKi5kYXNoYm9hcmQucHJvZHVjdC52MS5WYXJpYW50RGlzY291bnQuVHlwZRIOCgZhbW91bnQYAiABKAUSMQoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESDwoCaWQYBCABKAlIAYgBARIPCgdlbmFibGVkGAUgASgIEjMKCnN0YXJ0X2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQEiIQoEVHlwZRIJCgVGSVhFRBAAEg4KClBFUkNFTlRBR0UQAUILCglfZW5kX2RhdGVCBQoDX2lkQg0KC19zdGFydF9kYXRlIt0GCgdWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIWCglpbWFnZV91cmwYBCABKAlIAYgBARIUCgxwcmljZV9hbW91bnQYBSABKAUSFgoOcHJpY2VfY3VycmVuY3kYBiABKAkSEAoDdGF4GAcgASgFSAKIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GAggASgFSAOIAQESNwoJcmVjdXJyaW5nGAkgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSASIAQESGwoOaXNfZGVsaXZlcmFibGUYCiABKAhIBYgBARIhChRsb3dlc3RfcHJpY2VfMzBfZGF5cxgLIAEoBUgGiAEBEjwKCGRpc2NvdW50GAwgASgLMiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudERpc2NvdW50SAeIAQESPgoVZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhwKFHJlZ3VsYXJfcHJpY2VfYW1vdW50GA4gASgFEh4KFmVmZmVjdGl2ZV9wcmljZV9hbW91bnQYDyABKAUSIwoWcmVmZXJlbmNlX3ByaWNlX2Ftb3VudBgQIAEoBUgJiAEBEiMKG3JlZmVyZW5jZV9oaXN0b3J5X2F2YWlsYWJsZRgRIAEoCBIVCg1wcmljZV92ZXJzaW9uGBIgASgDEj0KFG5leHRfcHJpY2VfY2hhbmdlX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaW1hZ2VfdXJsQgYKBF90YXhCFQoTX2F2YWlsYWJsZV9xdWFudGl0eUIMCgpfcmVjdXJyaW5nQhEKD19pc19kZWxpdmVyYWJsZUIXChVfbG93ZXN0X3ByaWNlXzMwX2RheXNCCwoJX2Rpc2NvdW50QhgKFl9lc3RpbWF0ZWRfZGVsaXZlcnlfYXRCGQoXX3JlZmVyZW5jZV9wcmljZV9hbW91bnRCFwoVX25leHRfcHJpY2VfY2hhbmdlX2F0IngKHUNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEhQKCnByb2R1Y3RfaWQYASABKAlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQifAoMQm9vbFJlc3BvbnNlEikKB3N1Y2Nlc3MYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQiIgoPT3BlcmF0aW9uUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgiUAoSR2V0UHJvZHVjdHNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhEKBHR5cGUYAiABKAlIAYgBAUIJCgdfc2VhcmNoQgcKBV90eXBlIrwBChNHZXRQcm9kdWN0c1Jlc3BvbnNlEkMKB3N1Y2Nlc3MYASABKAsyMC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGh0KBlJlc3VsdBITCgtwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQilgEKF0dldFByb2R1Y3RzQnlJZHNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIVCghjdXJyZW5jeRgCIAEoCUgAiAEBEhEKBGxhbmcYAyABKAlIAYgBARIbCg5ncm91cF92YXJpYW50cxgEIAEoCEgCiAEBQgsKCV9jdXJyZW5jeUIHCgVfbGFuZ0IRCg9fZ3JvdXBfdmFyaWFudHMiwQIKGEdldFByb2R1Y3RzQnlJZHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGkQKB1Byb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwcmljZRgDIAEoBRIQCghjdXJyZW5jeRgEIAEoCRpSCgZSZXN1bHQSSAoIcHJvZHVjdHMYASADKAsyNi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c0J5SWRzUmVzcG9uc2UuUHJvZHVjdEIICgZyZXN1bHQi3QEKFUdldFByb2R1Y3RHcmlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhUKCGN1cnJlbmN5GAMgASgJSAGIAQESGwoOZ3JvdXBfdmFyaWFudHMYBCABKAhIAogBARITCgZvZmZzZXQYBSABKAVIA4gBARISCgVsaW1pdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCwoJX2N1cnJlbmN5QhEKD19ncm91cF92YXJpYW50c0IJCgdfb2Zmc2V0QggKBl9saW1pdCLCAQoWR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJGCgdzdWNjZXNzGAEgASgLMjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZS5SZXN1bHRIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABodCgZSZXN1bHQSEwoLcHJvZHVjdF9pZHMYASADKAlCCAoGcmVzdWx0ItYBChpHZXRNYWluUGFnZVByb2R1Y3RzUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESEgoFbGltaXQYAyABKAVIAogBARITCgZvZmZzZXQYBCABKAVIA4gBARIdChBpbmNsdWRlX2FyY2hpdmVkGAUgASgISASIAQFCDQoLX3Byb2plY3RfaWRCCQoHX3NlYXJjaEIICgZfbGltaXRCCQoHX29mZnNldEITChFfaW5jbHVkZV9hcmNoaXZlZCL2AQobR2V0TWFpblBhZ2VQcm9kdWN0c1Jlc3BvbnNlEksKB3N1Y2Nlc3MYASABKAsyOC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaRwoGUmVzdWx0EhMKC3Byb2R1Y3RfaWRzGAEgAygJEhgKC3RvdGFsX2NvdW50GAIgASgFSACIAQFCDgoMX3RvdGFsX2NvdW50QggKBnJlc3VsdCI6CiNHZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBITCgt1bmlxdWVfc2x1ZxgBIAEoCSKXBAokR2V0UHVibGljUHJvZHVjdEJ5VW5pcXVlU2x1Z1Jlc3BvbnNlElQKB3N1Y2Nlc3MYASABKAsyQS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAa1QIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARISCgpwcm9qZWN0X2lkGAMgASgJEgoKAmlkGAQgASgJEgwKBG5hbWUYBSABKAkSHgoRc2hvcnRfZGVzY3JpcHRpb24YBiABKAlIAYgBARIZCgxwcmljZV9hbW91bnQYByABKAVIAogBARIbCg5wcmljZV9jdXJyZW5jeRgIIAEoCUgDiAEBEhcKCm1haW5faW1hZ2UYCSABKAlIBIgBARIcCg90aHVtYm5haWxfaW1hZ2UYCiABKAlIBYgBAUIKCghfbWVzc2FnZUIUChJfc2hvcnRfZGVzY3JpcHRpb25CDwoNX3ByaWNlX2Ftb3VudEIRCg9fcHJpY2VfY3VycmVuY3lCDQoLX21haW5faW1hZ2VCEgoQX3RodW1ibmFpbF9pbWFnZUIICgZyZXN1bHQiYQoaR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtwcm9kdWN0X2lkcxgCIAMoCRIaChJjb250YWluc19yZWN1cnJpbmcYAyABKAgi5QIKG0dldFB1YmxpY0FncmVlbWVudHNSZXNwb25zZRJLCgdzdWNjZXNzGAEgASgLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGisKCUFncmVlbWVudBIMCgRuYW1lGAEgASgJEhAKCHJlcXVpcmVkGAIgASgIGogBCgZSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIUCgdtZXNzYWdlGAIgASgJSACIAQESSwoGcmVzdWx0GAMgAygLMjsuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLkFncmVlbWVudEIKCghfbWVzc2FnZUIICgZyZXN1bHQiPAomR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSLlAQonR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaHgoGUmVzdWx0EhQKDGVwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQiVQopVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIUCgxlcHJvZHVjdF9pZHMYAiADKAkiOgokR2V0TGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiUAoPQWdyZWVtZW50T3B0aW9uEgwKBG5hbWUYASABKAkSEwoLaXNfcmVxdWlyZWQYAiABKAgSEQoEbGluaxgDIAEoCUgAiAEBQgcKBV9saW5rIrUCCiVHZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGnIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARI1CgZyZXN1bHQYAyADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb25CCgoIX21lc3NhZ2VCCAoGcmVzdWx0IngKJ1VwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJEjkKCmFncmVlbWVudHMYAiADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb24iJAoUQ3JlYXRlUHJvZHVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIqChREZWxldGVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIjcKFUdldFByb2R1Y3RCeUlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgoKAmlkGAIgASgJKr0BCg1CaWxsaW5nUGVyaW9kEhgKFEJJTExJTkdfUEVSSU9EX0RBSUxZEAASGQoVQklMTElOR19QRVJJT0RfV0VFS0xZEAESGgoWQklMTElOR19QRVJJT0RfTU9OVEhMWRACEhwKGEJJTExJTkdfUEVSSU9EX1FVQVJURVJMWRADEiAKHEJJTExJTkdfUEVSSU9EX1NFTUlfQU5OVUFMTFkQBBIbChdCSUxMSU5HX1BFUklPRF9BTk5VQUxMWRAFKpUCCg5GYWlsdXJlTWVzc2FnZRIbChdGQUlMVVJFX01FU1NBR0VfVU5LTk9XThAAEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9KRUNUX05PVF9GT1VORBABEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9EVUNUX05PVF9GT1VORBACEiYKIkZBSUxVUkVfTUVTU0FHRV9JTlZBTElEX1BST0RVQ1RfSUQQAxImCiJGQUlMVVJFX01FU1NBR0VfU0xVR19BTFJFQURZX1RBS0VOEAQSKQolRkFJTFVSRV9NRVNTQUdFX0NBTk5PVF9DUkVBVEVfUFJPRFVDVBAFEh0KGUZBSUxVUkVfTUVTU0FHRV9OT19BQ0NFU1MQBjLXJQoNUHJvZHVjdFJvdXRlchKAAQoVQ3JlYXRlT3JVcGRhdGVQcm9kdWN0EjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQ3JlYXRlT3JVcGRhdGVQcm9kdWN0UmVxdWVzdBozLmRhc2hib2FyZC5wcm9kdWN0LnYxLkNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEnEKEER1cGxpY2F0ZVByb2R1Y3QSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5EdXBsaWNhdGVQcm9kdWN0UmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkR1cGxpY2F0ZVByb2R1Y3RSZXNwb25zZRJzChdVcGRhdGVQcm9kdWN0VW5pcXVlU2x1ZxI0LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RVbmlxdWVTbHVnUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJfCgpHZXRQcm9kdWN0EicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2USpAEKIUdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZRI+LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXNwb25zZRKhAQogR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2USPS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlc3BvbnNlEo0BCiRVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2USQS5kYXNoYm9hcmQucHJvZHVjdC52MS5VcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEosBCiNVcGRhdGVQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZRJALmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RBdWRpb2Jvb2tBZnRlclB1cmNoYXNlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJxChZQdWJsaXNoUHJvZHVjdElmTmVlZGVkEjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USmwEKHkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZRI7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QaPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZRKHAQohVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlEj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJ3ChJHZXRQcm9kdWN0VmFyaWFudHMSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2USdQoYU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJrCg5TZWFyY2hQcm9kdWN0cxIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVxdWVzdBosLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2USjAEKGUV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXMSNi5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBo3LmRhc2hib2FyZC5wcm9kdWN0LnYxLkV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXNSZXNwb25zZRKJAQoYR2V0UHJvZHVjdEJvdWdodEFydGljbGVzEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBo2LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEnkKGlVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlEjcuZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEJvdWdodEFydGljbGVSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEmkKF0FkZFByb2R1Y3RCb3VnaHRBcnRpY2xlEiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USfQoUR2V0RmlsZUFjY2Vzc01lbWJlcnMSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QaMi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1Jlc3BvbnNlEnEKEEdpdmVBY2Nlc3NUb0ZpbGUSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5HaXZlQWNjZXNzVG9GaWxlUmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRJ3ChJSZW1vdmVBY2Nlc3NUb0ZpbGUSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5SZW1vdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USYQoOQXJjaGl2ZVByb2R1Y3QSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5BcmNoaXZlUHJvZHVjdFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USYwoQVW5hcmNoaXZlUHJvZHVjdBIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLkFyY2hpdmVQcm9kdWN0UmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJiCgtHZXRQcm9kdWN0cxIoLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVxdWVzdBopLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVzcG9uc2UScQoQR2V0UHJvZHVjdHNCeUlkcxItLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzQnlJZHNSZXF1ZXN0Gi4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlEmsKDkdldFByb2R1Y3RHcmlkEisuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJ6ChNHZXRNYWluUGFnZVByb2R1Y3RzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0TWFpblBhZ2VQcm9kdWN0c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2USlQEKHEdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWcSOS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBo6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWdSZXNwb25zZRJ6ChNHZXRQdWJsaWNBZ3JlZW1lbnRzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNBZ3JlZW1lbnRzUmVzcG9uc2USngEKH0dldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3QSPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVxdWVzdBo9LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXNwb25zZRKMAQoiVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdBI/LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZUVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EpgBCh1HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50cxI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBo7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVzcG9uc2USiAEKIFVwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzEj0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlTGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EmIKDUNyZWF0ZVByb2R1Y3QSKi5kYXNoYm9hcmQucHJvZHVjdC52MS5DcmVhdGVQcm9kdWN0UmVxdWVzdBolLmRhc2hib2FyZC5wcm9kdWN0LnYxLk9wZXJhdGlvblJlc3VsdBJiCg1EZWxldGVQcm9kdWN0EiouZGFzaGJvYXJkLnByb2R1Y3QudjEuRGVsZXRlUHJvZHVjdFJlcXVlc3QaJS5kYXNoYm9hcmQucHJvZHVjdC52MS5PcGVyYXRpb25SZXN1bHQSZwoOR2V0UHJvZHVjdEJ5SWQSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QnlJZFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2UShgEKF0dldEd1ZXN0Q2F0YWxvZ1NldHRpbmdzEjQuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0GjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRKAAQoUU2V0R3Vlc3RDYXRhbG9nRW50cnkSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5TZXRHdWVzdENhdGFsb2dFbnRyeVJlcXVlc3QaNS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRHdWVzdENhdGFsb2dTZXR0aW5nc1Jlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_empty, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsRequest\n */\nexport type GetGuestCatalogSettingsRequest = Message<\"dashboard.product.v1.GetGuestCatalogSettingsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsRequest.\n * Use `create(GetGuestCatalogSettingsRequestSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsRequestSchema: GenMessage<GetGuestCatalogSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from message dashboard.product.v1.SetGuestCatalogEntryRequest\n */\nexport type SetGuestCatalogEntryRequest = Message<\"dashboard.product.v1.SetGuestCatalogEntryRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.SetGuestCatalogEntryRequest.\n * Use `create(SetGuestCatalogEntryRequestSchema)` to create a new message.\n */\nexport const SetGuestCatalogEntryRequestSchema: GenMessage<SetGuestCatalogEntryRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsResponse\n */\nexport type GetGuestCatalogSettingsResponse = Message<\"dashboard.product.v1.GetGuestCatalogSettingsResponse\"> & {\n /**\n * @generated from field: bool can_manage = 1;\n */\n canManage: boolean;\n\n /**\n * @generated from field: bool guest_catalog_enabled = 2;\n */\n guestCatalogEnabled: boolean;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogEntry entries = 3;\n */\n entries: GuestCatalogEntry[];\n\n /**\n * @generated from field: repeated string available_product_ids = 4;\n */\n availableProductIds: string[];\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogProductOption product_options = 5;\n */\n productOptions: GuestCatalogProductOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsResponse.\n * Use `create(GetGuestCatalogSettingsResponseSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsResponseSchema: GenMessage<GetGuestCatalogSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 2);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogProductOption\n */\nexport type GuestCatalogProductOption = Message<\"dashboard.product.v1.GuestCatalogProductOption\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogProductOption.\n * Use `create(GuestCatalogProductOptionSchema)` to create a new message.\n */\nexport const GuestCatalogProductOptionSchema: GenMessage<GuestCatalogProductOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 3);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogEntry\n */\nexport type GuestCatalogEntry = Message<\"dashboard.product.v1.GuestCatalogEntry\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n\n /**\n * @generated from field: string eligibility_reason = 5;\n */\n eligibilityReason: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogEntry.\n * Use `create(GuestCatalogEntrySchema)` to create a new message.\n */\nexport const GuestCatalogEntrySchema: GenMessage<GuestCatalogEntry> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 4);\n\n/**\n * @generated from message dashboard.product.v1.ArchiveProductRequest\n */\nexport type ArchiveProductRequest = Message<\"dashboard.product.v1.ArchiveProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.ArchiveProductRequest.\n * Use `create(ArchiveProductRequestSchema)` to create a new message.\n */\nexport const ArchiveProductRequestSchema: GenMessage<ArchiveProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 5);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductRequest\n */\nexport type DuplicateProductRequest = Message<\"dashboard.product.v1.DuplicateProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductRequest.\n * Use `create(DuplicateProductRequestSchema)` to create a new message.\n */\nexport const DuplicateProductRequestSchema: GenMessage<DuplicateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 6);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductResponse\n */\nexport type DuplicateProductResponse = Message<\"dashboard.product.v1.DuplicateProductResponse\"> & {\n /**\n * @generated from field: string duplicated_product_id = 1;\n */\n duplicatedProductId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductResponse.\n * Use `create(DuplicateProductResponseSchema)` to create a new message.\n */\nexport const DuplicateProductResponseSchema: GenMessage<DuplicateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 7);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesRequest\n */\nexport type ExchangeProductIDsToNamesRequest = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesRequest.\n * Use `create(ExchangeProductIDsToNamesRequestSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesRequestSchema: GenMessage<ExchangeProductIDsToNamesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 8);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesResponse\n */\nexport type ExchangeProductIDsToNamesResponse = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesResponse\"> & {\n /**\n * @generated from field: map<string, string> product_names = 1;\n */\n productNames: { [key: string]: string };\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesResponse.\n * Use `create(ExchangeProductIDsToNamesResponseSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesResponseSchema: GenMessage<ExchangeProductIDsToNamesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 9);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersRequest\n */\nexport type GetFileAccessMembersRequest = Message<\"dashboard.product.v1.GetFileAccessMembersRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string variant_id = 3;\n */\n variantId?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersRequest.\n * Use `create(GetFileAccessMembersRequestSchema)` to create a new message.\n */\nexport const GetFileAccessMembersRequestSchema: GenMessage<GetFileAccessMembersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 10);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse\n */\nexport type GetFileAccessMembersResponse = Message<\"dashboard.product.v1.GetFileAccessMembersResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetFileAccessMembersResponse.Value members = 1;\n */\n members: GetFileAccessMembersResponse_Value[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.\n * Use `create(GetFileAccessMembersResponseSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponseSchema: GenMessage<GetFileAccessMembersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse.Value\n */\nexport type GetFileAccessMembersResponse_Value = Message<\"dashboard.product.v1.GetFileAccessMembersResponse.Value\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.Value.\n * Use `create(GetFileAccessMembersResponse_ValueSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponse_ValueSchema: GenMessage<GetFileAccessMembersResponse_Value> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11, 0);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileRequest\n */\nexport type GiveAccessToFileRequest = Message<\"dashboard.product.v1.GiveAccessToFileRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string variant_id = 2;\n */\n variantId?: string;\n\n /**\n * @generated from field: string email = 3;\n */\n email: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileRequest.\n * Use `create(GiveAccessToFileRequestSchema)` to create a new message.\n */\nexport const GiveAccessToFileRequestSchema: GenMessage<GiveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 12);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileResponse\n */\nexport type GiveAccessToFileResponse = Message<\"dashboard.product.v1.GiveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileResponse.\n * Use `create(GiveAccessToFileResponseSchema)` to create a new message.\n */\nexport const GiveAccessToFileResponseSchema: GenMessage<GiveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 13);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileRequest\n */\nexport type RemoveAccessToFileRequest = Message<\"dashboard.product.v1.RemoveAccessToFileRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileRequest.\n * Use `create(RemoveAccessToFileRequestSchema)` to create a new message.\n */\nexport const RemoveAccessToFileRequestSchema: GenMessage<RemoveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 14);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileResponse\n */\nexport type RemoveAccessToFileResponse = Message<\"dashboard.product.v1.RemoveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileResponse.\n * Use `create(RemoveAccessToFileResponseSchema)` to create a new message.\n */\nexport const RemoveAccessToFileResponseSchema: GenMessage<RemoveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 15);\n\n/**\n * @generated from message dashboard.product.v1.SendTestEmailWithMessageRequest\n */\nexport type SendTestEmailWithMessageRequest = Message<\"dashboard.product.v1.SendTestEmailWithMessageRequest\"> & {\n /**\n * @generated from field: string email = 1;\n */\n email: string;\n\n /**\n * @generated from field: string html_message = 2;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SendTestEmailWithMessageRequest.\n * Use `create(SendTestEmailWithMessageRequestSchema)` to create a new message.\n */\nexport const SendTestEmailWithMessageRequestSchema: GenMessage<SendTestEmailWithMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 16);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsRequest\n */\nexport type GetProductVariantsRequest = Message<\"dashboard.product.v1.GetProductVariantsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsRequest.\n * Use `create(GetProductVariantsRequestSchema)` to create a new message.\n */\nexport const GetProductVariantsRequestSchema: GenMessage<GetProductVariantsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 17);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse\n */\nexport type GetProductVariantsResponse = Message<\"dashboard.product.v1.GetProductVariantsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductVariantsResponse.SingleVariant variants = 1;\n */\n variants: GetProductVariantsResponse_SingleVariant[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.\n * Use `create(GetProductVariantsResponseSchema)` to create a new message.\n */\nexport const GetProductVariantsResponseSchema: GenMessage<GetProductVariantsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse.SingleVariant\n */\nexport type GetProductVariantsResponse_SingleVariant = Message<\"dashboard.product.v1.GetProductVariantsResponse.SingleVariant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.SingleVariant.\n * Use `create(GetProductVariantsResponse_SingleVariantSchema)` to create a new message.\n */\nexport const GetProductVariantsResponse_SingleVariantSchema: GenMessage<GetProductVariantsResponse_SingleVariant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\n */\nexport type UpdateProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * @generated from field: string html_message = 3;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 4;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest.\n * Use `create(UpdateProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const UpdateProductAfterPurchaseMessageRequestSchema: GenMessage<UpdateProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 19);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageRequest\n */\nexport type GetProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageRequest.\n * Use `create(GetProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageRequestSchema: GenMessage<GetProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 20);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse\n */\nexport type GetProductAfterPurchaseMessageResponse = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAfterPurchaseMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success success = 1;\n */\n value: GetProductAfterPurchaseMessageResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.\n * Use `create(GetProductAfterPurchaseMessageResponseSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponseSchema: GenMessage<GetProductAfterPurchaseMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\n */\nexport type GetProductAfterPurchaseMessageResponse_Success = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\"> & {\n /**\n * @generated from field: optional string message = 1;\n */\n message?: string;\n\n /**\n * @generated from field: optional string html_message = 2;\n */\n htmlMessage?: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success.\n * Use `create(GetProductAfterPurchaseMessageResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponse_SuccessSchema: GenMessage<GetProductAfterPurchaseMessageResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21, 0);\n\n/**\n * @generated from message dashboard.product.v1.PublishProductIfNeededRequest\n */\nexport type PublishProductIfNeededRequest = Message<\"dashboard.product.v1.PublishProductIfNeededRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.PublishProductIfNeededRequest.\n * Use `create(PublishProductIfNeededRequestSchema)` to create a new message.\n */\nexport const PublishProductIfNeededRequestSchema: GenMessage<PublishProductIfNeededRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 22);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\n */\nexport type UpdateProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: bool send_ticket_after_purchase = 2;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest.\n * Use `create(UpdateProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductSendTicketAfterPurchaseRequestSchema: GenMessage<UpdateProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 23);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\n */\nexport type UpdateProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string audiobook_id = 2;\n */\n audiobookId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest.\n * Use `create(UpdateProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductAudiobookAfterPurchaseRequestSchema: GenMessage<UpdateProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 24);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\n */\nexport type GetProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest.\n * Use `create(GetProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseRequestSchema: GenMessage<GetProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 25);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\n */\nexport type GetProductSendTicketAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductSendTicketAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.\n * Use `create(GetProductSendTicketAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponseSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\n */\nexport type GetProductSendTicketAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: bool send_ticket_after_purchase = 1;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success.\n * Use `create(GetProductSendTicketAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\n */\nexport type GetProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest.\n * Use `create(GetProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseRequestSchema: GenMessage<GetProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 27);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\n */\nexport type GetProductAudiobookAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductAudiobookAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.\n * Use `create(GetProductAudiobookAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponseSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\n */\nexport type GetProductAudiobookAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: string audiobook_id = 1;\n */\n audiobookId: string;\n\n /**\n * @generated from field: string audiobook_title = 2;\n */\n audiobookTitle: string;\n\n /**\n * @generated from field: string audiobook_image_url = 3;\n */\n audiobookImageUrl: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success.\n * Use `create(GetProductAudiobookAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsRequest\n */\nexport type SearchProductsRequest = Message<\"dashboard.product.v1.SearchProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsRequest.\n * Use `create(SearchProductsRequestSchema)` to create a new message.\n */\nexport const SearchProductsRequestSchema: GenMessage<SearchProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 29);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse\n */\nexport type SearchProductsResponse = Message<\"dashboard.product.v1.SearchProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.SearchProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.SearchProductsResponse.Result success = 1;\n */\n value: SearchProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.\n * Use `create(SearchProductsResponseSchema)` to create a new message.\n */\nexport const SearchProductsResponseSchema: GenMessage<SearchProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.SingleProduct\n */\nexport type SearchProductsResponse_SingleProduct = Message<\"dashboard.product.v1.SearchProductsResponse.SingleProduct\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string image_url = 3;\n */\n imageUrl?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.SingleProduct.\n * Use `create(SearchProductsResponse_SingleProductSchema)` to create a new message.\n */\nexport const SearchProductsResponse_SingleProductSchema: GenMessage<SearchProductsResponse_SingleProduct> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.Result\n */\nexport type SearchProductsResponse_Result = Message<\"dashboard.product.v1.SearchProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.SearchProductsResponse.SingleProduct products = 1;\n */\n products: SearchProductsResponse_SingleProduct[];\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.Result.\n * Use `create(SearchProductsResponse_ResultSchema)` to create a new message.\n */\nexport const SearchProductsResponse_ResultSchema: GenMessage<SearchProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesRequest\n */\nexport type GetProductBoughtArticlesRequest = Message<\"dashboard.product.v1.GetProductBoughtArticlesRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesRequest.\n * Use `create(GetProductBoughtArticlesRequestSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesRequestSchema: GenMessage<GetProductBoughtArticlesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 31);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesResponse\n */\nexport type GetProductBoughtArticlesResponse = Message<\"dashboard.product.v1.GetProductBoughtArticlesResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.ProductBoughtArticle articles = 1;\n */\n articles: ProductBoughtArticle[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesResponse.\n * Use `create(GetProductBoughtArticlesResponseSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesResponseSchema: GenMessage<GetProductBoughtArticlesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 32);\n\n/**\n * @generated from message dashboard.product.v1.ProductBoughtArticle\n */\nexport type ProductBoughtArticle = Message<\"dashboard.product.v1.ProductBoughtArticle\"> & {\n /**\n * empty string if new.\n *\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: optional string content = 3;\n */\n content?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductBoughtArticle.\n * Use `create(ProductBoughtArticleSchema)` to create a new message.\n */\nexport const ProductBoughtArticleSchema: GenMessage<ProductBoughtArticle> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 33);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductBoughtArticleRequest\n */\nexport type UpdateProductBoughtArticleRequest = Message<\"dashboard.product.v1.UpdateProductBoughtArticleRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductBoughtArticle article = 1;\n */\n article?: ProductBoughtArticle;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductBoughtArticleRequest.\n * Use `create(UpdateProductBoughtArticleRequestSchema)` to create a new message.\n */\nexport const UpdateProductBoughtArticleRequestSchema: GenMessage<UpdateProductBoughtArticleRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 34);\n\n/**\n * @generated from message dashboard.product.v1.GetProductRequest\n */\nexport type GetProductRequest = Message<\"dashboard.product.v1.GetProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductRequest.\n * Use `create(GetProductRequestSchema)` to create a new message.\n */\nexport const GetProductRequestSchema: GenMessage<GetProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 35);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse\n */\nexport type GetProductResponse = Message<\"dashboard.product.v1.GetProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n value: ProductV2;\n case: \"product\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductResponse.SellStats sell_stats = 3;\n */\n sellStats: GetProductResponse_SellStats[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.\n * Use `create(GetProductResponseSchema)` to create a new message.\n */\nexport const GetProductResponseSchema: GenMessage<GetProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse.SellStats\n */\nexport type GetProductResponse_SellStats = Message<\"dashboard.product.v1.GetProductResponse.SellStats\"> & {\n /**\n * @generated from field: string productID = 1;\n */\n productID: string;\n\n /**\n * @generated from field: int32 sold = 2;\n */\n sold: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.SellStats.\n * Use `create(GetProductResponse_SellStatsSchema)` to create a new message.\n */\nexport const GetProductResponse_SellStatsSchema: GenMessage<GetProductResponse_SellStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36, 0);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductRequest\n */\nexport type CreateOrUpdateProductRequest = Message<\"dashboard.product.v1.CreateOrUpdateProductRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n product?: ProductV2;\n\n /**\n * @generated from field: bool is_description_different = 2;\n */\n isDescriptionDifferent: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductRequest.\n * Use `create(CreateOrUpdateProductRequestSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductRequestSchema: GenMessage<CreateOrUpdateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 37);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductUniqueSlugRequest\n */\nexport type UpdateProductUniqueSlugRequest = Message<\"dashboard.product.v1.UpdateProductUniqueSlugRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string new_unique_slug = 2;\n */\n newUniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductUniqueSlugRequest.\n * Use `create(UpdateProductUniqueSlugRequestSchema)` to create a new message.\n */\nexport const UpdateProductUniqueSlugRequestSchema: GenMessage<UpdateProductUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 38);\n\n/**\n * @generated from message dashboard.product.v1.ProductV2\n */\nexport type ProductV2 = Message<\"dashboard.product.v1.ProductV2\"> & {\n /**\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * @generated from field: string unique_slug = 2;\n */\n uniqueSlug: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: dashboard.product.v1.ProductV2.Status status = 4;\n */\n status: ProductV2_Status;\n\n /**\n * @generated from field: optional bool is_recurring = 5;\n */\n isRecurring?: boolean;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 6;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: string name = 7;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 8;\n */\n description?: string;\n\n /**\n * @generated from field: optional string html_description = 9;\n */\n htmlDescription?: string;\n\n /**\n * @generated from field: optional string short_description = 10;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 11;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 12;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional float tax = 13;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 14;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: map<string, string> features = 15;\n */\n features: { [key: string]: string };\n\n /**\n * @generated from field: repeated string images = 16;\n */\n images: string[];\n\n /**\n * @generated from field: optional string thumbnail_image = 17;\n */\n thumbnailImage?: string;\n\n /**\n * @generated from field: optional string main_image = 18;\n */\n mainImage?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.Variant variants = 19;\n */\n variants: Variant[];\n\n /**\n * @generated from field: optional bool send_ticket_after_purchase = 20;\n */\n sendTicketAfterPurchase?: boolean;\n\n /**\n * @generated from field: optional bool is_product_visible_on_list = 21;\n */\n isProductVisibleOnList?: boolean;\n\n /**\n * @generated from field: optional bool is_deliverable = 24;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional bool force_manual_payment = 29;\n */\n forceManualPayment?: boolean;\n\n /**\n * @generated from field: optional int32 weight_grams = 30;\n */\n weightGrams?: number;\n\n /**\n * @generated from field: optional int32 width_millimeters = 31;\n */\n widthMillimeters?: number;\n\n /**\n * @generated from field: optional int32 height_millimeters = 32;\n */\n heightMillimeters?: number;\n\n /**\n * @generated from field: int64 created_at = 25;\n */\n createdAt: bigint;\n\n /**\n * @generated from field: int64 updated_at = 26;\n */\n updatedAt: bigint;\n\n /**\n * @generated from field: optional int64 deleted_at = 27;\n */\n deletedAt?: bigint;\n\n /**\n * @generated from field: optional bool archived = 28;\n */\n archived?: boolean;\n\n /**\n * Monotonic conditional-save token. Clients must send the revision they read.\n *\n * @generated from field: int32 revision = 33;\n */\n revision: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductV2.\n * Use `create(ProductV2Schema)` to create a new message.\n */\nexport const ProductV2Schema: GenMessage<ProductV2> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 39);\n\n/**\n * @generated from enum dashboard.product.v1.ProductV2.Status\n */\nexport enum ProductV2_Status {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: UNPUBLISHED = 1;\n */\n UNPUBLISHED = 1,\n\n /**\n * @generated from enum value: PUBLISHED = 2;\n */\n PUBLISHED = 2,\n}\n\n/**\n * Describes the enum dashboard.product.v1.ProductV2.Status.\n */\nexport const ProductV2_StatusSchema: GenEnum<ProductV2_Status> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 39, 0);\n\n/**\n * @generated from message dashboard.product.v1.Recurring\n */\nexport type Recurring = Message<\"dashboard.product.v1.Recurring\"> & {\n /**\n * @generated from field: dashboard.product.v1.BillingPeriod billingPeriod = 1;\n */\n billingPeriod: BillingPeriod;\n\n /**\n * @generated from field: optional int32 trial_days = 2;\n */\n trialDays?: number;\n\n /**\n * @generated from field: optional int32 number_of_payments = 3;\n */\n numberOfPayments?: number;\n\n /**\n * @generated from field: optional bool change_amount_for_currentSubscribers = 4;\n */\n changeAmountForCurrentSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool remove_access_for_cancelled_subscribers = 5;\n */\n removeAccessForCancelledSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool should_send_trial_period_reminder = 6;\n */\n shouldSendTrialPeriodReminder?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.Recurring.\n * Use `create(RecurringSchema)` to create a new message.\n */\nexport const RecurringSchema: GenMessage<Recurring> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 40);\n\n/**\n * @generated from message dashboard.product.v1.VariantDiscount\n */\nexport type VariantDiscount = Message<\"dashboard.product.v1.VariantDiscount\"> & {\n /**\n * @generated from field: dashboard.product.v1.VariantDiscount.Type type = 1;\n */\n type: VariantDiscount_Type;\n\n /**\n * Minor units for FIXED; basis points (10000 = 100%) for PERCENTAGE.\n *\n * @generated from field: int32 amount = 2;\n */\n amount: number;\n\n /**\n * Kept at field 3 for wire compatibility with the original discount model.\n *\n * @generated from field: optional google.protobuf.Timestamp end_date = 3;\n */\n endDate?: Timestamp;\n\n /**\n * @generated from field: optional string id = 4;\n */\n id?: string;\n\n /**\n * @generated from field: bool enabled = 5;\n */\n enabled: boolean;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_date = 6;\n */\n startDate?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.VariantDiscount.\n * Use `create(VariantDiscountSchema)` to create a new message.\n */\nexport const VariantDiscountSchema: GenMessage<VariantDiscount> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 41);\n\n/**\n * @generated from enum dashboard.product.v1.VariantDiscount.Type\n */\nexport enum VariantDiscount_Type {\n /**\n * @generated from enum value: FIXED = 0;\n */\n FIXED = 0,\n\n /**\n * @generated from enum value: PERCENTAGE = 1;\n */\n PERCENTAGE = 1,\n}\n\n/**\n * Describes the enum dashboard.product.v1.VariantDiscount.Type.\n */\nexport const VariantDiscount_TypeSchema: GenEnum<VariantDiscount_Type> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 41, 0);\n\n/**\n * @generated from message dashboard.product.v1.Variant\n */\nexport type Variant = Message<\"dashboard.product.v1.Variant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional string image_url = 4;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: int32 price_amount = 5;\n */\n priceAmount: number;\n\n /**\n * @generated from field: string price_currency = 6;\n */\n priceCurrency: string;\n\n /**\n * @generated from field: optional int32 tax = 7;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 8;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 9;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: optional bool is_deliverable = 10;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional int32 lowest_price_30_days = 11;\n */\n lowestPrice30Days?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.VariantDiscount discount = 12;\n */\n discount?: VariantDiscount;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp estimated_delivery_at = 13;\n */\n estimatedDeliveryAt?: Timestamp;\n\n /**\n * @generated from field: int32 regular_price_amount = 14;\n */\n regularPriceAmount: number;\n\n /**\n * @generated from field: int32 effective_price_amount = 15;\n */\n effectivePriceAmount: number;\n\n /**\n * @generated from field: optional int32 reference_price_amount = 16;\n */\n referencePriceAmount?: number;\n\n /**\n * @generated from field: bool reference_history_available = 17;\n */\n referenceHistoryAvailable: boolean;\n\n /**\n * @generated from field: int64 price_version = 18;\n */\n priceVersion: bigint;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp next_price_change_at = 19;\n */\n nextPriceChangeAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.Variant.\n * Use `create(VariantSchema)` to create a new message.\n */\nexport const VariantSchema: GenMessage<Variant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 42);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductResponse\n */\nexport type CreateOrUpdateProductResponse = Message<\"dashboard.product.v1.CreateOrUpdateProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.CreateOrUpdateProductResponse.result\n */\n result: {\n /**\n * @generated from field: string product_id = 1;\n */\n value: string;\n case: \"productId\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductResponse.\n * Use `create(CreateOrUpdateProductResponseSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductResponseSchema: GenMessage<CreateOrUpdateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 43);\n\n/**\n * @generated from message dashboard.product.v1.BoolResponse\n */\nexport type BoolResponse = Message<\"dashboard.product.v1.BoolResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.BoolResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.BoolResponse.\n * Use `create(BoolResponseSchema)` to create a new message.\n */\nexport const BoolResponseSchema: GenMessage<BoolResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 44);\n\n/**\n * Plain bool result message for non-success/failure RPCs\n *\n * @generated from message dashboard.product.v1.OperationResult\n */\nexport type OperationResult = Message<\"dashboard.product.v1.OperationResult\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.OperationResult.\n * Use `create(OperationResultSchema)` to create a new message.\n */\nexport const OperationResultSchema: GenMessage<OperationResult> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 45);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsRequest\n */\nexport type GetProductsRequest = Message<\"dashboard.product.v1.GetProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n\n /**\n * @generated from field: optional string type = 2;\n */\n type?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsRequest.\n * Use `create(GetProductsRequestSchema)` to create a new message.\n */\nexport const GetProductsRequestSchema: GenMessage<GetProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 46);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse\n */\nexport type GetProductsResponse = Message<\"dashboard.product.v1.GetProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsResponse.Result success = 1;\n */\n value: GetProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.\n * Use `create(GetProductsResponseSchema)` to create a new message.\n */\nexport const GetProductsResponseSchema: GenMessage<GetProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse.Result\n */\nexport type GetProductsResponse_Result = Message<\"dashboard.product.v1.GetProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.Result.\n * Use `create(GetProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsResponse_ResultSchema: GenMessage<GetProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsRequest\n */\nexport type GetProductsByIdsRequest = Message<\"dashboard.product.v1.GetProductsByIdsRequest\"> & {\n /**\n * @generated from field: repeated string ids = 1;\n */\n ids: string[];\n\n /**\n * @generated from field: optional string currency = 2;\n */\n currency?: string;\n\n /**\n * @generated from field: optional string lang = 3;\n */\n lang?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsRequest.\n * Use `create(GetProductsByIdsRequestSchema)` to create a new message.\n */\nexport const GetProductsByIdsRequestSchema: GenMessage<GetProductsByIdsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 48);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse\n */\nexport type GetProductsByIdsResponse = Message<\"dashboard.product.v1.GetProductsByIdsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsByIdsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsByIdsResponse.Result success = 1;\n */\n value: GetProductsByIdsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.\n * Use `create(GetProductsByIdsResponseSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponseSchema: GenMessage<GetProductsByIdsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Product\n */\nexport type GetProductsByIdsResponse_Product = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Product\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: int32 price = 3;\n */\n price: number;\n\n /**\n * @generated from field: string currency = 4;\n */\n currency: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Product.\n * Use `create(GetProductsByIdsResponse_ProductSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ProductSchema: GenMessage<GetProductsByIdsResponse_Product> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Result\n */\nexport type GetProductsByIdsResponse_Result = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductsByIdsResponse.Product products = 1;\n */\n products: GetProductsByIdsResponse_Product[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Result.\n * Use `create(GetProductsByIdsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ResultSchema: GenMessage<GetProductsByIdsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridRequest\n */\nexport type GetProductGridRequest = Message<\"dashboard.product.v1.GetProductGridRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string currency = 3;\n */\n currency?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n\n /**\n * @generated from field: optional int32 offset = 5;\n */\n offset?: number;\n\n /**\n * @generated from field: optional int32 limit = 6;\n */\n limit?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridRequest.\n * Use `create(GetProductGridRequestSchema)` to create a new message.\n */\nexport const GetProductGridRequestSchema: GenMessage<GetProductGridRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 50);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse\n */\nexport type GetProductGridResponse = Message<\"dashboard.product.v1.GetProductGridResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductGridResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductGridResponse.Result success = 1;\n */\n value: GetProductGridResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.\n * Use `create(GetProductGridResponseSchema)` to create a new message.\n */\nexport const GetProductGridResponseSchema: GenMessage<GetProductGridResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse.Result\n */\nexport type GetProductGridResponse_Result = Message<\"dashboard.product.v1.GetProductGridResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.Result.\n * Use `create(GetProductGridResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductGridResponse_ResultSchema: GenMessage<GetProductGridResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsRequest\n */\nexport type GetMainPageProductsRequest = Message<\"dashboard.product.v1.GetMainPageProductsRequest\"> & {\n /**\n * @generated from field: optional string project_id = 1;\n */\n projectId?: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional int32 limit = 3;\n */\n limit?: number;\n\n /**\n * @generated from field: optional int32 offset = 4;\n */\n offset?: number;\n\n /**\n * @generated from field: optional bool include_archived = 5;\n */\n includeArchived?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsRequest.\n * Use `create(GetMainPageProductsRequestSchema)` to create a new message.\n */\nexport const GetMainPageProductsRequestSchema: GenMessage<GetMainPageProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 52);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse\n */\nexport type GetMainPageProductsResponse = Message<\"dashboard.product.v1.GetMainPageProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetMainPageProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetMainPageProductsResponse.Result success = 1;\n */\n value: GetMainPageProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.\n * Use `create(GetMainPageProductsResponseSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponseSchema: GenMessage<GetMainPageProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse.Result\n */\nexport type GetMainPageProductsResponse_Result = Message<\"dashboard.product.v1.GetMainPageProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n\n /**\n * @generated from field: optional int32 total_count = 2;\n */\n totalCount?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.Result.\n * Use `create(GetMainPageProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponse_ResultSchema: GenMessage<GetMainPageProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugRequest\n */\nexport type GetPublicProductByUniqueSlugRequest = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugRequest\"> & {\n /**\n * @generated from field: string unique_slug = 1;\n */\n uniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugRequest.\n * Use `create(GetPublicProductByUniqueSlugRequestSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugRequestSchema: GenMessage<GetPublicProductByUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 54);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse\n */\nexport type GetPublicProductByUniqueSlugResponse = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicProductByUniqueSlugResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result success = 1;\n */\n value: GetPublicProductByUniqueSlugResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.\n * Use `create(GetPublicProductByUniqueSlugResponseSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponseSchema: GenMessage<GetPublicProductByUniqueSlugResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\n */\nexport type GetPublicProductByUniqueSlugResponse_Result = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 4;\n */\n id: string;\n\n /**\n * @generated from field: string name = 5;\n */\n name: string;\n\n /**\n * @generated from field: optional string short_description = 6;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 7;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 8;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional string main_image = 9;\n */\n mainImage?: string;\n\n /**\n * @generated from field: optional string thumbnail_image = 10;\n */\n thumbnailImage?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result.\n * Use `create(GetPublicProductByUniqueSlugResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponse_ResultSchema: GenMessage<GetPublicProductByUniqueSlugResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsRequest\n */\nexport type GetPublicAgreementsRequest = Message<\"dashboard.product.v1.GetPublicAgreementsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated string product_ids = 2;\n */\n productIds: string[];\n\n /**\n * @generated from field: bool contains_recurring = 3;\n */\n containsRecurring: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsRequest.\n * Use `create(GetPublicAgreementsRequestSchema)` to create a new message.\n */\nexport const GetPublicAgreementsRequestSchema: GenMessage<GetPublicAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 56);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse\n */\nexport type GetPublicAgreementsResponse = Message<\"dashboard.product.v1.GetPublicAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicAgreementsResponse.Result success = 1;\n */\n value: GetPublicAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.\n * Use `create(GetPublicAgreementsResponseSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponseSchema: GenMessage<GetPublicAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Agreement\n */\nexport type GetPublicAgreementsResponse_Agreement = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Agreement\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Agreement.\n * Use `create(GetPublicAgreementsResponse_AgreementSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_AgreementSchema: GenMessage<GetPublicAgreementsResponse_Agreement> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Result\n */\nexport type GetPublicAgreementsResponse_Result = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetPublicAgreementsResponse.Agreement result = 3;\n */\n result: GetPublicAgreementsResponse_Agreement[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Result.\n * Use `create(GetPublicAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_ResultSchema: GenMessage<GetPublicAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductRequest\n */\nexport type GetEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductRequest.\n * Use `create(GetEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductRequestSchema: GenMessage<GetEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 58);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse\n */\nexport type GetEProductsAddedForThisProductResponse = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetEProductsAddedForThisProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result success = 1;\n */\n value: GetEProductsAddedForThisProductResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.\n * Use `create(GetEProductsAddedForThisProductResponseSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponseSchema: GenMessage<GetEProductsAddedForThisProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\n */\nexport type GetEProductsAddedForThisProductResponse_Result = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\"> & {\n /**\n * @generated from field: repeated string eproduct_ids = 1;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result.\n * Use `create(GetEProductsAddedForThisProductResponse_ResultSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponse_ResultSchema: GenMessage<GetEProductsAddedForThisProductResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\n */\nexport type UpdateEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated string eproduct_ids = 2;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest.\n * Use `create(UpdateEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const UpdateEProductsAddedForThisProductRequestSchema: GenMessage<UpdateEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 60);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsRequest\n */\nexport type GetListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsRequest.\n * Use `create(GetListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsRequestSchema: GenMessage<GetListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 61);\n\n/**\n * @generated from message dashboard.product.v1.AgreementOption\n */\nexport type AgreementOption = Message<\"dashboard.product.v1.AgreementOption\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool is_required = 2;\n */\n isRequired: boolean;\n\n /**\n * @generated from field: optional string link = 3;\n */\n link?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.AgreementOption.\n * Use `create(AgreementOptionSchema)` to create a new message.\n */\nexport const AgreementOptionSchema: GenMessage<AgreementOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 62);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse\n */\nexport type GetListOfAdditionalAgreementsResponse = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetListOfAdditionalAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result success = 1;\n */\n value: GetListOfAdditionalAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.\n * Use `create(GetListOfAdditionalAgreementsResponseSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponseSchema: GenMessage<GetListOfAdditionalAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\n */\nexport type GetListOfAdditionalAgreementsResponse_Result = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption result = 3;\n */\n result: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result.\n * Use `create(GetListOfAdditionalAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponse_ResultSchema: GenMessage<GetListOfAdditionalAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\n */\nexport type UpdateListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption agreements = 2;\n */\n agreements: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest.\n * Use `create(UpdateListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const UpdateListOfAdditionalAgreementsRequestSchema: GenMessage<UpdateListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 64);\n\n/**\n * @generated from message dashboard.product.v1.CreateProductRequest\n */\nexport type CreateProductRequest = Message<\"dashboard.product.v1.CreateProductRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateProductRequest.\n * Use `create(CreateProductRequestSchema)` to create a new message.\n */\nexport const CreateProductRequestSchema: GenMessage<CreateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 65);\n\n/**\n * @generated from message dashboard.product.v1.DeleteProductRequest\n */\nexport type DeleteProductRequest = Message<\"dashboard.product.v1.DeleteProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DeleteProductRequest.\n * Use `create(DeleteProductRequestSchema)` to create a new message.\n */\nexport const DeleteProductRequestSchema: GenMessage<DeleteProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 66);\n\n/**\n * @generated from message dashboard.product.v1.GetProductByIdRequest\n */\nexport type GetProductByIdRequest = Message<\"dashboard.product.v1.GetProductByIdRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 2;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductByIdRequest.\n * Use `create(GetProductByIdRequestSchema)` to create a new message.\n */\nexport const GetProductByIdRequestSchema: GenMessage<GetProductByIdRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 67);\n\n/**\n * @generated from enum dashboard.product.v1.BillingPeriod\n */\nexport enum BillingPeriod {\n /**\n * @generated from enum value: BILLING_PERIOD_DAILY = 0;\n */\n DAILY = 0,\n\n /**\n * @generated from enum value: BILLING_PERIOD_WEEKLY = 1;\n */\n WEEKLY = 1,\n\n /**\n * @generated from enum value: BILLING_PERIOD_MONTHLY = 2;\n */\n MONTHLY = 2,\n\n /**\n * @generated from enum value: BILLING_PERIOD_QUARTERLY = 3;\n */\n QUARTERLY = 3,\n\n /**\n * @generated from enum value: BILLING_PERIOD_SEMI_ANNUALLY = 4;\n */\n SEMI_ANNUALLY = 4,\n\n /**\n * @generated from enum value: BILLING_PERIOD_ANNUALLY = 5;\n */\n ANNUALLY = 5,\n}\n\n/**\n * Describes the enum dashboard.product.v1.BillingPeriod.\n */\nexport const BillingPeriodSchema: GenEnum<BillingPeriod> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from enum dashboard.product.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PRODUCT_NOT_FOUND = 2;\n */\n PRODUCT_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INVALID_PRODUCT_ID = 3;\n */\n INVALID_PRODUCT_ID = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_SLUG_ALREADY_TAKEN = 4;\n */\n SLUG_ALREADY_TAKEN = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CANNOT_CREATE_PRODUCT = 5;\n */\n CANNOT_CREATE_PRODUCT = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NO_ACCESS = 6;\n */\n NO_ACCESS = 6,\n}\n\n/**\n * Describes the enum dashboard.product.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from service dashboard.product.v1.ProductRouter\n */\nexport const ProductRouter: GenService<{\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateOrUpdateProduct\n */\n createOrUpdateProduct: {\n methodKind: \"unary\";\n input: typeof CreateOrUpdateProductRequestSchema;\n output: typeof CreateOrUpdateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DuplicateProduct\n */\n duplicateProduct: {\n methodKind: \"unary\";\n input: typeof DuplicateProductRequestSchema;\n output: typeof DuplicateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductUniqueSlug\n */\n updateProductUniqueSlug: {\n methodKind: \"unary\";\n input: typeof UpdateProductUniqueSlugRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProduct\n */\n getProduct: {\n methodKind: \"unary\";\n input: typeof GetProductRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductSendTicketAfterPurchase\n */\n getProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductSendTicketAfterPurchaseRequestSchema;\n output: typeof GetProductSendTicketAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAudiobookAfterPurchase\n */\n getProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductAudiobookAfterPurchaseRequestSchema;\n output: typeof GetProductAudiobookAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductSendTicketAfterPurchase\n */\n updateProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductSendTicketAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAudiobookAfterPurchase\n */\n updateProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductAudiobookAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.PublishProductIfNeeded\n */\n publishProductIfNeeded: {\n methodKind: \"unary\";\n input: typeof PublishProductIfNeededRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAfterPurchaseMessage\n */\n getProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof GetProductAfterPurchaseMessageRequestSchema;\n output: typeof GetProductAfterPurchaseMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAfterPurchaseMessage\n */\n updateProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof UpdateProductAfterPurchaseMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductVariants\n */\n getProductVariants: {\n methodKind: \"unary\";\n input: typeof GetProductVariantsRequestSchema;\n output: typeof GetProductVariantsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SendTestEmailWithMessage\n */\n sendTestEmailWithMessage: {\n methodKind: \"unary\";\n input: typeof SendTestEmailWithMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SearchProducts\n */\n searchProducts: {\n methodKind: \"unary\";\n input: typeof SearchProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ExchangeProductIDsToNames\n */\n exchangeProductIDsToNames: {\n methodKind: \"unary\";\n input: typeof ExchangeProductIDsToNamesRequestSchema;\n output: typeof ExchangeProductIDsToNamesResponseSchema;\n },\n /**\n * After product buy methods\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductBoughtArticles\n */\n getProductBoughtArticles: {\n methodKind: \"unary\";\n input: typeof GetProductBoughtArticlesRequestSchema;\n output: typeof GetProductBoughtArticlesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductBoughtArticle\n */\n updateProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof UpdateProductBoughtArticleRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.AddProductBoughtArticle\n */\n addProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof ProductBoughtArticleSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetFileAccessMembers\n */\n getFileAccessMembers: {\n methodKind: \"unary\";\n input: typeof GetFileAccessMembersRequestSchema;\n output: typeof GetFileAccessMembersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GiveAccessToFile\n */\n giveAccessToFile: {\n methodKind: \"unary\";\n input: typeof GiveAccessToFileRequestSchema;\n output: typeof GiveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.RemoveAccessToFile\n */\n removeAccessToFile: {\n methodKind: \"unary\";\n input: typeof RemoveAccessToFileRequestSchema;\n output: typeof RemoveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ArchiveProduct\n */\n archiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UnarchiveProduct\n */\n unarchiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * Dashboard product procedures (ported from tRPC)\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProducts\n */\n getProducts: {\n methodKind: \"unary\";\n input: typeof GetProductsRequestSchema;\n output: typeof GetProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductsByIds\n */\n getProductsByIds: {\n methodKind: \"unary\";\n input: typeof GetProductsByIdsRequestSchema;\n output: typeof GetProductsByIdsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductGrid\n */\n getProductGrid: {\n methodKind: \"unary\";\n input: typeof GetProductGridRequestSchema;\n output: typeof GetProductGridResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetMainPageProducts\n */\n getMainPageProducts: {\n methodKind: \"unary\";\n input: typeof GetMainPageProductsRequestSchema;\n output: typeof GetMainPageProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicProductByUniqueSlug\n */\n getPublicProductByUniqueSlug: {\n methodKind: \"unary\";\n input: typeof GetPublicProductByUniqueSlugRequestSchema;\n output: typeof GetPublicProductByUniqueSlugResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicAgreements\n */\n getPublicAgreements: {\n methodKind: \"unary\";\n input: typeof GetPublicAgreementsRequestSchema;\n output: typeof GetPublicAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetEProductsAddedForThisProduct\n */\n getEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof GetEProductsAddedForThisProductRequestSchema;\n output: typeof GetEProductsAddedForThisProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateEProductsAddedForThisProduct\n */\n updateEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof UpdateEProductsAddedForThisProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetListOfAdditionalAgreements\n */\n getListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof GetListOfAdditionalAgreementsRequestSchema;\n output: typeof GetListOfAdditionalAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateListOfAdditionalAgreements\n */\n updateListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof UpdateListOfAdditionalAgreementsRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateProduct\n */\n createProduct: {\n methodKind: \"unary\";\n input: typeof CreateProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DeleteProduct\n */\n deleteProduct: {\n methodKind: \"unary\";\n input: typeof DeleteProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductById\n */\n getProductById: {\n methodKind: \"unary\";\n input: typeof GetProductByIdRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetGuestCatalogSettings\n */\n getGuestCatalogSettings: {\n methodKind: \"unary\";\n input: typeof GetGuestCatalogSettingsRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SetGuestCatalogEntry\n */\n setGuestCatalogEntry: {\n methodKind: \"unary\";\n input: typeof SetGuestCatalogEntryRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_product, 0);\n\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/public_api.proto (package public_api.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { PublicApiService } from \"./public_api_pb\";\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrder\n */\nexport const getOrder = PublicApiService.method.getOrder;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrders\n */\nexport const getOrders = PublicApiService.method.getOrders;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrderRetryUrl\n */\nexport const getOrderRetryUrl = PublicApiService.method.getOrderRetryUrl;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogin\n */\nexport const userPanelLogin = PublicApiService.method.userPanelLogin;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLoginWithCode\n */\nexport const userPanelLoginWithCode = PublicApiService.method.userPanelLoginWithCode;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogout\n */\nexport const userPanelLogout = PublicApiService.method.userPanelLogout;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelDeleteAccount\n */\nexport const userPanelDeleteAccount = PublicApiService.method.userPanelDeleteAccount;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetProducts\n */\nexport const userPanelGetProducts = PublicApiService.method.userPanelGetProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetails\n */\nexport const userPanelGetAudiobookDetails = PublicApiService.method.userPanelGetAudiobookDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetailsDownloadURLs\n */\nexport const userPanelGetAudiobookDetailsDownloadURLs = PublicApiService.method.userPanelGetAudiobookDetailsDownloadURLs;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetFileDetails\n */\nexport const userPanelGetFileDetails = PublicApiService.method.userPanelGetFileDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetTicketDetails\n */\nexport const userPanelGetTicketDetails = PublicApiService.method.userPanelGetTicketDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushSendDeviceToken\n */\nexport const pushSendDeviceToken = PublicApiService.method.pushSendDeviceToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushEvent\n */\nexport const pushEvent = PublicApiService.method.pushEvent;\n\n/**\n * iOS SHOP methods\n *\n * @generated from rpc public_api.v1.PublicApiService.ShouldShopProducts\n */\nexport const shouldShopProducts = PublicApiService.method.shouldShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ShouldShowGuestCatalog\n */\nexport const shouldShowGuestCatalog = PublicApiService.method.shouldShowGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetGuestCatalog\n */\nexport const getGuestCatalog = PublicApiService.method.getGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelResolveProductAccess\n */\nexport const userPanelResolveProductAccess = PublicApiService.method.userPanelResolveProductAccess;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetShopProducts\n */\nexport const getShopProducts = PublicApiService.method.getShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.DidBuyProduct\n */\nexport const didBuyProduct = PublicApiService.method.didBuyProduct;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreAccountToken\n */\nexport const getAppStoreAccountToken = PublicApiService.method.getAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.VerifyAppStorePurchase\n */\nexport const verifyAppStorePurchase = PublicApiService.method.verifyAppStorePurchase;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreEntitlements\n */\nexport const getAppStoreEntitlements = PublicApiService.method.getAppStoreEntitlements;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.RestoreAppStorePurchases\n */\nexport const restoreAppStorePurchases = PublicApiService.method.restoreAppStorePurchases;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ClearAppStoreAccountToken\n */\nexport const clearAppStoreAccountToken = PublicApiService.method.clearAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetStoreKitCatalog\n */\nexport const getStoreKitCatalog = PublicApiService.method.getStoreKitCatalog;\n\n/**\n * Notification settings\n *\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettings\n */\nexport const getNotificationSettings = PublicApiService.method.getNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettingsDetails\n */\nexport const getNotificationSettingsDetails = PublicApiService.method.getNotificationSettingsDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateGlobalNotificationSettings\n */\nexport const updateGlobalNotificationSettings = PublicApiService.method.updateGlobalNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateNotificationSettings\n */\nexport const updateNotificationSettings = PublicApiService.method.updateNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationHistory\n */\nexport const getNotificationHistory = PublicApiService.method.getNotificationHistory;\n\n/**\n * Product V2 requests\n *\n * @generated from rpc public_api.v1.PublicApiService.GetAvailableCountForProduct\n */\nexport const getAvailableCountForProduct = PublicApiService.method.getAvailableCountForProduct;\n\n/**\n * Thank-you page shown after a successful purchase\n *\n * @generated from rpc public_api.v1.PublicApiService.GetThankYouPage\n */\nexport const getThankYouPage = PublicApiService.method.getThankYouPage;\n\n/**\n * Shop logo and name shown on the customer login screens (panel, returns,\n * notifications). Unauthenticated; an unknown project gives an empty response.\n *\n * @generated from rpc public_api.v1.PublicApiService.GetLoginBranding\n */\nexport const getLoginBranding = PublicApiService.method.getLoginBranding;\n\n/**\n * Checkout requests\n *\n * @generated from rpc public_api.v1.PublicApiService.IsOneClickPaymentAvailable\n */\nexport const isOneClickPaymentAvailable = PublicApiService.method.isOneClickPaymentAvailable;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetPreOrderDetails\n */\nexport const getPreOrderDetails = PublicApiService.method.getPreOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ApplePayValidateMerchant\n */\nexport const applePayValidateMerchant = PublicApiService.method.applePayValidateMerchant;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AuthorizeOneClickPayment\n */\nexport const authorizeOneClickPayment = PublicApiService.method.authorizeOneClickPayment;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.NotifyUserAboutProductAvailability\n */\nexport const notifyUserAboutProductAvailability = PublicApiService.method.notifyUserAboutProductAvailability;\n\n/**\n * Public order details (with obfuscation)\n *\n * @generated from rpc public_api.v1.PublicApiService.GetPublicOrderDetails\n */\nexport const getPublicOrderDetails = PublicApiService.method.getPublicOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AddPublicOrderComment\n */\nexport const addPublicOrderComment = PublicApiService.method.addPublicOrderComment;\n\n/**\n * Testimonials\n *\n * @generated from rpc public_api.v1.PublicApiService.GetOrderForTestimonial\n */\nexport const getOrderForTestimonial = PublicApiService.method.getOrderForTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.SubmitTestimonial\n */\nexport const submitTestimonial = PublicApiService.method.submitTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetTestimonialUploadUrl\n */\nexport const getTestimonialUploadUrl = PublicApiService.method.getTestimonialUploadUrl;\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ReturnsService } from \"./returns_pb\";\n\n/**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\nexport const startReturnSession = ReturnsService.method.startReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\nexport const verifyReturnSession = ReturnsService.method.verifyReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\nexport const exchangePanelSession = ReturnsService.method.exchangePanelSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\nexport const listReturnOrders = ReturnsService.method.listReturnOrders;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\nexport const getReturnableOrder = ReturnsService.method.getReturnableOrder;\n\n/**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\nexport const createReturnRequest = ReturnsService.method.createReturnRequest;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\nexport const listMyReturns = ReturnsService.method.listMyReturns;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\nexport const getMyReturn = ReturnsService.method.getMyReturn;\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","function parseHex(value: string): [number, number, number] | undefined {\n const match = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(value);\n if (match == null) {\n return undefined;\n }\n let hex = match[1];\n if (hex.length <= 4) {\n hex = hex\n .split(\"\")\n .map((char) => char + char)\n .join(\"\");\n }\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction parseRgb(value: string): [number, number, number] | undefined {\n const match =\n /^rgba?\\(\\s*(\\d{1,3})[\\s,]+(\\d{1,3})[\\s,]+(\\d{1,3})(?:[\\s,/]+[\\d.%]+)?\\s*\\)$/i.exec(\n value,\n );\n if (match == null) {\n return undefined;\n }\n const channels = [match[1], match[2], match[3]].map(Number);\n return channels.every((channel) => channel <= 255)\n ? (channels as [number, number, number])\n : undefined;\n}\n\nfunction linearize(channel: number): number {\n const value = channel / 255;\n return value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n}\n\n/**\n * Text color that stays readable on a brand color: white or near black,\n * whichever has the higher WCAG contrast. `undefined` when the color is not a\n * hex or `rgb()` value.\n */\nexport function readableForeground(color: string): string | undefined {\n const trimmed = color.trim();\n const rgb = parseHex(trimmed) ?? parseRgb(trimmed);\n if (rgb == null) {\n return undefined;\n }\n const [r, g, b] = rgb.map(linearize);\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n // Contrast against white (1.05 / (L + 0.05)) versus against black.\n const whiteContrast = 1.05 / (luminance + 0.05);\n const blackContrast = (luminance + 0.05) / 0.05;\n return whiteContrast >= blackContrast ? \"#ffffff\" : \"#18181b\";\n}\n\n/**\n * Appearance tokens derived from one brand color: button background, focus\n * ring and, when the color can be parsed, a readable button foreground.\n */\nexport function brandColorTokens(color: string): {\n buttonBackground: string;\n focusRing: string;\n buttonForeground?: string;\n} {\n const foreground = readableForeground(color);\n return {\n buttonBackground: color,\n focusRing: color,\n ...(foreground != null ? { buttonForeground: foreground } : {}),\n };\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-neutral-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-800 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import { cn } from \"@/src/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":"kLAKA,OAAS,YAAAA,GAAU,YAAAC,MAAgB,+BAK5B,IAAMC,EACXD,EAAS,oOAAoO,EAKnOE,OAIVA,IAAA,WAAa,GAAb,aAKAA,IAAA,KAAO,GAAP,OATUA,OAAA,ICVZ,OAAS,YAAAC,EAAU,eAAAC,GAAa,eAAAC,MAAmB,+BAInD,OAAS,kCAAAC,MAAsC,yBAMxC,IAAMC,EACXC,EAAS,0nLAA2nL,CAACC,EAA4BH,CAA8B,CAAC,EAo0B3rL,IAAMI,EAkEXC,EAAYC,EAAwB,CAAC,ECv5BvC,OACE,qBAAAC,GACA,eAAeC,GACf,YAAYC,OACP,4BACP,OAAS,0BAAAC,OAA8B,0BACvC,OAAS,eAAAC,GAAa,uBAAAC,OAA2B,wBACjD,OAAgB,YAAAC,OAAgB,QCPhC,IAAAC,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,GAAA,4BAAAC,EAAA,gCAAAC,GAAA,8BAAAC,GAAA,iCAAAC,GAAA,8BAAAC,EAAA,2BAAAC,EAAA,4BAAAC,EAAA,gCAAAC,GAAA,8BAAAC,GAAA,iCAAAC,GAAA,8BAAAC,EAAA,2BAAAC,GAAA,iCAAAC,GAAA,iCAAAC,GAAA,yBAAAC,GAAA,gCAAAC,GAAA,+BAAAC,GAAA,gCAAAC,GAAA,kBAAAC,GAAA,oCAAAC,GAAA,+BAAAC,GAAA,2BAAAC,EAAA,gCAAAC,GAAA,6BAAAC,GAAA,6BAAAC,GAAA,4BAAAC,EAAA,0BAAAC,EAAA,uCAAAC,GAAA,4BAAAC,EAAA,gCAAAC,GAAA,8BAAAC,GAAA,iCAAAC,GAAA,8BAAAC,EAAA,2BAAAC,GAAA,qBAAAC,GAAA,oBAAAC,KCMA,OAAS,YAAAC,GAAU,YAAAC,EAAU,eAAAC,GAAa,eAAAC,MAAmB,+BAE7D,OAAS,8BAAAC,EAA4B,kCAAAC,MAAsC,yBCH3E,OAAS,YAAAC,GAAU,YAAAC,EAAU,eAAAC,GAAa,eAAAC,OAAmB,+BAE7D,OAAS,8BAAAC,EAA4B,kCAAAC,MAAsC,yBAMpE,IAAMC,EACXL,EAAS,0vsBAA2vsB,CAACG,EAA4BC,CAA8B,CAAC,EDI3zsB,IAAME,EACXC,EAAS,06+BAA26+B,CAACC,EAAgCC,EAA4BC,EAA2BC,CAAiC,CAAC,EAk3Fzi/B,IAAKC,OAIVA,IAAA,QAAU,GAAV,UAKAA,IAAA,kBAAoB,GAApB,oBAKAA,IAAA,+BAAiC,GAAjC,iCAKAA,IAAA,mCAAqC,GAArC,qCAKAA,IAAA,mCAAqC,GAArC,qCAKAA,IAAA,mCAAqC,GAArC,qCAKAA,IAAA,6BAA+B,GAA/B,+BAKAA,IAAA,8BAAgC,GAAhC,gCAKAA,IAAA,iCAAmC,GAAnC,mCAKAA,IAAA,iCAAmC,GAAnC,mCAKAA,IAAA,iCAAmC,IAAnC,mCAKAA,IAAA,4BAA8B,IAA9B,8BAKAA,IAAA,6BAA+B,IAA/B,+BAKAA,IAAA,gCAAkC,IAAlC,kCAKAA,IAAA,gCAAkC,IAAlC,kCAKAA,IAAA,gCAAkC,IAAlC,kCAKAA,IAAA,kCAAoC,IAApC,oCAKAA,IAAA,sCAAwC,IAAxC,wCAKAA,IAAA,sCAAwC,IAAxC,wCAKAA,IAAA,sCAAwC,IAAxC,wCAKAA,IAAA,+BAAiC,IAAjC,iCAKAA,IAAA,gCAAkC,IAAlC,kCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,oCAAsC,IAAtC,sCAKAA,IAAA,uCAAyC,IAAzC,yCAKAA,IAAA,uCAAyC,IAAzC,yCAKAA,IAAA,uCAAyC,IAAzC,yCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,wCAA0C,IAA1C,0CAKAA,IAAA,gCAAkC,IAAlC,kCAKAA,IAAA,iCAAmC,IAAnC,mCAOAA,IAAA,qCAAuC,IAAvC,uCAKAA,IAAA,mCAAqC,IAArC,qCAKAA,IAAA,kCAAoC,IAApC,oCAKAA,IAAA,sCAAwC,IAAxC,wCAOAA,IAAA,kCAAoC,IAApC,oCAQAA,IAAA,qBAAuB,IAAvB,uBAOAA,IAAA,qBAAuB,IAAvB,uBAOAA,IAAA,oBAAsB,IAAtB,sBA5NUA,OAAA,IAwOL,IAAMC,EAqTXC,EAAYC,EAAiC,CAAC,EDx5GzC,IAAMC,EAA4BC,EAAqB,OAAO,0BAKxDC,EAA0BD,EAAqB,OAAO,wBAKtDE,EAA4BF,EAAqB,OAAO,0BAKxDG,EAA4BH,EAAqB,OAAO,0BAKxDI,EAA0BJ,EAAqB,OAAO,wBAKtDK,EAAyBL,EAAqB,OAAO,uBAKrDM,EAA0BN,EAAqB,OAAO,wBAKtDO,EAA0BP,EAAqB,OAAO,wBAKtDQ,EAAyBR,EAAqB,OAAO,uBAKrDS,EAAwBT,EAAqB,OAAO,sBAKpDU,GAAyBV,EAAqB,OAAO,uBAKrDW,GAAyBX,EAAqB,OAAO,uBAKrDY,GAA8BZ,EAAqB,OAAO,4BAK1Da,GAA6Bb,EAAqB,OAAO,2BAKzDc,GAA8Bd,EAAqB,OAAO,4BAK1De,GAA8Bf,EAAqB,OAAO,4BAK1DgB,GAA4BhB,EAAqB,OAAO,0BAKxDiB,GAA2BjB,EAAqB,OAAO,yBAKvDkB,GAA8BlB,EAAqB,OAAO,4BAK1DmB,GAA4BnB,EAAqB,OAAO,0BAKxDoB,GAA4BpB,EAAqB,OAAO,0BAOxDqB,GAA4BrB,EAAqB,OAAO,0BAOxDsB,GAAqCtB,EAAqB,OAAO,mCAOjEuB,GAA+BvB,EAAqB,OAAO,6BAK3DwB,GAA+BxB,EAAqB,OAAO,6BAK3DyB,GAA+BzB,EAAqB,OAAO,6BAK3D0B,GAA8B1B,EAAqB,OAAO,4BAK1D2B,GAA+B3B,EAAqB,OAAO,6BAK3D4B,GAA+B5B,EAAqB,OAAO,6BAK3D6B,GAA2B7B,EAAqB,OAAO,yBAOvD8B,GAA8B9B,EAAqB,OAAO,4BAK1D+B,GAAkB/B,EAAqB,OAAO,gBAK9CgC,GAAgBhC,EAAqB,OAAO,cAK5CiC,GAAmBjC,EAAqB,OAAO,iBAK/CkC,GAA6BlC,EAAqB,OAAO,2BAKzDmC,GAAuBnC,EAAqB,OAAO,qBAQnDoC,GAAkCpC,EAAqB,OAAO,gCGzM3E,IAAAqC,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,GAAA,6BAAAC,GAAA,6BAAAC,GAAA,8BAAAC,GAAA,kBAAAC,GAAA,4BAAAC,GAAA,4BAAAC,GAAA,gCAAAC,GAAA,oBAAAC,GAAA,qBAAAC,GAAA,2BAAAC,GAAA,4BAAAC,GAAA,mCAAAC,GAAA,aAAAC,GAAA,2BAAAC,GAAA,qBAAAC,GAAA,cAAAC,GAAA,uBAAAC,GAAA,0BAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,4BAAAC,GAAA,oBAAAC,GAAA,+BAAAC,GAAA,uCAAAC,GAAA,cAAAC,GAAA,wBAAAC,GAAA,6BAAAC,GAAA,uBAAAC,GAAA,2BAAAC,GAAA,sBAAAC,GAAA,qCAAAC,GAAA,+BAAAC,GAAA,2BAAAC,GAAA,iCAAAC,GAAA,6CAAAC,GAAA,4BAAAC,GAAA,yBAAAC,GAAA,8BAAAC,GAAA,mBAAAC,GAAA,2BAAAC,GAAA,oBAAAC,GAAA,kCAAAC,GAAA,2BAAAC,KAUO,IAAMC,GAAWC,EAAiB,OAAO,SAKnCC,GAAYD,EAAiB,OAAO,UAKpCE,GAAmBF,EAAiB,OAAO,iBAK3CG,GAAiBH,EAAiB,OAAO,eAKzCI,GAAyBJ,EAAiB,OAAO,uBAKjDK,GAAkBL,EAAiB,OAAO,gBAK1CM,GAAyBN,EAAiB,OAAO,uBAKjDO,GAAuBP,EAAiB,OAAO,qBAK/CQ,GAA+BR,EAAiB,OAAO,6BAKvDS,GAA2CT,EAAiB,OAAO,yCAKnEU,GAA0BV,EAAiB,OAAO,wBAKlDW,GAA4BX,EAAiB,OAAO,0BAKpDY,GAAsBZ,EAAiB,OAAO,oBAK9Ca,GAAYb,EAAiB,OAAO,UAOpCc,GAAqBd,EAAiB,OAAO,mBAK7Ce,GAAyBf,EAAiB,OAAO,uBAKjDgB,GAAkBhB,EAAiB,OAAO,gBAK1CiB,GAAgCjB,EAAiB,OAAO,8BAKxDkB,GAAkBlB,EAAiB,OAAO,gBAK1CmB,GAAgBnB,EAAiB,OAAO,cAKxCoB,GAA0BpB,EAAiB,OAAO,wBAKlDqB,GAAyBrB,EAAiB,OAAO,uBAKjDsB,GAA0BtB,EAAiB,OAAO,wBAKlDuB,GAA2BvB,EAAiB,OAAO,yBAKnDwB,GAA4BxB,EAAiB,OAAO,0BAKpDyB,GAAqBzB,EAAiB,OAAO,mBAO7C0B,GAA0B1B,EAAiB,OAAO,wBAKlD2B,GAAiC3B,EAAiB,OAAO,+BAKzD4B,GAAmC5B,EAAiB,OAAO,iCAK3D6B,GAA6B7B,EAAiB,OAAO,2BAKrD8B,GAAyB9B,EAAiB,OAAO,uBAOjD+B,GAA8B/B,EAAiB,OAAO,4BAOtDgC,GAAkBhC,EAAiB,OAAO,gBAQ1CiC,GAAmBjC,EAAiB,OAAO,iBAO3CkC,GAA6BlC,EAAiB,OAAO,2BAKrDmC,GAAqBnC,EAAiB,OAAO,mBAK7CoC,GAA2BpC,EAAiB,OAAO,yBAKnDqC,GAA2BrC,EAAiB,OAAO,yBAKnDsC,GAAqCtC,EAAiB,OAAO,mCAO7DuC,GAAwBvC,EAAiB,OAAO,sBAKhDwC,GAAwBxC,EAAiB,OAAO,sBAOhDyC,GAAyBzC,EAAiB,OAAO,uBAKjD0C,GAAoB1C,EAAiB,OAAO,kBAK5C2C,GAA0B3C,EAAiB,OAAO,wBClP/D,IAAA4C,EAAA,GAAAC,EAAAD,EAAA,yBAAAE,GAAA,yBAAAC,GAAA,gBAAAC,GAAA,uBAAAC,GAAA,kBAAAC,GAAA,qBAAAC,GAAA,uBAAAC,GAAA,wBAAAC,KAUO,IAAMC,GAAqBC,EAAe,OAAO,mBAK3CC,GAAsBD,EAAe,OAAO,oBAK5CE,GAAuBF,EAAe,OAAO,qBAK7CG,GAAmBH,EAAe,OAAO,iBAKzCI,GAAqBJ,EAAe,OAAO,mBAK3CK,GAAsBL,EAAe,OAAO,oBAK5CM,GAAgBN,EAAe,OAAO,cAKtCO,GAAcP,EAAe,OAAO,YLiD3C,cAAAQ,MAAA,oBA9EN,IAAIC,EACAC,EAGJ,OAAO,UAAU,OAAS,UAAY,CACpC,OAAO,KAAK,SAAS,CACvB,EAEO,IAAMC,GAAc,CACzB,UAAWC,EACX,cAAeC,EACf,QAASC,CACX,EAEaC,GAAWC,GACXC,GAAcC,GAEvBC,GAOG,SAASC,IAA2B,CACzC,OAAOC,IAAcC,CACvB,CAEA,SAASC,EAAmBC,EAAyB,CACnD,OAAOC,GAAuB,CAC5B,QAASD,EAAO,WAChB,gBAAiB,GACjB,aAAc,CAACE,CAAuB,EAEtC,MAAO,MAAOC,EAAOC,IACZ,MAAMD,EAAO,CAClB,GAAGC,EACH,UAAW,GACX,YAAa,SACf,CAAC,CAEL,CAAC,CACH,CAEA,IAAMC,EAAmB,IAAI,IAMtB,SAASC,GAAgBN,EAAyB,CACvD,IAAIO,EAAYF,EAAiB,IAAIL,CAAI,EACzC,OAAIO,GAAa,OACfA,EAAYR,EAAmBC,CAAI,EACnCK,EAAiB,IAAIL,EAAMO,CAAS,GAE/BA,CACT,CAEO,IAAMC,GAER,CAAC,CAAE,SAAAC,CAAS,IAAM,CACrB,IAAMC,EAAgBd,GAAiB,GAEnCe,GAAkB,MAAQC,IAA8BF,KAC1DE,EAA4BF,EAC5BC,EAAiBZ,EAAmBW,CAAa,GAGnD,GAAM,CAACG,CAAW,EAAIC,GACpB,IACE,IAAIC,GAAY,CACd,eAAgB,CAAE,QAAS,CAAE,UAAW,GAAK,CAAE,CACjD,CAAC,CACL,EAEA,OACEC,EAACC,GAAA,CAAkB,UAAWN,EAC5B,SAAAK,EAACE,GAAA,CAAoB,OAAQL,EAAc,SAAAJ,EAAS,EACtD,CAEJ,EMhGA,OAAS,OAAAU,OAA8B,2BACvC,OAAS,QAAAC,OAAY,WAmDjB,cAAAC,OAAA,oBA/CJ,IAAMC,GAAiBC,GACrB,8bACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,yDACT,YACE,oJACF,QACE,wIACF,UACE,+DACF,MACE,uEACF,KAAM,iDACR,EACA,KAAM,CACJ,QAAS,gCACT,GAAI,2FACJ,GAAI,gDACJ,GAAI,uCACJ,KAAM,SACN,UAAW,yDACX,UAAW,SACX,UAAW,SACb,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,SACR,CACF,CACF,EAEA,SAASC,GAAO,CACd,UAAAC,EACA,QAAAC,EAAU,UACV,KAAAC,EAAO,UACP,QAAAC,EAAU,GACV,GAAGC,CACL,EAGK,CACH,IAAMC,EAAOF,EAAUG,GAAK,KAAO,SAEnC,OACEV,GAACS,EAAA,CACC,YAAU,SACV,eAAcJ,EACd,YAAWC,EACX,UAAWK,EAAGV,GAAe,CAAE,QAAAI,EAAS,KAAAC,EAAM,UAAAF,CAAU,CAAC,CAAC,EACzD,GAAGI,EACN,CAEJ,CCvDI,cAAAI,OAAA,oBAFJ,SAASC,GAAM,CAAE,UAAAC,EAAW,KAAAC,EAAM,GAAGC,CAAM,EAAkC,CAC3E,OACEJ,GAAC,SACC,KAAMG,EACN,YAAU,QACV,UAAWE,EACT,6bACA,gFACA,yGACAH,CACF,EACC,GAAGE,EACN,CAEJ,CClBA,SAASE,GAASC,EAAqD,CACrE,IAAMC,EAAQ,8CAA8C,KAAKD,CAAK,EACtE,GAAIC,GAAS,KACX,OAEF,IAAIC,EAAMD,EAAM,CAAC,EACjB,OAAIC,EAAI,QAAU,IAChBA,EAAMA,EACH,MAAM,EAAE,EACR,IAAKC,GAASA,EAAOA,CAAI,EACzB,KAAK,EAAE,GAEL,CACL,SAASD,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC5B,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,EAC5B,SAASA,EAAI,MAAM,EAAG,CAAC,EAAG,EAAE,CAC9B,CACF,CAEA,SAASE,GAASJ,EAAqD,CACrE,IAAMC,EACJ,+EAA+E,KAC7ED,CACF,EACF,GAAIC,GAAS,KACX,OAEF,IAAMI,EAAW,CAACJ,EAAM,CAAC,EAAGA,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAAE,IAAI,MAAM,EAC1D,OAAOI,EAAS,MAAOC,GAAYA,GAAW,GAAG,EAC5CD,EACD,MACN,CAEA,SAASE,GAAUD,EAAyB,CAC1C,IAAMN,EAAQM,EAAU,IACxB,OAAON,GAAS,OAAUA,EAAQ,QAAUA,EAAQ,MAAS,QAAU,GACzE,CAOO,SAASQ,GAAmBC,EAAmC,CACpE,IAAMC,EAAUD,EAAM,KAAK,EACrBE,EAAMZ,GAASW,CAAO,GAAKN,GAASM,CAAO,EACjD,GAAIC,GAAO,KACT,OAEF,GAAM,CAACC,EAAGC,EAAGC,CAAC,EAAIH,EAAI,IAAIJ,EAAS,EAC7BQ,EAAY,MAASH,EAAI,MAASC,EAAI,MAASC,EAE/CE,EAAgB,MAAQD,EAAY,KACpCE,GAAiBF,EAAY,KAAQ,IAC3C,OAAOC,GAAiBC,EAAgB,UAAY,SACtD,CAMO,SAASC,GAAiBT,EAI/B,CACA,IAAMU,EAAaX,GAAmBC,CAAK,EAC3C,MAAO,CACL,iBAAkBA,EAClB,UAAWA,EACX,GAAIU,GAAc,KAAO,CAAE,iBAAkBA,CAAW,EAAI,CAAC,CAC/D,CACF,CCxEA,UAAYC,MAAW,QAUjB,cAAAC,OAAA,oBAHN,IAAMC,GAAiB,aACrB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAGC,IAEtBJ,GAAC,YACC,UAAWK,EACT,obACAH,CACF,EACA,IAAKE,EACJ,GAAGD,EACN,CAGN,EACAF,GAAS,YAAc,WCjBnB,cAAAK,OAAA,oBAFJ,SAASC,GAAS,CAAE,UAAAC,EAAW,GAAGC,CAAM,EAAgC,CACtE,OACEH,GAAC,OACC,YAAU,WACV,UAAWI,EAAG,qCAAsCF,CAAS,EAC5D,GAAGC,EACN,CAEJ","names":["enumDesc","fileDesc","file_common_v1_environment","Environment","fileDesc","messageDesc","serviceDesc","file_google_protobuf_timestamp","file_public_v1_returns","fileDesc","file_common_v1_environment","ReturnsService","serviceDesc","file_public_v1_returns","TransportProvider","um","uq","createConnectTransport","QueryClient","QueryClientProvider","useState","notifications_NotificationsService_connectquery_exports","__export","cancelNotificationMessage","createNotificationGroup","createNotificationGroupUser","createNotificationMessage","createNotificationMessageJob","createNotificationSetting","createNotificationUser","deleteNotificationGroup","deleteNotificationGroupUser","deleteNotificationMessage","deleteNotificationMessageJob","deleteNotificationSetting","deleteNotificationUser","duplicateNotificationMessage","getNotificationMessageReport","getNotificationStats","getNotificationUserSettings","getProjectedRecipientCount","getSentNotificationMessages","getUserGroups","previewNotificationMessageEmail","readNotificationGroupUsers","readNotificationGroups","readNotificationMessageJobs","readNotificationMessages","readNotificationProducts","readNotificationSetting","readNotificationUsers","retryFailedNotificationMessageJobs","updateNotificationGroup","updateNotificationGroupUser","updateNotificationMessage","updateNotificationMessageJob","updateNotificationSetting","updateNotificationUser","updateUserGroups","verifyUserEmail","enumDesc","fileDesc","messageDesc","serviceDesc","file_google_protobuf_empty","file_google_protobuf_timestamp","enumDesc","fileDesc","messageDesc","serviceDesc","file_google_protobuf_empty","file_google_protobuf_timestamp","file_dashboard_v1_product","file_dashboard_v1_notifications","fileDesc","file_google_protobuf_timestamp","file_google_protobuf_empty","file_dashboard_v1_product","file_common_v1_push_notifications","FailureMessage","NotificationsService","serviceDesc","file_dashboard_v1_notifications","createNotificationSetting","NotificationsService","readNotificationSetting","updateNotificationSetting","deleteNotificationSetting","createNotificationGroup","readNotificationGroups","updateNotificationGroup","deleteNotificationGroup","createNotificationUser","readNotificationUsers","updateNotificationUser","deleteNotificationUser","createNotificationGroupUser","readNotificationGroupUsers","updateNotificationGroupUser","deleteNotificationGroupUser","createNotificationMessage","readNotificationMessages","getSentNotificationMessages","updateNotificationMessage","deleteNotificationMessage","cancelNotificationMessage","retryFailedNotificationMessageJobs","duplicateNotificationMessage","getNotificationMessageReport","createNotificationMessageJob","readNotificationMessageJobs","updateNotificationMessageJob","deleteNotificationMessageJob","readNotificationProducts","getNotificationUserSettings","verifyUserEmail","getUserGroups","updateUserGroups","getProjectedRecipientCount","getNotificationStats","previewNotificationMessageEmail","public_api_PublicApiService_connectquery_exports","__export","addPublicOrderComment","applePayValidateMerchant","authorizeOneClickPayment","clearAppStoreAccountToken","didBuyProduct","getAppStoreAccountToken","getAppStoreEntitlements","getAvailableCountForProduct","getGuestCatalog","getLoginBranding","getNotificationHistory","getNotificationSettings","getNotificationSettingsDetails","getOrder","getOrderForTestimonial","getOrderRetryUrl","getOrders","getPreOrderDetails","getPublicOrderDetails","getShopProducts","getStoreKitCatalog","getTestimonialUploadUrl","getThankYouPage","isOneClickPaymentAvailable","notifyUserAboutProductAvailability","pushEvent","pushSendDeviceToken","restoreAppStorePurchases","shouldShopProducts","shouldShowGuestCatalog","submitTestimonial","updateGlobalNotificationSettings","updateNotificationSettings","userPanelDeleteAccount","userPanelGetAudiobookDetails","userPanelGetAudiobookDetailsDownloadURLs","userPanelGetFileDetails","userPanelGetProducts","userPanelGetTicketDetails","userPanelLogin","userPanelLoginWithCode","userPanelLogout","userPanelResolveProductAccess","verifyAppStorePurchase","getOrder","PublicApiService","getOrders","getOrderRetryUrl","userPanelLogin","userPanelLoginWithCode","userPanelLogout","userPanelDeleteAccount","userPanelGetProducts","userPanelGetAudiobookDetails","userPanelGetAudiobookDetailsDownloadURLs","userPanelGetFileDetails","userPanelGetTicketDetails","pushSendDeviceToken","pushEvent","shouldShopProducts","shouldShowGuestCatalog","getGuestCatalog","userPanelResolveProductAccess","getShopProducts","didBuyProduct","getAppStoreAccountToken","verifyAppStorePurchase","getAppStoreEntitlements","restoreAppStorePurchases","clearAppStoreAccountToken","getStoreKitCatalog","getNotificationSettings","getNotificationSettingsDetails","updateGlobalNotificationSettings","updateNotificationSettings","getNotificationHistory","getAvailableCountForProduct","getThankYouPage","getLoginBranding","isOneClickPaymentAvailable","getPreOrderDetails","applePayValidateMerchant","authorizeOneClickPayment","notifyUserAboutProductAvailability","getPublicOrderDetails","addPublicOrderComment","getOrderForTestimonial","submitTestimonial","getTestimonialUploadUrl","returns_ReturnsService_connectquery_exports","__export","createReturnRequest","exchangePanelSession","getMyReturn","getReturnableOrder","listMyReturns","listReturnOrders","startReturnSession","verifyReturnSession","startReturnSession","ReturnsService","verifyReturnSession","exchangePanelSession","listReturnOrders","getReturnableOrder","createReturnRequest","listMyReturns","getMyReturn","jsx","currentFinalTransportHost","finalTransport","rpcProvider","public_api_PublicApiService_connectquery_exports","notifications_NotificationsService_connectquery_exports","returns_ReturnsService_connectquery_exports","useQuery","uq","useMutation","um","customHost","getTransportHost","customHost","HOST","createRpcTransport","host","createConnectTransport","clientHeaderInterceptor","input","init","transportsByHost","getRpcTransport","transport","RpcProvider","children","transportHost","finalTransport","currentFinalTransportHost","queryClient","useState","QueryClient","jsx","TransportProvider","QueryClientProvider","cva","Slot","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","cn","jsx","Input","className","type","props","cn","parseHex","value","match","hex","char","parseRgb","channels","channel","linearize","readableForeground","color","trimmed","rgb","r","g","b","luminance","whiteContrast","blackContrast","brandColorTokens","foreground","React","jsx","Textarea","className","props","ref","cn","jsx","Skeleton","className","props","cn"]}
|
|
1
|
+
{"version":3,"sources":["/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-MY6BPCRV.js","../src/gen/proto/common/v1/environment_pb.ts","../src/gen/proto/public/v1/returns_pb.ts","../src/rpc-provider.tsx","../src/gen/proto/dashboard/v1/notifications-NotificationsService_connectquery.ts","../src/gen/proto/dashboard/v1/notifications_pb.ts","../src/gen/proto/dashboard/v1/product_pb.ts","../src/gen/proto/public/v1/public_api-PublicApiService_connectquery.ts","../src/gen/proto/public/v1/returns-ReturnsService_connectquery.ts","../src/ui/button.tsx","../src/ui/input.tsx","../src/components/returns/color.ts","../src/ui/textarea.tsx","../src/ui/skeleton.tsx"],"names":["file_common_v1_environment","fileDesc","Environment","file_public_v1_returns","file_google_protobuf_timestamp","ReturnsService","serviceDesc","notifications_NotificationsService_connectquery_exports","__export","cancelNotificationMessage","createNotificationGroup","createNotificationGroupUser","createNotificationMessage","createNotificationMessageJob","createNotificationSetting","createNotificationUser","deleteNotificationGroup","deleteNotificationGroupUser","deleteNotificationMessage","deleteNotificationMessageJob","deleteNotificationSetting","deleteNotificationUser","duplicateNotificationMessage","getNotificationMessageReport","getNotificationStats","getNotificationUserSettings","getProjectedRecipientCount","getSentNotificationMessages","getUserGroups","previewNotificationMessageEmail","readNotificationGroupUsers","readNotificationGroups","readNotificationMessageJobs","readNotificationMessages","readNotificationProducts","readNotificationSetting","readNotificationUsers","retryFailedNotificationMessageJobs","updateNotificationGroup","updateNotificationGroupUser","updateNotificationMessage","updateNotificationMessageJob","updateNotificationSetting","updateNotificationUser","updateUserGroups","verifyUserEmail","file_dashboard_v1_product","file_google_protobuf_empty","file_dashboard_v1_notifications","file_common_v1_push_notifications","FailureMessage","NotificationsService","public_api_PublicApiService_connectquery_exports","addPublicOrderComment","applePayValidateMerchant","authorizeOneClickPayment","clearAppStoreAccountToken","didBuyProduct","getAppStoreAccountToken","getAppStoreEntitlements","getAvailableCountForProduct","getGuestCatalog","getLoginBranding","getNotificationHistory","getNotificationSettings","getNotificationSettingsDetails","getOrder","getOrderForTestimonial","getOrderHistory","getOrderRetryUrl","getOrders","getPreOrderDetails","getPublicOrderDetails","getShopProducts","getStoreKitCatalog","getTestimonialUploadUrl","getThankYouPage","isOneClickPaymentAvailable","notifyUserAboutProductAvailability","pushEvent","pushSendDeviceToken","restoreAppStorePurchases","shouldShopProducts","shouldShowGuestCatalog","submitTestimonial","updateGlobalNotificationSettings","updateNotificationSettings","userPanelDeleteAccount","userPanelGetAudiobookDetails","userPanelGetAudiobookDetailsDownloadURLs","userPanelGetFileDetails","userPanelGetProducts","userPanelGetTicketDetails","userPanelLogin","userPanelLoginWithCode","userPanelLogout","userPanelResolveProductAccess","verifyAppStorePurchase","PublicApiService","returns_ReturnsService_connectquery_exports","createReturnRequest","exchangePanelSession","getMyReturn","getReturnableOrder","listMyReturns","listReturnOrders","startReturnSession","verifyReturnSession","currentFinalTransportHost","finalTransport","rpcProvider","useQuery","uq","useMutation","um","useInfiniteQuery","uiq","customHost","getTransportHost","HOST","createRpcTransport","host","createConnectTransport","clientHeaderInterceptor","input","init","transportsByHost","getRpcTransport","transport","RpcProvider","children","transportHost","queryClient","useState","QueryClient","jsx","TransportProvider","QueryClientProvider","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","cn","Input","type","parseHex","value","match","hex","char","parseRgb","channels","channel","linearize","readableForeground","color","trimmed","rgb","r","g","b","luminance","whiteContrast","blackContrast","brandColorTokens","foreground","Textarea","ref","Skeleton"],"mappings":"AAAA,qfAA8C,sDAAsD,sDAAwC,yDCKzG,IAKtBA,CAAAA,CACXC,iCAAAA,oOAA6O,CAAA,CAKnOC,CAAAA,aAAAA,CAAAA,CAAAA,EAAAA,CAIVA,CAAAA,CAAAA,CAAAA,CAAA,UAAA,CAAa,CAAA,CAAA,CAAb,YAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,IAAA,CAAO,CAAA,CAAA,CAAP,MAAA,CATUA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,CAAA,CAAA,CAAA,CCVZ,6CAI+C,IAMlCC,CAAAA,CACXF,iCAAAA,ynLAAS,CAA2nL,CAACD,CAAAA,CAA4BI,mCAA8B,CAAC,CAAA,CAo0B3rL,IAAMC,CAAAA,CAkEXC,oCAAAA,CAAYH,CAAwB,CAAC,CAAA,CCv5BvC,yDAKO,qDACgC,mDACU,uEACjB,ICRhCI,CAAAA,CAAA,CAAA,CAAA,CAAAC,gCAAAA,CAAAD,CAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAE,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,+BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,kCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,CAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CCMA,ICOaC,CAAAA,CACX7C,iCAAAA,yvsBAAS,CAA2vsB,CAAC8C,+BAAAA,CAA4B3C,mCAA8B,CAAC,CAAA,CDI3zsB,IAAM4C,CAAAA,CACX/C,iCAAAA,y6+BAAS,CAA26+B,CAACG,mCAAAA,CAAgC2C,+BAAAA,CAA4BD,CAAAA,CAA2BG,kBAAiC,CAAC,CAAA,CAk3Fzi/B,IAAKC,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAIVA,CAAAA,CAAAA,CAAAA,CAAA,OAAA,CAAU,CAAA,CAAA,CAAV,SAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,iBAAA,CAAoB,CAAA,CAAA,CAApB,mBAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,8BAAA,CAAiC,CAAA,CAAA,CAAjC,gCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,4BAAA,CAA+B,CAAA,CAAA,CAA/B,8BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,6BAAA,CAAgC,CAAA,CAAA,CAAhC,+BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,CAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,CAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,EAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,2BAAA,CAA8B,EAAA,CAAA,CAA9B,6BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,4BAAA,CAA+B,EAAA,CAAA,CAA/B,8BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,iCAAA,CAAoC,EAAA,CAAA,CAApC,mCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,8BAAA,CAAiC,EAAA,CAAA,CAAjC,gCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,mCAAA,CAAsC,EAAA,CAAA,CAAtC,qCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,uCAAA,CAA0C,EAAA,CAAA,CAA1C,yCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,EAAA,CAAA,CAAnC,kCAAA,CAOAA,CAAAA,CAAAA,CAAAA,CAAA,oCAAA,CAAuC,EAAA,CAAA,CAAvC,sCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,iCAAA,CAAoC,EAAA,CAAA,CAApC,mCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAOAA,CAAAA,CAAAA,CAAAA,CAAA,iCAAA,CAAoC,EAAA,CAAA,CAApC,mCAAA,CAQAA,CAAAA,CAAAA,CAAAA,CAAA,oBAAA,CAAuB,EAAA,CAAA,CAAvB,sBAAA,CAOAA,CAAAA,CAAAA,CAAAA,CAAA,oBAAA,CAAuB,EAAA,CAAA,CAAvB,sBAAA,CAOAA,CAAAA,CAAAA,CAAAA,CAAA,mBAAA,CAAsB,EAAA,CAAA,CAAtB,qBAAA,CA5NUA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,CAAA,CAAA,CAAA,CAwOL,IAAMC,CAAAA,CAqTX7C,oCAAAA,CAAY0C,CAAiC,CAAC,CAAA,CDx5GzC,IAAMlC,CAAAA,CAA4BqC,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDhB,CAAAA,CAA0BgB,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDT,CAAAA,CAA4BS,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxD/B,CAAAA,CAA4B+B,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDzC,CAAAA,CAA0ByC,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDpB,CAAAA,CAAyBoB,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDb,CAAAA,CAA0Ba,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDnC,CAAAA,CAA0BmC,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDpC,CAAAA,CAAyBoC,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDf,CAAAA,CAAwBe,CAAAA,CAAqB,MAAA,CAAO,qBAAA,CAKpDR,EAAAA,CAAyBQ,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrD9B,EAAAA,CAAyB8B,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDxC,EAAAA,CAA8BwC,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DrB,EAAAA,CAA6BqB,CAAAA,CAAqB,MAAA,CAAO,0BAAA,CAKzDZ,EAAAA,CAA8BY,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DlC,EAAAA,CAA8BkC,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DvC,EAAAA,CAA4BuC,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDlB,EAAAA,CAA2BkB,CAAAA,CAAqB,MAAA,CAAO,wBAAA,CAKvDxB,EAAAA,CAA8BwB,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DX,EAAAA,CAA4BW,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDjC,EAAAA,CAA4BiC,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAOxD1C,EAAAA,CAA4B0C,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAOxDd,EAAAA,CAAqCc,CAAAA,CAAqB,MAAA,CAAO,kCAAA,CAOjE7B,EAAAA,CAA+B6B,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3D5B,EAAAA,CAA+B4B,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3DtC,EAAAA,CAA+BsC,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3DnB,EAAAA,CAA8BmB,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DV,EAAAA,CAA+BU,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3DhC,EAAAA,CAA+BgC,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3DjB,EAAAA,CAA2BiB,CAAAA,CAAqB,MAAA,CAAO,wBAAA,CAOvD1B,EAAAA,CAA8B0B,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DN,EAAAA,CAAkBM,CAAAA,CAAqB,MAAA,CAAO,eAAA,CAK9CvB,EAAAA,CAAgBuB,CAAAA,CAAqB,MAAA,CAAO,aAAA,CAK5CP,EAAAA,CAAmBO,CAAAA,CAAqB,MAAA,CAAO,gBAAA,CAK/CzB,EAAAA,CAA6ByB,CAAAA,CAAqB,MAAA,CAAO,0BAAA,CAKzD3B,EAAAA,CAAuB2B,CAAAA,CAAqB,MAAA,CAAO,oBAAA,CAQnDtB,EAAAA,CAAkCsB,CAAAA,CAAqB,MAAA,CAAO,+BAAA,CGzM3E,IAAAC,CAAAA,CAAA,CAAA,CAAA,CAAA5C,gCAAAA,CAAA4C,CAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,8BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,6BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CAUO,IAAM/B,EAAAA,CAAWgC,kBAAAA,CAAiB,MAAA,CAAO,QAAA,CAKnC5B,EAAAA,CAAY4B,kBAAAA,CAAiB,MAAA,CAAO,SAAA,CASpC9B,EAAAA,CAAkB8B,kBAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1C7B,EAAAA,CAAmB6B,kBAAAA,CAAiB,MAAA,CAAO,gBAAA,CAK3CL,EAAAA,CAAiBK,kBAAAA,CAAiB,MAAA,CAAO,cAAA,CAKzCJ,EAAAA,CAAyBI,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDH,EAAAA,CAAkBG,kBAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1CX,EAAAA,CAAyBW,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDP,EAAAA,CAAuBO,kBAAAA,CAAiB,MAAA,CAAO,oBAAA,CAK/CV,EAAAA,CAA+BU,kBAAAA,CAAiB,MAAA,CAAO,4BAAA,CAKvDT,EAAAA,CAA2CS,kBAAAA,CAAiB,MAAA,CAAO,wCAAA,CAKnER,EAAAA,CAA0BQ,kBAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDN,EAAAA,CAA4BM,kBAAAA,CAAiB,MAAA,CAAO,yBAAA,CAKpDlB,EAAAA,CAAsBkB,kBAAAA,CAAiB,MAAA,CAAO,mBAAA,CAK9CnB,EAAAA,CAAYmB,kBAAAA,CAAiB,MAAA,CAAO,SAAA,CAOpChB,EAAAA,CAAqBgB,kBAAAA,CAAiB,MAAA,CAAO,kBAAA,CAK7Cf,EAAAA,CAAyBe,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDrC,EAAAA,CAAkBqC,kBAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1CF,EAAAA,CAAgCE,kBAAAA,CAAiB,MAAA,CAAO,6BAAA,CAKxDzB,EAAAA,CAAkByB,kBAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1CzC,EAAAA,CAAgByC,kBAAAA,CAAiB,MAAA,CAAO,aAAA,CAKxCxC,EAAAA,CAA0BwC,kBAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDD,EAAAA,CAAyBC,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDvC,EAAAA,CAA0BuC,kBAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDjB,EAAAA,CAA2BiB,kBAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnD1C,EAAAA,CAA4B0C,kBAAAA,CAAiB,MAAA,CAAO,yBAAA,CAKpDxB,EAAAA,CAAqBwB,kBAAAA,CAAiB,MAAA,CAAO,kBAAA,CAO7ClC,EAAAA,CAA0BkC,kBAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDjC,EAAAA,CAAiCiC,kBAAAA,CAAiB,MAAA,CAAO,8BAAA,CAKzDb,EAAAA,CAAmCa,kBAAAA,CAAiB,MAAA,CAAO,gCAAA,CAK3DZ,EAAAA,CAA6BY,kBAAAA,CAAiB,MAAA,CAAO,0BAAA,CAKrDnC,EAAAA,CAAyBmC,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAOjDtC,EAAAA,CAA8BsC,kBAAAA,CAAiB,MAAA,CAAO,2BAAA,CAOtDtB,EAAAA,CAAkBsB,kBAAAA,CAAiB,MAAA,CAAO,eAAA,CAQ1CpC,EAAAA,aAAmBoC,kBAAAA,CAAiB,MAAA,CAAO,gBAAA,CAO3CrB,EAAAA,CAA6BqB,kBAAAA,CAAiB,MAAA,CAAO,0BAAA,CAKrD3B,EAAAA,CAAqB2B,kBAAAA,CAAiB,MAAA,CAAO,kBAAA,CAK7C5C,EAAAA,CAA2B4C,kBAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnD3C,EAAAA,CAA2B2C,kBAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnDpB,EAAAA,CAAqCoB,kBAAAA,CAAiB,MAAA,CAAO,kCAAA,CAO7D1B,EAAAA,CAAwB0B,kBAAAA,CAAiB,MAAA,CAAO,qBAAA,CAKhD7C,EAAAA,CAAwB6C,kBAAAA,CAAiB,MAAA,CAAO,qBAAA,CAOhD/B,EAAAA,CAAyB+B,kBAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDd,EAAAA,CAAoBc,kBAAAA,CAAiB,MAAA,CAAO,iBAAA,CAK5CvB,EAAAA,CAA0BuB,kBAAAA,CAAiB,MAAA,CAAO,uBAAA,CC3P/D,IAAAC,CAAAA,CAAA,CAAA,CAAA,CAAA3F,gCAAAA,CAAA2F,CAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,WAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CAUO,IAAMD,EAAAA,CAAqBrG,CAAAA,CAAe,MAAA,CAAO,kBAAA,CAK3CsG,EAAAA,CAAsBtG,CAAAA,CAAe,MAAA,CAAO,mBAAA,CAK5CgG,EAAAA,CAAuBhG,CAAAA,CAAe,MAAA,CAAO,oBAAA,CAK7CoG,EAAAA,CAAmBpG,CAAAA,CAAe,MAAA,CAAO,gBAAA,CAKzCkG,EAAAA,CAAqBlG,CAAAA,CAAe,MAAA,CAAO,kBAAA,CAK3C+F,EAAAA,CAAsB/F,CAAAA,CAAe,MAAA,CAAO,mBAAA,CAK5CmG,EAAAA,CAAgBnG,CAAAA,CAAe,MAAA,CAAO,aAAA,CAKtCiG,EAAAA,CAAcjG,CAAAA,CAAe,MAAA,CAAO,WAAA,CLmD3C,+CAAA,IA/EFuG,CAAAA,CACAC,CAAAA,CAGJ,MAAA,CAAO,SAAA,CAAU,MAAA,CAAS,QAAA,CAAA,CAAY,CACpC,OAAO,IAAA,CAAK,QAAA,CAAS,CACvB,CAAA,CAEO,IAAMC,EAAAA,CAAc,CACzB,SAAA,CAAW1D,CAAAA,CACX,aAAA,CAAe7C,CAAAA,CACf,OAAA,CAAS4F,CACX,CAAA,CAEaY,EAAAA,aAAWC,sBAAAA,CACXC,EAAAA,aAAcC,yBAAAA,CACdC,EAAAA,aAAmBC,8BAAAA,CAE5BC,EAAAA,CAOG,SAASC,EAAAA,CAAAA,CAA2B,CACzC,wBAAOD,EAAAA,SAAcE,oBACvB,CAEA,SAASC,CAAAA,CAAmBC,CAAAA,CAAyB,CACnD,OAAOC,gDAAAA,CACL,OAAA,CAASD,CAAAA,CAAO,UAAA,CAChB,eAAA,CAAiB,CAAA,CAAA,CACjB,YAAA,CAAc,CAACE,kBAAuB,CAAA,CAEtC,KAAA,CAAO,KAAA,CAAOC,CAAAA,CAAOC,CAAAA,CAAAA,EACZ,KAAA,CAAMD,CAAAA,CAAO,CAClB,GAAGC,CAAAA,CACH,SAAA,CAAW,CAAA,CAAA,CACX,WAAA,CAAa,SACf,CAAC,CAEL,CAAC,CACH,CAEA,IAAMC,CAAAA,CAAmB,IAAI,GAAA,CAMtB,SAASC,EAAAA,CAAgBN,CAAAA,CAAyB,CACvD,IAAIO,CAAAA,CAAYF,CAAAA,CAAiB,GAAA,CAAIL,CAAI,CAAA,CACzC,OAAIO,CAAAA,EAAa,IAAA,EAAA,CACfA,CAAAA,CAAYR,CAAAA,CAAmBC,CAAI,CAAA,CACnCK,CAAAA,CAAiB,GAAA,CAAIL,CAAAA,CAAMO,CAAS,CAAA,CAAA,CAE/BA,CACT,CAEO,IAAMC,EAAAA,CAER,CAAC,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAA,EAAM,CACrB,IAAMC,CAAAA,CAAgBb,EAAAA,CAAiB,CAAA,CAAA,CAEnCT,CAAAA,EAAkB,IAAA,EAAQD,CAAAA,GAA8BuB,CAAAA,CAAAA,EAAAA,CAC1DvB,CAAAA,CAA4BuB,CAAAA,CAC5BtB,CAAAA,CAAiBW,CAAAA,CAAmBW,CAAa,CAAA,CAAA,CAGnD,GAAM,CAACC,CAAW,CAAA,CAAIC,6BAAAA,CACpB,CAAA,EACE,IAAIC,4BAAAA,CAAY,CACd,cAAA,CAAgB,CAAE,OAAA,CAAS,CAAE,SAAA,CAAW,GAAK,CAAE,CACjD,CAAC,CACL,CAAA,CAEA,OACEC,6BAAAA,+BAACC,CAAA,CAAkB,SAAA,CAAW3B,CAAAA,CAC5B,QAAA,CAAA0B,6BAAAA,+BAACE,CAAA,CAAoB,MAAA,CAAQL,CAAAA,CAAc,QAAA,CAAAF,CAAAA,CAAS,CAAA,CACtD,CAEJ,CAAA,CMlGA,kEAAuC,mCAClB,IAIfQ,EAAAA,CAAiBC,yCAAAA,6bACrB,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,wDAAA,CACT,WAAA,CACE,mJAAA,CACF,OAAA,CACE,uIAAA,CACF,SAAA,CACE,8DAAA,CACF,KAAA,CACE,sEAAA,CACF,IAAA,CAAM,iDACR,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,+BAAA,CACT,EAAA,CAAI,0FAAA,CACJ,EAAA,CAAI,+CAAA,CACJ,EAAA,CAAI,sCAAA,CACJ,IAAA,CAAM,QAAA,CACN,SAAA,CAAW,wDAAA,CACX,SAAA,CAAW,QAAA,CACX,SAAA,CAAW,SACb,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAEA,SAASC,EAAAA,CAAO,CACd,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,GAAGC,CACL,CAAA,CAGK,CACH,IAAMC,CAAAA,CAAOF,CAAAA,CAAUG,aAAAA,CAAK,IAAA,CAAO,QAAA,CAEnC,OACEZ,6BAAAA,CAACW,CAAA,CACC,WAAA,CAAU,QAAA,CACV,cAAA,CAAcJ,CAAAA,CACd,WAAA,CAAWC,CAAAA,CACX,SAAA,CAAWK,gCAAAA,EAAGV,CAAe,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAF,CAAU,CAAC,CAAC,CAAA,CACzD,GAAGI,CAAAA,CACN,CAEJ,CCvDI,SAFKI,EAAAA,CAAM,CAAE,SAAA,CAAAR,CAAAA,CAAW,IAAA,CAAAS,CAAAA,CAAM,GAAGL,CAAM,CAAA,CAAkC,CAC3E,OACEV,6BAAAA,OAAC,CAAA,CACC,IAAA,CAAMe,CAAAA,CACN,WAAA,CAAU,OAAA,CACV,SAAA,CAAWF,gCAAAA,4bACT,CACA,+EAAA,CACA,wGAAA,CACAP,CACF,CAAA,CACC,GAAGI,CAAAA,CACN,CAEJ,CClBA,SAASM,EAAAA,CAASC,CAAAA,CAAqD,CACrE,IAAMC,CAAAA,CAAQ,6CAAA,CAA8C,IAAA,CAAKD,CAAK,CAAA,CACtE,EAAA,CAAIC,CAAAA,EAAS,IAAA,CACX,MAAA,CAEF,IAAIC,CAAAA,CAAMD,CAAAA,CAAM,CAAC,CAAA,CACjB,OAAIC,CAAAA,CAAI,MAAA,EAAU,CAAA,EAAA,CAChBA,CAAAA,CAAMA,CAAAA,CACH,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAKC,CAAAA,EAASA,CAAAA,CAAOA,CAAI,CAAA,CACzB,IAAA,CAAK,EAAE,CAAA,CAAA,CAEL,CACL,QAAA,CAASD,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CAC5B,QAAA,CAASA,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CAC5B,QAAA,CAASA,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAC9B,CACF,CAEA,SAASE,EAAAA,CAASJ,CAAAA,CAAqD,CACrE,IAAMC,CAAAA,CACJ,8EAAA,CAA+E,IAAA,CAC7ED,CACF,CAAA,CACF,EAAA,CAAIC,CAAAA,EAAS,IAAA,CACX,MAAA,CAEF,IAAMI,CAAAA,CAAW,CAACJ,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CAC1D,OAAOI,CAAAA,CAAS,KAAA,CAAOC,CAAAA,EAAYA,CAAAA,EAAW,GAAG,CAAA,CAC5CD,CAAAA,CACD,KAAA,CACN,CAEA,SAASE,EAAAA,CAAUD,CAAAA,CAAyB,CAC1C,IAAMN,CAAAA,CAAQM,CAAAA,CAAU,GAAA,CACxB,OAAON,CAAAA,EAAS,MAAA,CAAUA,CAAAA,CAAQ,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAQ,IAAA,CAAA,CAAS,KAAA,CAAA,EAAU,GACzE,CAOO,SAASQ,EAAAA,CAAmBC,CAAAA,CAAmC,CACpE,IAAMC,CAAAA,CAAUD,CAAAA,CAAM,IAAA,CAAK,CAAA,CACrBE,CAAAA,kBAAMZ,EAAAA,CAASW,CAAO,CAAA,SAAKN,EAAAA,CAASM,CAAO,GAAA,CACjD,EAAA,CAAIC,CAAAA,EAAO,IAAA,CACT,MAAA,CAEF,GAAM,CAACC,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CAAIH,CAAAA,CAAI,GAAA,CAAIJ,EAAS,CAAA,CAC7BQ,CAAAA,CAAY,KAAA,CAASH,CAAAA,CAAI,KAAA,CAASC,CAAAA,CAAI,KAAA,CAASC,CAAAA,CAE/CE,CAAAA,CAAgB,IAAA,CAAA,CAAQD,CAAAA,CAAY,GAAA,CAAA,CACpCE,CAAAA,CAAAA,CAAiBF,CAAAA,CAAY,GAAA,CAAA,CAAQ,GAAA,CAC3C,OAAOC,CAAAA,EAAiBC,CAAAA,CAAgB,SAAA,CAAY,SACtD,CAMO,SAASC,EAAAA,CAAiBT,CAAAA,CAI/B,CACA,IAAMU,CAAAA,CAAaX,EAAAA,CAAmBC,CAAK,CAAA,CAC3C,MAAO,CACL,gBAAA,CAAkBA,CAAAA,CAClB,SAAA,CAAWA,CAAAA,CACX,GAAIU,CAAAA,EAAc,IAAA,CAAO,CAAE,gBAAA,CAAkBA,CAAW,CAAA,CAAI,CAAC,CAC/D,CACF,CCxEA,IAOMC,EAAAA,CAAiB,CAAA,CAAA,UAAA,CACrB,CAAC,CAAE,SAAA,CAAA/B,CAAAA,CAAW,GAAGI,CAAM,CAAA,CAAG4B,CAAAA,CAAAA,EAEtBtC,6BAAAA,UAAC,CAAA,CACC,SAAA,CAAWa,gCAAAA,mbACT,CACAP,CACF,CAAA,CACA,GAAA,CAAKgC,CAAAA,CACJ,GAAG5B,CAAAA,CACN,CAGN,CAAA,CACA2B,EAAAA,CAAS,WAAA,CAAc,UAAA,CCjBnB,SAFKE,EAAAA,CAAS,CAAE,SAAA,CAAAjC,CAAAA,CAAW,GAAGI,CAAM,CAAA,CAAgC,CACtE,OACEV,6BAAAA,KAAC,CAAA,CACC,WAAA,CAAU,UAAA,CACV,SAAA,CAAWa,gCAAAA,oCAAG,CAAsCP,CAAS,CAAA,CAC5D,GAAGI,CAAAA,CACN,CAEJ,CAAA,4QAAA","file":"/home/emems/.t3/worktrees/bitsnap-react/emems-order-history-panel/dist/chunk-MY6BPCRV.js","sourcesContent":[null,"// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/environment.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file common/v1/environment.proto.\n */\nexport const file_common_v1_environment: GenFile = /*@__PURE__*/\n fileDesc(\"Chtjb21tb24vdjEvZW52aXJvbm1lbnQucHJvdG8SCWNvbW1vbi52MSonCgtFbnZpcm9ubWVudBIOCgpQUk9EVUNUSU9OEAASCAoEVEVTVBABQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\");\n\n/**\n * @generated from enum common.v1.Environment\n */\nexport enum Environment {\n /**\n * @generated from enum value: PRODUCTION = 0;\n */\n PRODUCTION = 0,\n\n /**\n * @generated from enum value: TEST = 1;\n */\n TEST = 1,\n}\n\n/**\n * Describes the enum common.v1.Environment.\n */\nexport const EnvironmentSchema: GenEnum<Environment> = /*@__PURE__*/\n enumDesc(file_common_v1_environment, 0);\n\n","// @generated by protoc-gen-es v2.14.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Environment } from \"../../common/v1/environment_pb\";\nimport { file_common_v1_environment } from \"../../common/v1/environment_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file public/v1/returns.proto.\n */\nexport const file_public_v1_returns: GenFile = /*@__PURE__*/\n fileDesc(\"ChdwdWJsaWMvdjEvcmV0dXJucy5wcm90bxIJcHVibGljLnYxIosBChlTdGFydFJldHVyblNlc3Npb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZW1haWwYAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQSEwoGbG9jYWxlGAQgASgJSACIAQFCCQoHX2xvY2FsZSJhChpTdGFydFJldHVyblNlc3Npb25SZXNwb25zZRIUCgxjaGFsbGVuZ2VfaWQYASABKAkSHAoUcmVzZW5kX2FmdGVyX3NlY29uZHMYAiABKAUSDwoHbWVzc2FnZRgDIAEoCSKBAQoaVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFsbGVuZ2VfaWQYAiABKAkSDAoEY29kZRgDIAEoCRIrCgtlbnZpcm9ubWVudBgEIAEoDjIWLmNvbW1vbi52MS5FbnZpcm9ubWVudCJkChtWZXJpZnlSZXR1cm5TZXNzaW9uUmVzcG9uc2USFQoNc2Vzc2lvbl90b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ0ChtFeGNoYW5nZVBhbmVsU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQiZQocRXhjaGFuZ2VQYW5lbFNlc3Npb25SZXNwb25zZRIVCg1zZXNzaW9uX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjMKClJldHVyblBhZ2USEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAki1AEKElJldHVybk9yZGVyU3VtbWFyeRIaChJjYW5vbmljYWxfb3JkZXJfaWQYASABKAkSGQoRZGlzcGxheV9yZWZlcmVuY2UYAiABKAkSDwoHZ2F0ZXdheRgDIAEoCRIwCgxwdXJjaGFzZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3RvdGFsX21pbm9yGAUgASgDEhAKCGN1cnJlbmN5GAYgASgJEh0KFXJldHVybmFibGVfbGluZV9jb3VudBgHIAEoBSJrChdMaXN0UmV0dXJuT3JkZXJzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSEQoJcGFnZV9zaXplGAMgASgFEhIKCnBhZ2VfdG9rZW4YBCABKAkicQoYTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEi0KBm9yZGVycxgBIAMoCzIdLnB1YmxpYy52MS5SZXR1cm5PcmRlclN1bW1hcnkSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEg0KBXRvdGFsGAMgASgFIsQDCg9SZXR1cm5PcmRlckxpbmUSDwoHbGluZV9pZBgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEhIKCnZhcmlhbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAUgASgJEhoKEnB1cmNoYXNlZF9xdWFudGl0eRgGIAEoBRIZChFyZXNlcnZlZF9xdWFudGl0eRgHIAEoBRIZChFyZXR1cm5lZF9xdWFudGl0eRgIIAEoBRIaChJhdmFpbGFibGVfcXVhbnRpdHkYCSABKAUSGgoScmVndWxhcl91bml0X21pbm9yGAogASgDEhcKD3BhaWRfdW5pdF9taW5vchgLIAEoAxIQCghjdXJyZW5jeRgMIAEoCRIQCghlbGlnaWJsZRgNIAEoCBIYChBleGNsdXNpb25fcmVhc29uGA4gASgJEh0KFXBhaWRfbGluZV90b3RhbF9taW5vchgPIAEoAxIfChdjb3Vwb25fYWxsb2NhdGlvbl9taW5vchgQIAEoAxIVCg1hY2Nlc3Nfc291cmNlGBEgASgJEhgKEGFjY2Vzc19yZWZlcmVuY2UYEiABKAki3wEKEVJldHVybk9yZGVyRGV0YWlsEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgBIAEoCRIZChFkaXNwbGF5X3JlZmVyZW5jZRgCIAEoCRIPCgdnYXRld2F5GAMgASgJEjAKDHB1cmNoYXNlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLdG90YWxfbWlub3IYBSABKAMSEAoIY3VycmVuY3kYBiABKAkSKQoFbGluZXMYByADKAsyGi5wdWJsaWMudjEuUmV0dXJuT3JkZXJMaW5lIjsKFlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDwoHbGluZV9pZBgBIAEoCRIQCghxdWFudGl0eRgCIAEoBSJzChJSZXR1cm5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK5AQoVUmV0dXJuUmVxdWVzdExpbmVWaWV3Eg8KB2xpbmVfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAMgASgJEhoKEnJlcXVlc3RlZF9xdWFudGl0eRgEIAEoBRIZChFhcHByb3ZlZF9xdWFudGl0eRgFIAEoBRIZChFyZWNlaXZlZF9xdWFudGl0eRgGIAEoBRIVCg1hY2Nlc3Nfc3RhdHVzGAcgASgJIvoCChFSZXR1cm5SZXF1ZXN0VmlldxIKCgJpZBgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIVCg1yZWZ1bmRfc3RhdHVzGAUgASgJEhsKE3JlZnVuZF9hbW91bnRfbWlub3IYBiABKAMSEAoIY3VycmVuY3kYByABKAkSFQoNY3VzdG9tZXJfbm90ZRgIIAEoCRIPCgd2ZXJzaW9uGAkgASgDEi4KCmNyZWF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBWxpbmVzGAsgAygLMiAucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lVmlldxIuCgdoaXN0b3J5GAwgAygLMh0ucHVibGljLnYxLlJldHVybkhpc3RvcnlFbnRyeRIbChNyZXR1cm5faW5zdHJ1Y3Rpb25zGA0gASgJImIKGUdldFJldHVybmFibGVPcmRlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgDIAEoCSKAAQoaR2V0UmV0dXJuYWJsZU9yZGVyUmVzcG9uc2USKwoFb3JkZXIYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuT3JkZXJEZXRhaWwSNQoOcmV0dXJuX2hpc3RvcnkYAiADKAsyHS5wdWJsaWMudjEuUmV0dXJuSGlzdG9yeUVudHJ5IrwBChpDcmVhdGVSZXR1cm5SZXF1ZXN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEjAKBWl0ZW1zGAQgAygLMiEucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDAoEbm90ZRgFIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBiABKAkiTAobQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXciaAoUTGlzdE15UmV0dXJuc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJIm4KFUxpc3RNeVJldHVybnNSZXNwb25zZRItCgdyZXR1cm5zGAEgAygLMhwucHVibGljLnYxLlJldHVyblJlcXVlc3RWaWV3EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRINCgV0b3RhbBgDIAEoBSJSChJHZXRNeVJldHVyblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXJldHVybl9pZBgDIAEoCSJEChNHZXRNeVJldHVyblJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXcyigYKDlJldHVybnNTZXJ2aWNlEmEKElN0YXJ0UmV0dXJuU2Vzc2lvbhIkLnB1YmxpYy52MS5TdGFydFJldHVyblNlc3Npb25SZXF1ZXN0GiUucHVibGljLnYxLlN0YXJ0UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmQKE1ZlcmlmeVJldHVyblNlc3Npb24SJS5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QaJi5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmcKFEV4Y2hhbmdlUGFuZWxTZXNzaW9uEiYucHVibGljLnYxLkV4Y2hhbmdlUGFuZWxTZXNzaW9uUmVxdWVzdBonLnB1YmxpYy52MS5FeGNoYW5nZVBhbmVsU2Vzc2lvblJlc3BvbnNlElsKEExpc3RSZXR1cm5PcmRlcnMSIi5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1JlcXVlc3QaIy5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEmEKEkdldFJldHVybmFibGVPcmRlchIkLnB1YmxpYy52MS5HZXRSZXR1cm5hYmxlT3JkZXJSZXF1ZXN0GiUucHVibGljLnYxLkdldFJldHVybmFibGVPcmRlclJlc3BvbnNlEmQKE0NyZWF0ZVJldHVyblJlcXVlc3QSJS5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlcXVlc3QaJi5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlElIKDUxpc3RNeVJldHVybnMSHy5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1JlcXVlc3QaIC5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1Jlc3BvbnNlEkwKC0dldE15UmV0dXJuEh0ucHVibGljLnYxLkdldE15UmV0dXJuUmVxdWVzdBoeLnB1YmxpYy52MS5HZXRNeVJldHVyblJlc3BvbnNlYgZwcm90bzM\", [file_common_v1_environment, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message public.v1.StartReturnSessionRequest\n */\nexport type StartReturnSessionRequest = Message<\"public.v1.StartReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n\n /**\n * @generated from field: optional string locale = 4;\n */\n locale?: string | undefined;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionRequest.\n * Use `create(StartReturnSessionRequestSchema)` to create a new message.\n */\nexport const StartReturnSessionRequestSchema: GenMessage<StartReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 0);\n\n/**\n * @generated from message public.v1.StartReturnSessionResponse\n */\nexport type StartReturnSessionResponse = Message<\"public.v1.StartReturnSessionResponse\"> & {\n /**\n * @generated from field: string challenge_id = 1;\n */\n challengeId: string;\n\n /**\n * @generated from field: int32 resend_after_seconds = 2;\n */\n resendAfterSeconds: number;\n\n /**\n * @generated from field: string message = 3;\n */\n message: string;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionResponse.\n * Use `create(StartReturnSessionResponseSchema)` to create a new message.\n */\nexport const StartReturnSessionResponseSchema: GenMessage<StartReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 1);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionRequest\n */\nexport type VerifyReturnSessionRequest = Message<\"public.v1.VerifyReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string challenge_id = 2;\n */\n challengeId: string;\n\n /**\n * @generated from field: string code = 3;\n */\n code: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 4;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionRequest.\n * Use `create(VerifyReturnSessionRequestSchema)` to create a new message.\n */\nexport const VerifyReturnSessionRequestSchema: GenMessage<VerifyReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 2);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionResponse\n */\nexport type VerifyReturnSessionResponse = Message<\"public.v1.VerifyReturnSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionResponse.\n * Use `create(VerifyReturnSessionResponseSchema)` to create a new message.\n */\nexport const VerifyReturnSessionResponseSchema: GenMessage<VerifyReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 3);\n\n/**\n * Exchanges a customer panel access token for a returns session. The email comes\n * from the server-side panel session, never from the request.\n *\n * @generated from message public.v1.ExchangePanelSessionRequest\n */\nexport type ExchangePanelSessionRequest = Message<\"public.v1.ExchangePanelSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string access_token = 2;\n */\n accessToken: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionRequest.\n * Use `create(ExchangePanelSessionRequestSchema)` to create a new message.\n */\nexport const ExchangePanelSessionRequestSchema: GenMessage<ExchangePanelSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 4);\n\n/**\n * @generated from message public.v1.ExchangePanelSessionResponse\n */\nexport type ExchangePanelSessionResponse = Message<\"public.v1.ExchangePanelSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionResponse.\n * Use `create(ExchangePanelSessionResponseSchema)` to create a new message.\n */\nexport const ExchangePanelSessionResponseSchema: GenMessage<ExchangePanelSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 5);\n\n/**\n * @generated from message public.v1.ReturnPage\n */\nexport type ReturnPage = Message<\"public.v1.ReturnPage\"> & {\n /**\n * @generated from field: int32 page_size = 1;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 2;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ReturnPage.\n * Use `create(ReturnPageSchema)` to create a new message.\n */\nexport const ReturnPageSchema: GenMessage<ReturnPage> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 6);\n\n/**\n * @generated from message public.v1.ReturnOrderSummary\n */\nexport type ReturnOrderSummary = Message<\"public.v1.ReturnOrderSummary\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: int32 returnable_line_count = 7;\n */\n returnableLineCount: number;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderSummary.\n * Use `create(ReturnOrderSummarySchema)` to create a new message.\n */\nexport const ReturnOrderSummarySchema: GenMessage<ReturnOrderSummary> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 7);\n\n/**\n * @generated from message public.v1.ListReturnOrdersRequest\n */\nexport type ListReturnOrdersRequest = Message<\"public.v1.ListReturnOrdersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersRequest.\n * Use `create(ListReturnOrdersRequestSchema)` to create a new message.\n */\nexport const ListReturnOrdersRequestSchema: GenMessage<ListReturnOrdersRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 8);\n\n/**\n * @generated from message public.v1.ListReturnOrdersResponse\n */\nexport type ListReturnOrdersResponse = Message<\"public.v1.ListReturnOrdersResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnOrderSummary orders = 1;\n */\n orders: ReturnOrderSummary[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersResponse.\n * Use `create(ListReturnOrdersResponseSchema)` to create a new message.\n */\nexport const ListReturnOrdersResponseSchema: GenMessage<ListReturnOrdersResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 9);\n\n/**\n * @generated from message public.v1.ReturnOrderLine\n */\nexport type ReturnOrderLine = Message<\"public.v1.ReturnOrderLine\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: string variant_id = 3;\n */\n variantId: string;\n\n /**\n * @generated from field: string name = 4;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 5;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 purchased_quantity = 6;\n */\n purchasedQuantity: number;\n\n /**\n * @generated from field: int32 reserved_quantity = 7;\n */\n reservedQuantity: number;\n\n /**\n * @generated from field: int32 returned_quantity = 8;\n */\n returnedQuantity: number;\n\n /**\n * @generated from field: int32 available_quantity = 9;\n */\n availableQuantity: number;\n\n /**\n * @generated from field: int64 regular_unit_minor = 10;\n */\n regularUnitMinor: bigint;\n\n /**\n * @generated from field: int64 paid_unit_minor = 11;\n */\n paidUnitMinor: bigint;\n\n /**\n * @generated from field: string currency = 12;\n */\n currency: string;\n\n /**\n * @generated from field: bool eligible = 13;\n */\n eligible: boolean;\n\n /**\n * @generated from field: string exclusion_reason = 14;\n */\n exclusionReason: string;\n\n /**\n * @generated from field: int64 paid_line_total_minor = 15;\n */\n paidLineTotalMinor: bigint;\n\n /**\n * @generated from field: int64 coupon_allocation_minor = 16;\n */\n couponAllocationMinor: bigint;\n\n /**\n * @generated from field: string access_source = 17;\n */\n accessSource: string;\n\n /**\n * @generated from field: string access_reference = 18;\n */\n accessReference: string;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderLine.\n * Use `create(ReturnOrderLineSchema)` to create a new message.\n */\nexport const ReturnOrderLineSchema: GenMessage<ReturnOrderLine> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 10);\n\n/**\n * @generated from message public.v1.ReturnOrderDetail\n */\nexport type ReturnOrderDetail = Message<\"public.v1.ReturnOrderDetail\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnOrderLine lines = 7;\n */\n lines: ReturnOrderLine[];\n};\n\n/**\n * Describes the message public.v1.ReturnOrderDetail.\n * Use `create(ReturnOrderDetailSchema)` to create a new message.\n */\nexport const ReturnOrderDetailSchema: GenMessage<ReturnOrderDetail> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 11);\n\n/**\n * @generated from message public.v1.ReturnRequestLineInput\n */\nexport type ReturnRequestLineInput = Message<\"public.v1.ReturnRequestLineInput\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: int32 quantity = 2;\n */\n quantity: number;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineInput.\n * Use `create(ReturnRequestLineInputSchema)` to create a new message.\n */\nexport const ReturnRequestLineInputSchema: GenMessage<ReturnRequestLineInput> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 12);\n\n/**\n * @generated from message public.v1.ReturnHistoryEntry\n */\nexport type ReturnHistoryEntry = Message<\"public.v1.ReturnHistoryEntry\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string status = 3;\n */\n status: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ReturnHistoryEntry.\n * Use `create(ReturnHistoryEntrySchema)` to create a new message.\n */\nexport const ReturnHistoryEntrySchema: GenMessage<ReturnHistoryEntry> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 13);\n\n/**\n * @generated from message public.v1.ReturnRequestLineView\n */\nexport type ReturnRequestLineView = Message<\"public.v1.ReturnRequestLineView\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 3;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 requested_quantity = 4;\n */\n requestedQuantity: number;\n\n /**\n * @generated from field: int32 approved_quantity = 5;\n */\n approvedQuantity: number;\n\n /**\n * @generated from field: int32 received_quantity = 6;\n */\n receivedQuantity: number;\n\n /**\n * @generated from field: string access_status = 7;\n */\n accessStatus: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineView.\n * Use `create(ReturnRequestLineViewSchema)` to create a new message.\n */\nexport const ReturnRequestLineViewSchema: GenMessage<ReturnRequestLineView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 14);\n\n/**\n * @generated from message public.v1.ReturnRequestView\n */\nexport type ReturnRequestView = Message<\"public.v1.ReturnRequestView\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string status = 4;\n */\n status: string;\n\n /**\n * @generated from field: string refund_status = 5;\n */\n refundStatus: string;\n\n /**\n * @generated from field: int64 refund_amount_minor = 6;\n */\n refundAmountMinor: bigint;\n\n /**\n * @generated from field: string currency = 7;\n */\n currency: string;\n\n /**\n * @generated from field: string customer_note = 8;\n */\n customerNote: string;\n\n /**\n * @generated from field: int64 version = 9;\n */\n version: bigint;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 10;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineView lines = 11;\n */\n lines: ReturnRequestLineView[];\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry history = 12;\n */\n history: ReturnHistoryEntry[];\n\n /**\n * @generated from field: string return_instructions = 13;\n */\n returnInstructions: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestView.\n * Use `create(ReturnRequestViewSchema)` to create a new message.\n */\nexport const ReturnRequestViewSchema: GenMessage<ReturnRequestView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 15);\n\n/**\n * @generated from message public.v1.GetReturnableOrderRequest\n */\nexport type GetReturnableOrderRequest = Message<\"public.v1.GetReturnableOrderRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderRequest.\n * Use `create(GetReturnableOrderRequestSchema)` to create a new message.\n */\nexport const GetReturnableOrderRequestSchema: GenMessage<GetReturnableOrderRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 16);\n\n/**\n * @generated from message public.v1.GetReturnableOrderResponse\n */\nexport type GetReturnableOrderResponse = Message<\"public.v1.GetReturnableOrderResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnOrderDetail order = 1;\n */\n order?: ReturnOrderDetail | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry return_history = 2;\n */\n returnHistory: ReturnHistoryEntry[];\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderResponse.\n * Use `create(GetReturnableOrderResponseSchema)` to create a new message.\n */\nexport const GetReturnableOrderResponseSchema: GenMessage<GetReturnableOrderResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 17);\n\n/**\n * @generated from message public.v1.CreateReturnRequestRequest\n */\nexport type CreateReturnRequestRequest = Message<\"public.v1.CreateReturnRequestRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineInput items = 4;\n */\n items: ReturnRequestLineInput[];\n\n /**\n * @generated from field: string note = 5;\n */\n note: string;\n\n /**\n * @generated from field: string idempotency_key = 6;\n */\n idempotencyKey: string;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestRequest.\n * Use `create(CreateReturnRequestRequestSchema)` to create a new message.\n */\nexport const CreateReturnRequestRequestSchema: GenMessage<CreateReturnRequestRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 18);\n\n/**\n * @generated from message public.v1.CreateReturnRequestResponse\n */\nexport type CreateReturnRequestResponse = Message<\"public.v1.CreateReturnRequestResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestResponse.\n * Use `create(CreateReturnRequestResponseSchema)` to create a new message.\n */\nexport const CreateReturnRequestResponseSchema: GenMessage<CreateReturnRequestResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 19);\n\n/**\n * @generated from message public.v1.ListMyReturnsRequest\n */\nexport type ListMyReturnsRequest = Message<\"public.v1.ListMyReturnsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsRequest.\n * Use `create(ListMyReturnsRequestSchema)` to create a new message.\n */\nexport const ListMyReturnsRequestSchema: GenMessage<ListMyReturnsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 20);\n\n/**\n * @generated from message public.v1.ListMyReturnsResponse\n */\nexport type ListMyReturnsResponse = Message<\"public.v1.ListMyReturnsResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnRequestView returns = 1;\n */\n returns: ReturnRequestView[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsResponse.\n * Use `create(ListMyReturnsResponseSchema)` to create a new message.\n */\nexport const ListMyReturnsResponseSchema: GenMessage<ListMyReturnsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 21);\n\n/**\n * @generated from message public.v1.GetMyReturnRequest\n */\nexport type GetMyReturnRequest = Message<\"public.v1.GetMyReturnRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string return_id = 3;\n */\n returnId: string;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnRequest.\n * Use `create(GetMyReturnRequestSchema)` to create a new message.\n */\nexport const GetMyReturnRequestSchema: GenMessage<GetMyReturnRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 22);\n\n/**\n * @generated from message public.v1.GetMyReturnResponse\n */\nexport type GetMyReturnResponse = Message<\"public.v1.GetMyReturnResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnResponse.\n * Use `create(GetMyReturnResponseSchema)` to create a new message.\n */\nexport const GetMyReturnResponseSchema: GenMessage<GetMyReturnResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 23);\n\n/**\n * @generated from service public.v1.ReturnsService\n */\nexport const ReturnsService: GenService<{\n /**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\n startReturnSession: {\n methodKind: \"unary\";\n input: typeof StartReturnSessionRequestSchema;\n output: typeof StartReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\n verifyReturnSession: {\n methodKind: \"unary\";\n input: typeof VerifyReturnSessionRequestSchema;\n output: typeof VerifyReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\n exchangePanelSession: {\n methodKind: \"unary\";\n input: typeof ExchangePanelSessionRequestSchema;\n output: typeof ExchangePanelSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\n listReturnOrders: {\n methodKind: \"unary\";\n input: typeof ListReturnOrdersRequestSchema;\n output: typeof ListReturnOrdersResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\n getReturnableOrder: {\n methodKind: \"unary\";\n input: typeof GetReturnableOrderRequestSchema;\n output: typeof GetReturnableOrderResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\n createReturnRequest: {\n methodKind: \"unary\";\n input: typeof CreateReturnRequestRequestSchema;\n output: typeof CreateReturnRequestResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\n listMyReturns: {\n methodKind: \"unary\";\n input: typeof ListMyReturnsRequestSchema;\n output: typeof ListMyReturnsResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\n getMyReturn: {\n methodKind: \"unary\";\n input: typeof GetMyReturnRequestSchema;\n output: typeof GetMyReturnResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_public_v1_returns, 0);\n\n","import {\n TransportProvider,\n useInfiniteQuery as uiq,\n useMutation as um,\n useQuery as uq,\n} from \"@connectrpc/connect-query\";\nimport { createConnectTransport } from \"@connectrpc/connect-web\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { useState } from \"react\";\n\nimport { Transport } from \"@connectrpc/connect\";\nimport { clientHeaderInterceptor } from \"./lib/client-header\";\nimport { HOST, setCustomHost } from \"./components/checkout/constants\";\nimport * as notificationsRouter from \"./gen/proto/dashboard/v1/notifications-NotificationsService_connectquery\";\nimport * as publicApiRouter from \"./gen/proto/public/v1/public_api-PublicApiService_connectquery\";\nimport * as returnsRouter from \"./gen/proto/public/v1/returns-ReturnsService_connectquery\";\n\nlet currentFinalTransportHost: string | undefined;\nlet finalTransport: Transport | undefined;\n\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return this.toString();\n};\n\nexport const rpcProvider = {\n publicApi: publicApiRouter,\n notifications: notificationsRouter,\n returns: returnsRouter,\n};\n\nexport const useQuery = uq;\nexport const useMutation = um;\nexport const useInfiniteQuery = uiq;\n\nlet customHost: string | undefined;\n\nexport function setHost(host: string): void {\n customHost = host;\n setCustomHost(host);\n}\n\nexport function getTransportHost(): string {\n return customHost ?? HOST;\n}\n\nfunction createRpcTransport(host: string): Transport {\n return createConnectTransport({\n baseUrl: host + \"/api/rpc\",\n useBinaryFormat: true,\n interceptors: [clientHeaderInterceptor],\n // @ts-ignore\n fetch: async (input, init?) => {\n return fetch(input, {\n ...init,\n keepalive: false,\n credentials: \"include\",\n });\n },\n });\n}\n\nconst transportsByHost = new Map<string, Transport>();\n\n/**\n * Transport for an explicit host, created once per host. Unlike the shared\n * transport behind `RpcProvider`, several hosts can be in use at the same time.\n */\nexport function getRpcTransport(host: string): Transport {\n let transport = transportsByHost.get(host);\n if (transport == null) {\n transport = createRpcTransport(host);\n transportsByHost.set(host, transport);\n }\n return transport;\n}\n\nexport const RpcProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const transportHost = getTransportHost();\n\n if (finalTransport == null || currentFinalTransportHost !== transportHost) {\n currentFinalTransportHost = transportHost;\n finalTransport = createRpcTransport(transportHost);\n }\n\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: { queries: { staleTime: 5000 } },\n }),\n );\n\n return (\n <TransportProvider transport={finalTransport}>\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n </TransportProvider>\n );\n};\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { NotificationsService } from \"./notifications_pb\";\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\nexport const createNotificationSetting = NotificationsService.method.createNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\nexport const readNotificationSetting = NotificationsService.method.readNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\nexport const updateNotificationSetting = NotificationsService.method.updateNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\nexport const deleteNotificationSetting = NotificationsService.method.deleteNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\nexport const createNotificationGroup = NotificationsService.method.createNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\nexport const readNotificationGroups = NotificationsService.method.readNotificationGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\nexport const updateNotificationGroup = NotificationsService.method.updateNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\nexport const deleteNotificationGroup = NotificationsService.method.deleteNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\nexport const createNotificationUser = NotificationsService.method.createNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\nexport const readNotificationUsers = NotificationsService.method.readNotificationUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\nexport const updateNotificationUser = NotificationsService.method.updateNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\nexport const deleteNotificationUser = NotificationsService.method.deleteNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\nexport const createNotificationGroupUser = NotificationsService.method.createNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\nexport const readNotificationGroupUsers = NotificationsService.method.readNotificationGroupUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\nexport const updateNotificationGroupUser = NotificationsService.method.updateNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\nexport const deleteNotificationGroupUser = NotificationsService.method.deleteNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\nexport const createNotificationMessage = NotificationsService.method.createNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\nexport const readNotificationMessages = NotificationsService.method.readNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\nexport const getSentNotificationMessages = NotificationsService.method.getSentNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\nexport const updateNotificationMessage = NotificationsService.method.updateNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\nexport const deleteNotificationMessage = NotificationsService.method.deleteNotificationMessage;\n\n/**\n * Planned -> cancelled, atomically (a message the worker already claimed cannot be cancelled).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CancelNotificationMessage\n */\nexport const cancelNotificationMessage = NotificationsService.method.cancelNotificationMessage;\n\n/**\n * Re-queues only the failed deliveries of a message (a delivery is retried at most 3 times).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.RetryFailedNotificationMessageJobs\n */\nexport const retryFailedNotificationMessageJobs = NotificationsService.method.retryFailedNotificationMessageJobs;\n\n/**\n * Copies a message (content, audience, channels) into a new draft without a send time.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DuplicateNotificationMessage\n */\nexport const duplicateNotificationMessage = NotificationsService.method.duplicateNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationMessageReport\n */\nexport const getNotificationMessageReport = NotificationsService.method.getNotificationMessageReport;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\nexport const createNotificationMessageJob = NotificationsService.method.createNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\nexport const readNotificationMessageJobs = NotificationsService.method.readNotificationMessageJobs;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\nexport const updateNotificationMessageJob = NotificationsService.method.updateNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\nexport const deleteNotificationMessageJob = NotificationsService.method.deleteNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\nexport const readNotificationProducts = NotificationsService.method.readNotificationProducts;\n\n/**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\nexport const getNotificationUserSettings = NotificationsService.method.getNotificationUserSettings;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\nexport const verifyUserEmail = NotificationsService.method.verifyUserEmail;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\nexport const getUserGroups = NotificationsService.method.getUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\nexport const updateUserGroups = NotificationsService.method.updateUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\nexport const getProjectedRecipientCount = NotificationsService.method.getProjectedRecipientCount;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\nexport const getNotificationStats = NotificationsService.method.getNotificationStats;\n\n/**\n * Renders the campaign e-mail of an unsaved message with the real template\n * (shop branding, sanitized rich body). Persists and sends nothing.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.PreviewNotificationMessageEmail\n */\nexport const previewNotificationMessageEmail = NotificationsService.method.previewNotificationMessageEmail;\n","// @generated by protoc-gen-es v2.14.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { EmptySchema, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { SearchProductsResponseSchema } from \"./product_pb\";\nimport { file_dashboard_v1_product } from \"./product_pb\";\nimport type { NotificationGroupHowOften } from \"../../common/v1/push_notifications_pb\";\nimport { file_common_v1_push_notifications } from \"../../common/v1/push_notifications_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/notifications.proto.\n */\nexport const file_dashboard_v1_notifications: GenFile = /*@__PURE__*/\n fileDesc(\"CiBkYXNoYm9hcmQvdjEvbm90aWZpY2F0aW9ucy5wcm90bxIaZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEiYAoWVmVyaWZ5VXNlckVtYWlsUmVxdWVzdBISCgVlbWFpbBgBIAEoCUgAiAEBEhEKBGNvZGUYAiABKAlIAYgBARIMCgRzbHVnGAMgASgJQggKBl9lbWFpbEIHCgVfY29kZSK/AQoXVmVyaWZ5VXNlckVtYWlsUmVzcG9uc2USDwoCb2sYASABKAhIAIgBARIZCgxhY2Nlc3NfdG9rZW4YAiABKAlIAYgBARIUCgd1c2VyX2lkGAMgASgJSAKIAQESFQoIcmV0cnlfaW4YBCABKAVIA4gBARIRCgRzZW50GAUgASgISASIAQFCBQoDX29rQg8KDV9hY2Nlc3NfdG9rZW5CCgoIX3VzZXJfaWRCCwoJX3JldHJ5X2luQgcKBV9zZW50IlAKFEdldFVzZXJHcm91cHNSZXF1ZXN0EgwKBHNsdWcYASABKAkSGQoMYWNjZXNzX3Rva2VuGAIgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiKJAgoVR2V0VXNlckdyb3Vwc1Jlc3BvbnNlEkcKBmdyb3VwcxgBIAMoCzI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFVzZXJHcm91cHNSZXNwb25zZS5Hcm91cBqmAQoFR3JvdXASCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBWlzX29uGAQgASgIEjwKCWhvd19vZnRlbhgFIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgwKCl9ob3dfb2Z0ZW4idwoXVXBkYXRlVXNlckdyb3Vwc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhEKCWdyb3VwX2lkcxgDIAMoCRIZCgxhY2Nlc3NfdG9rZW4YBCABKAlIAIgBAUIPCg1fYWNjZXNzX3Rva2VuIm8KIkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1JlcXVlc3QSDAoEc2x1ZxgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEhkKDGFjY2Vzc190b2tlbhgDIAEoCUgAiAEBQg8KDV9hY2Nlc3NfdG9rZW4ijAQKI0dldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABrAAgoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSJAocZW1haWxfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgGIAEoCBIiChpzbXNfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgHIAEoCBIlCh1tb2JpbGVfbm90aWZpY2F0aW9uX2F2YWlsYWJsZRgIIAEoCBIeChZoYXNfdXNlcl9pbnN0YWxsZWRfYXBwGAkgASgIQggKBnJlc3VsdCIiCiBDcmVhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdCIgCh5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QigwIKIFVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJEhkKEXN1YnNjcmlwdGlvbl9zbHVnGAIgASgJEiMKG21vYmlsZV9ub3RpZmljYXRpb25fZW5hYmxlZBgDIAEoCBIiChplbWFpbF9ub3RpZmljYXRpb25fZW5hYmxlZBgEIAEoCBIgChhzbXNfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIAoTZW1haWxfb3Blbl90cmFja2luZxgGIAEoCEgAiAEBQhYKFF9lbWFpbF9vcGVuX3RyYWNraW5nIkMKIERlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJIpADCh9SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgZSZXN1bHQSHwoXbm90aWZpY2F0aW9uX3NldHRpbmdfaWQYASABKAkSGQoRc3Vic2NyaXB0aW9uX3NsdWcYAiABKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAMgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAQgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgFIAEoCBIbChNlbWFpbF9vcGVuX3RyYWNraW5nGAYgASgIQggKBnJlc3VsdCLkAQobTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElEKB3N1Y2Nlc3MYASABKAsyPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaKQoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJQggKBnJlc3VsdCLKAQoeQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARI8Cglob3dfb2Z0ZW4YAyABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkgBiAEBEhYKCWlzX3B1YmxpYxgEIAEoCEgCiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuQgwKCl9pc19wdWJsaWMiWgodUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1JlcXVlc3QSEQoJZ3JvdXBfaWRzGAEgAygJEhcKCmdyb3VwX25hbWUYAiABKAlIAIgBAUINCgtfZ3JvdXBfbmFtZSLpAQoeVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0Eh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESPAoJaG93X29mdGVuGAQgASgOMiQuY29tbW9uLnYxLk5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW5IAYgBARIWCglpc19wdWJsaWMYBSABKAhIAogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX2hvd19vZnRlbkIMCgpfaXNfcHVibGljIj8KHkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAki6gMKHlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGswBCgVHcm91cBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKCWhvd19vZnRlbhgEIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQESDQoFdXNlcnMYBSABKAUSEQoJaXNfcHVibGljGAYgASgIQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuGloKBlJlc3VsdBJQCgZncm91cHMYASADKAsyQC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVzcG9uc2UuR3JvdXBCCAoGcmVzdWx0It4BChlOb3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEk8KB3N1Y2Nlc3MYASABKAsyPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGicKBlJlc3VsdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAlCCAoGcmVzdWx0IqMCCh1DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEg0KBWVtYWlsGAIgASgJEg4KBmdyb3VwcxgDIAMoCRISCgVwaG9uZRgEIAEoCUgAiAEBEhcKCmZpcnN0X25hbWUYBSABKAlIAYgBARIWCglsYXN0X25hbWUYBiABKAlIAogBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYByABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAkgASgIQggKBl9waG9uZUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lIlgKHFJlYWROb3RpZmljYXRpb25Vc2Vyc1JlcXVlc3QSEAoIdXNlcl9pZHMYASADKAkSFwoKdXNlcl9lbWFpbBgCIAEoCUgAiAEBQg0KC191c2VyX2VtYWlsIrACCh1VcGRhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIMCgRzbHVnGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEhkKDGFjY2Vzc190b2tlbhgIIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDwoNX2FjY2Vzc190b2tlbiJqCh1EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEgwKBHNsdWcYAiABKAkSGQoMYWNjZXNzX3Rva2VuGAMgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiL4AQodUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVzcG9uc2USUwoHc3VjY2VzcxgBIAEoCzJALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IqkCChhOb3RpZmljYXRpb25Vc2VyUmVzcG9uc2USTgoHc3VjY2VzcxgBIAEoCzI7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABIZCgxhY2Nlc3NfdG9rZW4YAyABKAlIAYgBARIUCgd1c2VyX2lkGAQgASgJSAKIAQEaJgoGUmVzdWx0EhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJQggKBnJlc3VsdEIPCg1fYWNjZXNzX3Rva2VuQgoKCF91c2VyX2lkImEKIkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QSHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAIgASgJIjcKIlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMSEQoJZ3JvdXBfaWRzGAEgAygJIoUBCiJVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJEh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgCIAEoCRIcChRub3RpZmljYXRpb25fdXNlcl9pZBgDIAEoCSJICiJEZWxldGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJIoICCiJSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlElgKB3N1Y2Nlc3MYASABKAsyRS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGjkKBlJlc3VsdBIvCgV1c2VycxgBIAMoCzIgLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVzZXJCCAoGcmVzdWx0IusBCh1Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRJTCgdzdWNjZXNzGAEgASgLMkAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaLAoGUmVzdWx0EiIKGm5vdGlmaWNhdGlvbl9ncm91cF91c2VyX2lkGAEgASgJQggKBnJlc3VsdCJjCgxDaGFubmVsU3RhdHMSEgoKcmVjaXBpZW50cxgBIAEoBRIMCgRzZW50GAIgASgFEhEKCWRlbGl2ZXJlZBgDIAEoBRIOCgZvcGVuZWQYBCABKAUSDgoGZmFpbGVkGAUgASgFIsABChRNZXNzYWdlRGVsaXZlcnlTdGF0cxI3CgVlbWFpbBgBIAEoCzIoLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNoYW5uZWxTdGF0cxI4CgZtb2JpbGUYAiABKAsyKC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DaGFubmVsU3RhdHMSNQoDc21zGAMgASgLMiguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ2hhbm5lbFN0YXRzIt0FChNOb3RpZmljYXRpb25NZXNzYWdlEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJEkUKBnN0YXR1cxgCIAEoDjI1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSKwoHc2VuZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdGl0bGUYBCABKAkSFQoIc3VidGl0bGUYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAcgASgJSAKIAQESFQoIb3Blbl91cmwYDyABKAlIA4gBARIOCgZncm91cHMYCCADKAkSEAoIcHJvZHVjdHMYCSADKAkSDQoFdXNlcnMYCiADKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAsgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgNIAEoCBIaCg1lcnJvcl9tZXNzYWdlGA4gASgJSASIAQESNQoMY2FuY2VsbGVkX2F0GBAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEkQKBXN0YXRzGBEgASgLMjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTWVzc2FnZURlbGl2ZXJ5U3RhdHNIBogBARIcCg9lbWFpbF9ib2R5X2h0bWwYEiABKAlIB4gBAUILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEILCglfb3Blbl91cmxCEAoOX2Vycm9yX21lc3NhZ2VCDwoNX2NhbmNlbGxlZF9hdEIICgZfc3RhdHNCEgoQX2VtYWlsX2JvZHlfaHRtbCKDBAogQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QSRQoGc3RhdHVzGAEgASgOMjUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVN0YXR1cxIrCgdzZW5kX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0aXRsZRgDIAEoCRIVCghzdWJ0aXRsZRgEIAEoCUgAiAEBEhQKB21lc3NhZ2UYBSABKAlIAYgBARIWCglpbWFnZV91cmwYBiABKAlIAogBARIVCghvcGVuX3VybBgNIAEoCUgDiAEBEg4KBmdyb3VwcxgHIAMoCRIQCghwcm9kdWN0cxgIIAMoCRINCgV1c2VycxgJIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCiABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAwgASgIEhwKD2VtYWlsX2JvZHlfaHRtbBgOIAEoCUgEiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIqQCCiJHZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0EiQKF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJSACIAQESMwoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIxCghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIgChNpbmNsdWRlX2V4cG9ydF9kYXRhGAQgASgISAOIAQFCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQg0KC19zdGFydF90aW1lQgsKCV9lbmRfdGltZUIWChRfaW5jbHVkZV9leHBvcnRfZGF0YSLhAwojR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGigKGE5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIMCgRzZW50GAEgASgFGusBCgZSZXN1bHQSTgoVbm90aWZpY2F0aW9uX21lc3NhZ2VzGAEgAygLMi8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZRJnCgVzdGF0cxgCIAEoCzJYLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0cxIYCgtleHBvcnRfZGF0YRgDIAEoDEgAiAEBQg4KDF9leHBvcnRfZGF0YUIICgZyZXN1bHQi+gEKH1JlYWROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QSJAoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYASABKAlIAIgBARIWCglwYWdlX3NpemUYAiABKAVIAYgBARIXCgpwYWdlX3Rva2VuGAMgASgJSAKIAQESRwoIc3RhdHVzZXMYBCADKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzQhoKGF9ub3RpZmljYXRpb25fbWVzc2FnZV9pZEIMCgpfcGFnZV9zaXplQg0KC19wYWdlX3Rva2VuItIECiBVcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCRJFCgZzdGF0dXMYAiABKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzEisKB3NlbmRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRpdGxlGAQgASgJEhUKCHN1YnRpdGxlGAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEhYKCWltYWdlX3VybBgHIAEoCUgCiAEBEg4KBmdyb3VwcxgIIAMoCRIQCghwcm9kdWN0cxgJIAMoCRINCgV1c2VycxgKIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYDCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGA0gASgIEhoKDWVycm9yX21lc3NhZ2UYDiABKAlIA4gBARIVCghvcGVuX3VybBgPIAEoCUgEiAEBEhwKD2VtYWlsX2JvZHlfaHRtbBgQIAEoCUgFiAEBQgsKCV9zdWJ0aXRsZUIKCghfbWVzc2FnZUIMCgpfaW1hZ2VfdXJsQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9vcGVuX3VybEISChBfZW1haWxfYm9keV9odG1sIkMKIENhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkYKI0R1cGxpY2F0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIkwKKVJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJIoYCCipSZXRyeUZhaWxlZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USYAoHc3VjY2VzcxgBIAEoCzJNLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABotCgZSZXN1bHQSEAoIcmVxdWV1ZWQYASABKAUSEQoJZXhoYXVzdGVkGAIgASgFQggKBnJlc3VsdCJGCiNHZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSL6AgokR2V0Tm90aWZpY2F0aW9uTWVzc2FnZVJlcG9ydFJlc3BvbnNlEloKB3N1Y2Nlc3MYASABKAsyRy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAarAEKBlJlc3VsdBJNChRub3RpZmljYXRpb25fbWVzc2FnZRgBIAEoCzIvLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2USPwoFc3RhdHMYAiABKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5NZXNzYWdlRGVsaXZlcnlTdGF0cxISCgpyZWNpcGllbnRzGAMgASgFQggKBnJlc3VsdCJDCiBEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSK2AgogUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USVgoHc3VjY2VzcxgBIAEoCzJDLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGnEKBlJlc3VsdBJOChVub3RpZmljYXRpb25fbWVzc2FnZXMYASADKAsyLy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlEhcKD25leHRfcGFnZV90b2tlbhgCIAEoCUIICgZyZXN1bHQi5AEKG05vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRJRCgdzdWNjZXNzGAEgASgLMj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGikKBlJlc3VsdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCUIICgZyZXN1bHQikgIKI0NyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EkgKBnN0YXR1cxgBIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLY3VzdG9tZXJfaWQYAyABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYBCABKAkSEAoIcHJpb3JpdHkYBSADKAkSGgoNZXJyb3JfbWVzc2FnZRgGIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIuUEChROb3RpZmljYXRpb25EZWxpdmVyeRIgChhub3RpZmljYXRpb25fZGVsaXZlcnlfaWQYASABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYAiABKAkSEwoLY3VzdG9tZXJfaWQYAyABKAkSGwoOcmVjaXBpZW50X25hbWUYBCABKAlIAIgBARIXCg9yZWNpcGllbnRfZW1haWwYBSABKAkSSAoHY2hhbm5lbBgGIAEoDjI3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkRlbGl2ZXJ5Q2hhbm5lbBJGCgZzdGF0dXMYByABKA4yNi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIwCgdzZW50X2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjUKDGRlbGl2ZXJlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIyCglvcGVuZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAOIAQESGgoNZXJyb3JfbWVzc2FnZRgLIAEoCUgEiAEBEhIKCm9wZW5fY291bnQYDCABKAUSEAoIYXR0ZW1wdHMYDSABKAVCEQoPX3JlY2lwaWVudF9uYW1lQgoKCF9zZW50X2F0Qg8KDV9kZWxpdmVyZWRfYXRCDAoKX29wZW5lZF9hdEIQCg5fZXJyb3JfbWVzc2FnZSLIAwoiUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVxdWVzdBIoChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlIAIgBARIkChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgCIAEoCUgBiAEBEk0KB2NoYW5uZWwYAyABKA4yNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWxIAogBARJNCgdvdXRjb21lGAQgASgOMjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lSAOIAQESEwoGc2VhcmNoGAUgASgJSASIAQESEQoEcGFnZRgGIAEoBUgFiAEBEhYKCXBhZ2Vfc2l6ZRgHIAEoBUgGiAEBQh4KHF9ub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWRCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkQgoKCF9jaGFubmVsQgoKCF9vdXRjb21lQgkKB19zZWFyY2hCBwoFX3BhZ2VCDAoKX3BhZ2Vfc2l6ZSLvAQojVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QSIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJEkgKBnN0YXR1cxgCIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGgoNZXJyb3JfbWVzc2FnZRgEIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlIkoKI0RlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0EiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCSLRBQojUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USWQoHc3VjY2VzcxgBIAEoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGqoCChZOb3RpZmljYXRpb25NZXNzYWdlSm9iEiMKG25vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYl9pZBgBIAEoCRJICgZzdGF0dXMYAiABKA4yOC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iU3RhdHVzEisKB3NlbnRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2N1c3RvbWVyX2lkGAQgASgJEh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAUgASgJEhAKCHByaW9yaXR5GAYgAygJEhoKDWVycm9yX21lc3NhZ2UYByABKAlIAIgBAUIQCg5fZXJyb3JfbWVzc2FnZRrYAQoGUmVzdWx0EnkKGW5vdGlmaWNhdGlvbl9tZXNzYWdlX2pvYnMYASADKAsyVi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iEkQKCmRlbGl2ZXJpZXMYAiADKAsyMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25EZWxpdmVyeRINCgV0b3RhbBgDIAEoBUIICgZyZXN1bHQi7gEKHk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRJUCgdzdWNjZXNzGAEgASgLMkEuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGi0KBlJlc3VsdBIjChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlCCAoGcmVzdWx0ItACCgRVc2VyEhwKFG5vdGlmaWNhdGlvbl91c2VyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhcKCmZpcnN0X25hbWUYAyABKAlIAIgBARIWCglsYXN0X25hbWUYBCABKAlIAYgBARIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYBSABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBiABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEh0KEGlzX2FwcF9pbnN0YWxsZWQYCSABKAhIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQhMKEV9pc19hcHBfaW5zdGFsbGVkIjYKH1JlYWROb3RpZmljYXRpb25Qcm9kdWN0c1JlcXVlc3QSEwoLcHJvZHVjdF9pZHMYASADKAkisQEKJlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0Eg0KBXRpdGxlGAEgASgJEhQKB21lc3NhZ2UYAiABKAlIAIgBARIcCg9lbWFpbF9ib2R5X2h0bWwYAyABKAlIAYgBARIWCglpbWFnZV91cmwYBCABKAlIAogBAUIKCghfbWVzc2FnZUISChBfZW1haWxfYm9keV9odG1sQgwKCl9pbWFnZV91cmwimwIKJ1ByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXNwb25zZRJdCgdzdWNjZXNzGAEgASgLMkouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGkgKBlJlc3VsdBIPCgdzdWJqZWN0GAEgASgJEhEKCXByZWhlYWRlchgCIAEoCRIMCgRodG1sGAMgASgJEgwKBHRleHQYBCABKAlCCAoGcmVzdWx0IlQKIUdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBIOCgZncm91cHMYASADKAkSEAoIcHJvZHVjdHMYAiADKAkSDQoFdXNlcnMYAyADKAkicQoiR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXNwb25zZRINCgV0b3RhbBgBIAEoBRITCgtlbWFpbF9jb3VudBgCIAEoBRIRCglzbXNfY291bnQYAyABKAUSFAoMbW9iaWxlX2NvdW50GAQgASgFIqEBChtHZXROb3RpZmljYXRpb25TdGF0c1JlcXVlc3QSMwoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIxCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUi7AUKHEdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2USUgoHc3VjY2VzcxgBIAEoCzI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAadwoPU3RhdHVzQnJlYWtkb3duEg4KBmRyYWZ0cxgBIAEoBRIPCgdwbGFubmVkGAIgASgFEhMKC2luX3Byb2dyZXNzGAMgASgFEgwKBHNlbnQYBCABKAUSDQoFZXJyb3IYBSABKAUSEQoJY2FuY2VsbGVkGAYgASgFGj4KEENoYW5uZWxCcmVha2Rvd24SDgoGbW9iaWxlGAEgASgFEg0KBWVtYWlsGAIgASgFEgsKA3NtcxgDIAEoBRosCg1UaW1lbGluZVBvaW50EgwKBGRhdGUYASABKAkSDQoFY291bnQYAiABKAUaxwIKBlJlc3VsdBJiChBzdGF0dXNfYnJlYWtkb3duGAEgASgLMkguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZS5TdGF0dXNCcmVha2Rvd24SZAoRY2hhbm5lbF9icmVha2Rvd24YAiABKAsySS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLkNoYW5uZWxCcmVha2Rvd24SWAoIdGltZWxpbmUYAyADKAsyRi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLlRpbWVsaW5lUG9pbnQSGQoRdG90YWxfc3Vic2NyaWJlcnMYBCABKAVCCAoGcmVzdWx0KmgKGU5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSCQoFRFJBRlQQABILCgdQTEFOTkVEEAESDwoLSU5fUFJPR1JFU1MQAhIICgRTRU5UEAMSCQoFRVJST1IQBBINCglDQU5DRUxMRUQQBSrOAQocTm90aWZpY2F0aW9uTWVzc2FnZUpvYlN0YXR1cxIoCiROT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX1RPRE8QABIvCitOT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX0lOX1BST0dSRVNTEAESKAokTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19TRU5UEAISKQolTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CX1NUQVRVU19FUlJPUhADKsYBChtOb3RpZmljYXRpb25EZWxpdmVyeUNoYW5uZWwSLQopTk9USUZJQ0FUSU9OX0RFTElWRVJZX0NIQU5ORUxfVU5TUEVDSUZJRUQQABInCiNOT1RJRklDQVRJT05fREVMSVZFUllfQ0hBTk5FTF9FTUFJTBABEigKJE5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX01PQklMRRACEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9DSEFOTkVMX1NNUxADKu4BChpOb3RpZmljYXRpb25EZWxpdmVyeVN0YXR1cxIsCihOT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKAokTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19QRU5ESU5HEAESJQohTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19TRU5UEAISJwojTk9USUZJQ0FUSU9OX0RFTElWRVJZX1NUQVRVU19GQUlMRUQQAxIoCiROT1RJRklDQVRJT05fREVMSVZFUllfU1RBVFVTX1NLSVBQRUQQBCrAAQobTm90aWZpY2F0aW9uRGVsaXZlcnlPdXRjb21lEiUKIU5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX0FOWRAAEiYKIk5PVElGSUNBVElPTl9ERUxJVkVSWV9PVVRDT01FX1NFTlQQARIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9GQUlMRUQQAhIoCiROT1RJRklDQVRJT05fREVMSVZFUllfT1VUQ09NRV9PUEVORUQQAyrPEQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIyCi5GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfTk9UX0ZPVU5EEAISNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fU0VUVElOR19GQUlMRUQQAxI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9TRVRUSU5HX0ZBSUxFRBAEEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX1NFVFRJTkdfRkFJTEVEEAUSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9HUk9VUF9OT1RfRk9VTkQQBhIxCi1GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQU19OT1RfRk9VTkQQBxI0CjBGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCBI0CjBGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQCRI0CjBGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9HUk9VUF9GQUlMRUQQChIvCitGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfTk9UX0ZPVU5EEAsSMAosRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9VU0VSU19OT1RfRk9VTkQQDBIzCi9GQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9VU0VSX0ZBSUxFRBANEjMKL0ZBSUxVUkVfTUVTU0FHRV9VUERBVEVfTk9USUZJQ0FUSU9OX1VTRVJfRkFJTEVEEA4SMwovRkFJTFVSRV9NRVNTQUdFX0RFTEVURV9OT1RJRklDQVRJT05fVVNFUl9GQUlMRUQQDxI1CjFGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfTk9UX0ZPVU5EEBASOQo1RkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fR1JPVVBfVVNFUl9GQUlMRUQQERI5CjVGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9HUk9VUF9VU0VSX0ZBSUxFRBASEjkKNUZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfRkFJTEVEEBMSMgouRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX05PVF9GT1VORBAUEjMKL0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRVNfTk9UX0ZPVU5EEBUSNgoyRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQFhI2CjJGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAXEjYKMkZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX01FU1NBR0VfRkFJTEVEEBgSNgoyRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9OT1RfRk9VTkQQGRI3CjNGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX01FU1NBR0VfSk9CU19OT1RfRk9VTkQQGhI6CjZGQUlMVVJFX01FU1NBR0VfQ1JFQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQGxI6CjZGQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHBI6CjZGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9GQUlMRUQQHRI2CjJGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfQUxSRUFEWV9FWElTVBAeEjsKN0ZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fU0VUVElOR19TTFVHX0FMUkVBRFlfVEFLRU4QHxIzCi9GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1VTRVJfQUxSRUFEWV9FWElTVBAgEjQKMEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fR1JPVVBfQUxSRUFEWV9FWElTVBAhEjgKNEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfQ0FOQ0VMTEFCTEUQIhI2CjJGQUlMVVJFX01FU1NBR0VfQ0FOQ0VMX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAjEjUKMUZBSUxVUkVfTUVTU0FHRV9SRVRSWV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQJBI5CjVGQUlMVVJFX01FU1NBR0VfRFVQTElDQVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAlEjUKMUZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfRURJVEFCTEUQJhIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUVVPVEFfRVhDRUVERUQQJxIoCiRGQUlMVVJFX01FU1NBR0VfRU1BSUxfUFJFVklFV19GQUlMRUQQKBInCiNGQUlMVVJFX01FU1NBR0VfRU1BSUxfQk9EWV9UT09fTE9ORxApMpwrChROb3RpZmljYXRpb25zU2VydmljZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEpIBChdSZWFkTm90aWZpY2F0aW9uU2V0dGluZxI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2USkgEKGVVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmcSPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRKSAQoZRGVsZXRlTm90aWZpY2F0aW9uU2V0dGluZxI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEowBChdDcmVhdGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USjwEKFlJlYWROb3RpZmljYXRpb25Hcm91cHMSOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZRKMAQoXVXBkYXRlTm90aWZpY2F0aW9uR3JvdXASOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QaNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEowBChdEZWxldGVOb3RpZmljYXRpb25Hcm91cBI6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBo1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwUmVzcG9uc2USiQEKFkNyZWF0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKMAQoVUmVhZE5vdGlmaWNhdGlvblVzZXJzEjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvblVzZXJzUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlEokBChZVcGRhdGVOb3RpZmljYXRpb25Vc2VyEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QaNC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2USiQEKFkRlbGV0ZU5vdGlmaWNhdGlvblVzZXISOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25Vc2VyUmVxdWVzdBo0LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblVzZXJSZXNwb25zZRKYAQobQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwVXNlclJlc3BvbnNlEpwBChpSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2VycxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cFVzZXJzUmVxdWVzdHMaPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1Jlc3BvbnNlEpgBChtVcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXISPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0GjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2USmAEKG0RlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlchI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QaOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRKSAQoZQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpUBChhSZWFkTm90aWZpY2F0aW9uTWVzc2FnZXMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0GjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USngEKG0dldFNlbnROb3RpZmljYXRpb25NZXNzYWdlcxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QaPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXNwb25zZRKSAQoZVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpIBChlEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlEjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USkgEKGUNhbmNlbE5vdGlmaWNhdGlvbk1lc3NhZ2USPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DYW5jZWxOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRKzAQoiUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9icxJFLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJldHJ5RmFpbGVkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0GkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmV0cnlGYWlsZWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlEpgBChxEdXBsaWNhdGVOb3RpZmljYXRpb25NZXNzYWdlEj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRHVwbGljYXRlTm90aWZpY2F0aW9uTWVzc2FnZVJlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2USoQEKHEdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnQSPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25NZXNzYWdlUmVwb3J0UmVxdWVzdBpALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvbk1lc3NhZ2VSZXBvcnRSZXNwb25zZRKbAQocQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEp4BChtSZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnMSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXF1ZXN0Gj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2USmwEKHFVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2ISPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlSm9iUmVxdWVzdBo6LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZRKbAQocRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEoUBChhSZWFkTm90aWZpY2F0aW9uUHJvZHVjdHMSOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uUHJvZHVjdHNSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VhcmNoUHJvZHVjdHNSZXNwb25zZRKeAQobR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzUmVxdWVzdBo/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblVzZXJTZXR0aW5nc1Jlc3BvbnNlEnoKD1ZlcmlmeVVzZXJFbWFpbBIyLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlZlcmlmeVVzZXJFbWFpbFJlcXVlc3QaMy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5WZXJpZnlVc2VyRW1haWxSZXNwb25zZRJ0Cg1HZXRVc2VyR3JvdXBzEjAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0VXNlckdyb3Vwc1JlcXVlc3QaMS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRVc2VyR3JvdXBzUmVzcG9uc2USXwoQVXBkYXRlVXNlckdyb3VwcxIzLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZVVzZXJHcm91cHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EpsBChpHZXRQcm9qZWN0ZWRSZWNpcGllbnRDb3VudBI9LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBo+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVzcG9uc2USiQEKFEdldE5vdGlmaWNhdGlvblN0YXRzEjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXF1ZXN0GjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uU3RhdHNSZXNwb25zZRKqAQofUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbBJCLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlByZXZpZXdOb3RpZmljYXRpb25NZXNzYWdlRW1haWxSZXF1ZXN0GkMuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUHJldmlld05vdGlmaWNhdGlvbk1lc3NhZ2VFbWFpbFJlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_dashboard_v1_product, file_common_v1_push_notifications]);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailRequest\n */\nexport type VerifyUserEmailRequest = Message<\"dashboard.notifications.v1.VerifyUserEmailRequest\"> & {\n /**\n * @generated from field: optional string email = 1;\n */\n email?: string | undefined;\n\n /**\n * @generated from field: optional string code = 2;\n */\n code?: string | undefined;\n\n /**\n * @generated from field: string slug = 3;\n */\n slug: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailRequest.\n * Use `create(VerifyUserEmailRequestSchema)` to create a new message.\n */\nexport const VerifyUserEmailRequestSchema: GenMessage<VerifyUserEmailRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailResponse\n */\nexport type VerifyUserEmailResponse = Message<\"dashboard.notifications.v1.VerifyUserEmailResponse\"> & {\n /**\n * @generated from field: optional bool ok = 1;\n */\n ok?: boolean | undefined;\n\n /**\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string | undefined;\n\n /**\n * @generated from field: optional string user_id = 3;\n */\n userId?: string | undefined;\n\n /**\n * Seconds until another code can be requested: the remaining time of the\n * per-e-mail resend throttle (sent = false) or of the per-address window.\n *\n * @generated from field: optional int32 retry_in = 4;\n */\n retryIn?: number | undefined;\n\n /**\n * Whether a code was actually sent by this call. ok = true, sent = false\n * is a throttled resend (the earlier code is still valid). Absent on old\n * servers and on the code-verification response.\n *\n * @generated from field: optional bool sent = 5;\n */\n sent?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailResponse.\n * Use `create(VerifyUserEmailResponseSchema)` to create a new message.\n */\nexport const VerifyUserEmailResponseSchema: GenMessage<VerifyUserEmailResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsRequest\n */\nexport type GetUserGroupsRequest = Message<\"dashboard.notifications.v1.GetUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * if access token is not provided, all groups are off and user needs to check which groups are for him.\n *\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsRequest.\n * Use `create(GetUserGroupsRequestSchema)` to create a new message.\n */\nexport const GetUserGroupsRequestSchema: GenMessage<GetUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse\n */\nexport type GetUserGroupsResponse = Message<\"dashboard.notifications.v1.GetUserGroupsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetUserGroupsResponse.Group groups = 1;\n */\n groups: GetUserGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.\n * Use `create(GetUserGroupsResponseSchema)` to create a new message.\n */\nexport const GetUserGroupsResponseSchema: GenMessage<GetUserGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse.Group\n */\nexport type GetUserGroupsResponse_Group = Message<\"dashboard.notifications.v1.GetUserGroupsResponse.Group\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: bool is_on = 4;\n */\n isOn: boolean;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 5;\n */\n howOften?: NotificationGroupHowOften | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.Group.\n * Use `create(GetUserGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const GetUserGroupsResponse_GroupSchema: GenMessage<GetUserGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateUserGroupsRequest\n */\nexport type UpdateUserGroupsRequest = Message<\"dashboard.notifications.v1.UpdateUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: repeated string group_ids = 3;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string access_token = 4;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateUserGroupsRequest.\n * Use `create(UpdateUserGroupsRequestSchema)` to create a new message.\n */\nexport const UpdateUserGroupsRequestSchema: GenMessage<UpdateUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 4);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsRequest\n */\nexport type GetNotificationUserSettingsRequest = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsRequest.\n * Use `create(GetNotificationUserSettingsRequestSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsRequestSchema: GenMessage<GetNotificationUserSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 5);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse\n */\nexport type GetNotificationUserSettingsResponse = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationUserSettingsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result success = 1;\n */\n value: GetNotificationUserSettingsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.\n * Use `create(GetNotificationUserSettingsResponseSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponseSchema: GenMessage<GetNotificationUserSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\n */\nexport type GetNotificationUserSettingsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * it can be unavailable for certain of reasons.\n *\n * @generated from field: bool email_notification_available = 6;\n */\n emailNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool sms_notification_available = 7;\n */\n smsNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool mobile_notification_available = 8;\n */\n mobileNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool has_user_installed_app = 9;\n */\n hasUserInstalledApp: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result.\n * Use `create(GetNotificationUserSettingsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponse_ResultSchema: GenMessage<GetNotificationUserSettingsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationSettingRequest\n */\nexport type CreateNotificationSettingRequest = Message<\"dashboard.notifications.v1.CreateNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationSettingRequest.\n * Use `create(CreateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const CreateNotificationSettingRequestSchema: GenMessage<CreateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 7);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingRequest\n */\nexport type ReadNotificationSettingRequest = Message<\"dashboard.notifications.v1.ReadNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingRequest.\n * Use `create(ReadNotificationSettingRequestSchema)` to create a new message.\n */\nexport const ReadNotificationSettingRequestSchema: GenMessage<ReadNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 8);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationSettingRequest\n */\nexport type UpdateNotificationSettingRequest = Message<\"dashboard.notifications.v1.UpdateNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Absent = unchanged.\n *\n * @generated from field: optional bool email_open_tracking = 6;\n */\n emailOpenTracking?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationSettingRequest.\n * Use `create(UpdateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationSettingRequestSchema: GenMessage<UpdateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 9);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationSettingRequest\n */\nexport type DeleteNotificationSettingRequest = Message<\"dashboard.notifications.v1.DeleteNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationSettingRequest.\n * Use `create(DeleteNotificationSettingRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationSettingRequestSchema: GenMessage<DeleteNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 10);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse\n */\nexport type ReadNotificationSettingResponse = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationSettingResponse.Result success = 1;\n */\n value: ReadNotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.\n * Use `create(ReadNotificationSettingResponseSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponseSchema: GenMessage<ReadNotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse.Result\n */\nexport type ReadNotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Invisible pixel in notification e-mails; opens are approximate.\n *\n * @generated from field: bool email_open_tracking = 6;\n */\n emailOpenTracking: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.Result.\n * Use `create(ReadNotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponse_ResultSchema: GenMessage<ReadNotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse\n */\nexport type NotificationSettingResponse = Message<\"dashboard.notifications.v1.NotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationSettingResponse.Result success = 1;\n */\n value: NotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.\n * Use `create(NotificationSettingResponseSchema)` to create a new message.\n */\nexport const NotificationSettingResponseSchema: GenMessage<NotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse.Result\n */\nexport type NotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.NotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.Result.\n * Use `create(NotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationSettingResponse_ResultSchema: GenMessage<NotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupRequest\n */\nexport type CreateNotificationGroupRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 3;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: optional bool is_public = 4;\n */\n isPublic?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupRequest.\n * Use `create(CreateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupRequestSchema: GenMessage<CreateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 13);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsRequest\n */\nexport type ReadNotificationGroupsRequest = Message<\"dashboard.notifications.v1.ReadNotificationGroupsRequest\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string group_name = 2;\n */\n groupName?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsRequest.\n * Use `create(ReadNotificationGroupsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsRequestSchema: GenMessage<ReadNotificationGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 14);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupRequest\n */\nexport type UpdateNotificationGroupRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: optional bool is_public = 5;\n */\n isPublic?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupRequest.\n * Use `create(UpdateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupRequestSchema: GenMessage<UpdateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 15);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupRequest\n */\nexport type DeleteNotificationGroupRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupRequest.\n * Use `create(DeleteNotificationGroupRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupRequestSchema: GenMessage<DeleteNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 16);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse\n */\nexport type ReadNotificationGroupsResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupsResponse.Result success = 1;\n */\n value: ReadNotificationGroupsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.\n * Use `create(ReadNotificationGroupsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponseSchema: GenMessage<ReadNotificationGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\n */\nexport type ReadNotificationGroupsResponse_Group = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string | undefined;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften | undefined;\n\n /**\n * @generated from field: int32 users = 5;\n */\n users: number;\n\n /**\n * @generated from field: bool is_public = 6;\n */\n isPublic: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group.\n * Use `create(ReadNotificationGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_GroupSchema: GenMessage<ReadNotificationGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\n */\nexport type ReadNotificationGroupsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationGroupsResponse.Group groups = 1;\n */\n groups: ReadNotificationGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result.\n * Use `create(ReadNotificationGroupsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_ResultSchema: GenMessage<ReadNotificationGroupsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse\n */\nexport type NotificationGroupResponse = Message<\"dashboard.notifications.v1.NotificationGroupResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupResponse.Result success = 1;\n */\n value: NotificationGroupResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.\n * Use `create(NotificationGroupResponseSchema)` to create a new message.\n */\nexport const NotificationGroupResponseSchema: GenMessage<NotificationGroupResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse.Result\n */\nexport type NotificationGroupResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.Result.\n * Use `create(NotificationGroupResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupResponse_ResultSchema: GenMessage<NotificationGroupResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationUserRequest\n */\nexport type CreateNotificationUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: repeated string groups = 3;\n */\n groups: string[];\n\n /**\n * @generated from field: optional string phone = 4;\n */\n phone?: string | undefined;\n\n /**\n * @generated from field: optional string first_name = 5;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 6;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 7;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 8;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 9;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationUserRequest.\n * Use `create(CreateNotificationUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationUserRequestSchema: GenMessage<CreateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 19);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersRequest\n */\nexport type ReadNotificationUsersRequest = Message<\"dashboard.notifications.v1.ReadNotificationUsersRequest\"> & {\n /**\n * @generated from field: repeated string user_ids = 1;\n */\n userIds: string[];\n\n /**\n * @generated from field: optional string user_email = 2;\n */\n userEmail?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersRequest.\n * Use `create(ReadNotificationUsersRequestSchema)` to create a new message.\n */\nexport const ReadNotificationUsersRequestSchema: GenMessage<ReadNotificationUsersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 20);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationUserRequest\n */\nexport type UpdateNotificationUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string access_token = 8;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationUserRequest.\n * Use `create(UpdateNotificationUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationUserRequestSchema: GenMessage<UpdateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 21);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationUserRequest\n */\nexport type DeleteNotificationUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationUserRequest\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string slug = 2;\n */\n slug: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationUserRequest.\n * Use `create(DeleteNotificationUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationUserRequestSchema: GenMessage<DeleteNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 22);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse\n */\nexport type ReadNotificationUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationUsersResponse.Result success = 1;\n */\n value: ReadNotificationUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.\n * Use `create(ReadNotificationUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponseSchema: GenMessage<ReadNotificationUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse.Result\n */\nexport type ReadNotificationUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.Result.\n * Use `create(ReadNotificationUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponse_ResultSchema: GenMessage<ReadNotificationUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse\n */\nexport type NotificationUserResponse = Message<\"dashboard.notifications.v1.NotificationUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationUserResponse.Result success = 1;\n */\n value: NotificationUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string | undefined;\n\n /**\n * @generated from field: optional string user_id = 4;\n */\n userId?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.\n * Use `create(NotificationUserResponseSchema)` to create a new message.\n */\nexport const NotificationUserResponseSchema: GenMessage<NotificationUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse.Result\n */\nexport type NotificationUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.Result.\n * Use `create(NotificationUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationUserResponse_ResultSchema: GenMessage<NotificationUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupUserRequest\n */\nexport type CreateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupUserRequest.\n * Use `create(CreateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupUserRequestSchema: GenMessage<CreateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 25);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersRequests\n */\nexport type ReadNotificationGroupUsersRequests = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersRequests\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersRequests.\n * Use `create(ReadNotificationGroupUsersRequestsSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersRequestsSchema: GenMessage<ReadNotificationGroupUsersRequests> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 26);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupUserRequest\n */\nexport type UpdateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n\n /**\n * @generated from field: string notification_group_id = 2;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 3;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupUserRequest.\n * Use `create(UpdateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupUserRequestSchema: GenMessage<UpdateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 27);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupUserRequest\n */\nexport type DeleteNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupUserRequest.\n * Use `create(DeleteNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupUserRequestSchema: GenMessage<DeleteNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 28);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse\n */\nexport type ReadNotificationGroupUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result success = 1;\n */\n value: ReadNotificationGroupUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.\n * Use `create(ReadNotificationGroupUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponseSchema: GenMessage<ReadNotificationGroupUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\n */\nexport type ReadNotificationGroupUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result.\n * Use `create(ReadNotificationGroupUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponse_ResultSchema: GenMessage<ReadNotificationGroupUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse\n */\nexport type NotificationGroupUserResponse = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupUserResponse.Result success = 1;\n */\n value: NotificationGroupUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.\n * Use `create(NotificationGroupUserResponseSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponseSchema: GenMessage<NotificationGroupUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse.Result\n */\nexport type NotificationGroupUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.Result.\n * Use `create(NotificationGroupUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponse_ResultSchema: GenMessage<NotificationGroupUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30, 0);\n\n/**\n * Counters for one channel of one message. `recipients` = deliveries created\n * for the channel; `delivered` and `opened` stay 0 where the channel has no\n * such signal (e-mail delivered needs the provider webhook; opens are approximate).\n *\n * @generated from message dashboard.notifications.v1.ChannelStats\n */\nexport type ChannelStats = Message<\"dashboard.notifications.v1.ChannelStats\"> & {\n /**\n * @generated from field: int32 recipients = 1;\n */\n recipients: number;\n\n /**\n * @generated from field: int32 sent = 2;\n */\n sent: number;\n\n /**\n * @generated from field: int32 delivered = 3;\n */\n delivered: number;\n\n /**\n * @generated from field: int32 opened = 4;\n */\n opened: number;\n\n /**\n * @generated from field: int32 failed = 5;\n */\n failed: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ChannelStats.\n * Use `create(ChannelStatsSchema)` to create a new message.\n */\nexport const ChannelStatsSchema: GenMessage<ChannelStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 31);\n\n/**\n * @generated from message dashboard.notifications.v1.MessageDeliveryStats\n */\nexport type MessageDeliveryStats = Message<\"dashboard.notifications.v1.MessageDeliveryStats\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats email = 1;\n */\n email?: ChannelStats | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats mobile = 2;\n */\n mobile?: ChannelStats | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.ChannelStats sms = 3;\n */\n sms?: ChannelStats | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.MessageDeliveryStats.\n * Use `create(MessageDeliveryStatsSchema)` to create a new message.\n */\nexport const MessageDeliveryStatsSchema: GenMessage<MessageDeliveryStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 32);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessage\n */\nexport type NotificationMessage = Message<\"dashboard.notifications.v1.NotificationMessage\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: optional string open_url = 15;\n */\n openUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp cancelled_at = 16;\n */\n cancelledAt?: Timestamp | undefined;\n\n /**\n * Filled on list rows of sent / in-progress / error messages.\n *\n * @generated from field: optional dashboard.notifications.v1.MessageDeliveryStats stats = 17;\n */\n stats?: MessageDeliveryStats | undefined;\n\n /**\n * Rich body of the e-mail (sanitized HTML from the composer's editor).\n * Absent = the e-mail uses `message`, like push.\n *\n * @generated from field: optional string email_body_html = 18;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessage.\n * Use `create(NotificationMessageSchema)` to create a new message.\n */\nexport const NotificationMessageSchema: GenMessage<NotificationMessage> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 33);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageRequest\n */\nexport type CreateNotificationMessageRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 1;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 2;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 3;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 4;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 5;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 6;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: optional string open_url = 13;\n */\n openUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 7;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 8;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 9;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 10;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 11;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 12;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * Rich e-mail body (HTML); absent or empty = the e-mail uses `message`.\n *\n * @generated from field: optional string email_body_html = 14;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageRequest.\n * Use `create(CreateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageRequestSchema: GenMessage<CreateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 34);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesRequest\n */\nexport type GetSentNotificationMessagesRequest = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 2;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 3;\n */\n endTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional bool include_export_data = 4;\n */\n includeExportData?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesRequest.\n * Use `create(GetSentNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesRequestSchema: GenMessage<GetSentNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 35);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse\n */\nexport type GetSentNotificationMessagesResponse = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetSentNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result success = 1;\n */\n value: GetSentNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.\n * Use `create(GetSentNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponseSchema: GenMessage<GetSentNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\n */\nexport type GetSentNotificationMessagesResponse_NotificationMessageStats = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\"> & {\n /**\n * @generated from field: int32 sent = 1;\n */\n sent: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats.\n * Use `create(GetSentNotificationMessagesResponse_NotificationMessageStatsSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_NotificationMessageStatsSchema: GenMessage<GetSentNotificationMessagesResponse_NotificationMessageStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\n */\nexport type GetSentNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats stats = 2;\n */\n stats?: GetSentNotificationMessagesResponse_NotificationMessageStats | undefined;\n\n /**\n * @generated from field: optional bytes export_data = 3;\n */\n exportData?: Uint8Array | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result.\n * Use `create(GetSentNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_ResultSchema: GenMessage<GetSentNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesRequest\n */\nexport type ReadNotificationMessagesRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * Paging of the list (ignored when notification_message_id is set). Without\n * page_size the list is the newest 100 messages, as before.\n * page_size is capped at 100.\n *\n * @generated from field: optional int32 page_size = 2;\n */\n pageSize?: number | undefined;\n\n /**\n * The next_page_token of the previous page; empty for the first one.\n *\n * @generated from field: optional string page_token = 3;\n */\n pageToken?: string | undefined;\n\n /**\n * Only messages in these statuses; empty = every status.\n *\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessageStatus statuses = 4;\n */\n statuses: NotificationMessageStatus[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesRequest.\n * Use `create(ReadNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesRequestSchema: GenMessage<ReadNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 37);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageRequest\n */\nexport type UpdateNotificationMessageRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string | undefined;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string | undefined;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string | undefined;\n\n /**\n * Absent = unchanged (previously every update cleared it).\n *\n * @generated from field: optional string open_url = 15;\n */\n openUrl?: string | undefined;\n\n /**\n * Absent = unchanged; an empty string clears it (the e-mail uses `message` again).\n *\n * @generated from field: optional string email_body_html = 16;\n */\n emailBodyHtml?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageRequest.\n * Use `create(UpdateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageRequestSchema: GenMessage<UpdateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 38);\n\n/**\n * @generated from message dashboard.notifications.v1.CancelNotificationMessageRequest\n */\nexport type CancelNotificationMessageRequest = Message<\"dashboard.notifications.v1.CancelNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CancelNotificationMessageRequest.\n * Use `create(CancelNotificationMessageRequestSchema)` to create a new message.\n */\nexport const CancelNotificationMessageRequestSchema: GenMessage<CancelNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 39);\n\n/**\n * @generated from message dashboard.notifications.v1.DuplicateNotificationMessageRequest\n */\nexport type DuplicateNotificationMessageRequest = Message<\"dashboard.notifications.v1.DuplicateNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DuplicateNotificationMessageRequest.\n * Use `create(DuplicateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const DuplicateNotificationMessageRequestSchema: GenMessage<DuplicateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 40);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest\n */\nexport type RetryFailedNotificationMessageJobsRequest = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsRequest.\n * Use `create(RetryFailedNotificationMessageJobsRequestSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsRequestSchema: GenMessage<RetryFailedNotificationMessageJobsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 41);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse\n */\nexport type RetryFailedNotificationMessageJobsResponse = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result success = 1;\n */\n value: RetryFailedNotificationMessageJobsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.\n * Use `create(RetryFailedNotificationMessageJobsResponseSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsResponseSchema: GenMessage<RetryFailedNotificationMessageJobsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 42);\n\n/**\n * @generated from message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result\n */\nexport type RetryFailedNotificationMessageJobsResponse_Result = Message<\"dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result\"> & {\n /**\n * Deliveries put back in the queue.\n *\n * @generated from field: int32 requeued = 1;\n */\n requeued: number;\n\n /**\n * Failed deliveries that already used all retries.\n *\n * @generated from field: int32 exhausted = 2;\n */\n exhausted: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.RetryFailedNotificationMessageJobsResponse.Result.\n * Use `create(RetryFailedNotificationMessageJobsResponse_ResultSchema)` to create a new message.\n */\nexport const RetryFailedNotificationMessageJobsResponse_ResultSchema: GenMessage<RetryFailedNotificationMessageJobsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 42, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportRequest\n */\nexport type GetNotificationMessageReportRequest = Message<\"dashboard.notifications.v1.GetNotificationMessageReportRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportRequest.\n * Use `create(GetNotificationMessageReportRequestSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportRequestSchema: GenMessage<GetNotificationMessageReportRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 43);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportResponse\n */\nexport type GetNotificationMessageReportResponse = Message<\"dashboard.notifications.v1.GetNotificationMessageReportResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationMessageReportResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationMessageReportResponse.Result success = 1;\n */\n value: GetNotificationMessageReportResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportResponse.\n * Use `create(GetNotificationMessageReportResponseSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportResponseSchema: GenMessage<GetNotificationMessageReportResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationMessageReportResponse.Result\n */\nexport type GetNotificationMessageReportResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationMessageReportResponse.Result\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessage notification_message = 1;\n */\n notificationMessage?: NotificationMessage | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.MessageDeliveryStats stats = 2;\n */\n stats?: MessageDeliveryStats | undefined;\n\n /**\n * Distinct recipients (a person reached on two channels counts once).\n *\n * @generated from field: int32 recipients = 3;\n */\n recipients: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationMessageReportResponse.Result.\n * Use `create(GetNotificationMessageReportResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationMessageReportResponse_ResultSchema: GenMessage<GetNotificationMessageReportResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageRequest\n */\nexport type DeleteNotificationMessageRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageRequest.\n * Use `create(DeleteNotificationMessageRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageRequestSchema: GenMessage<DeleteNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 45);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse\n */\nexport type ReadNotificationMessagesResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessagesResponse.Result success = 1;\n */\n value: ReadNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.\n * Use `create(ReadNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponseSchema: GenMessage<ReadNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 46);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\n */\nexport type ReadNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n\n /**\n * Empty on the last page.\n *\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result.\n * Use `create(ReadNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponse_ResultSchema: GenMessage<ReadNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 46, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse\n */\nexport type NotificationMessageResponse = Message<\"dashboard.notifications.v1.NotificationMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageResponse.Result success = 1;\n */\n value: NotificationMessageResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.\n * Use `create(NotificationMessageResponseSchema)` to create a new message.\n */\nexport const NotificationMessageResponseSchema: GenMessage<NotificationMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 47);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse.Result\n */\nexport type NotificationMessageResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.Result.\n * Use `create(NotificationMessageResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageResponse_ResultSchema: GenMessage<NotificationMessageResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 47, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageJobRequest\n */\nexport type CreateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 1;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 2;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string customer_id = 3;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 4;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 5;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 6;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageJobRequest.\n * Use `create(CreateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageJobRequestSchema: GenMessage<CreateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 48);\n\n/**\n * One recipient on one channel.\n *\n * @generated from message dashboard.notifications.v1.NotificationDelivery\n */\nexport type NotificationDelivery = Message<\"dashboard.notifications.v1.NotificationDelivery\"> & {\n /**\n * @generated from field: string notification_delivery_id = 1;\n */\n notificationDeliveryId: string;\n\n /**\n * @generated from field: string notification_message_id = 2;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: string customer_id = 3;\n */\n customerId: string;\n\n /**\n * @generated from field: optional string recipient_name = 4;\n */\n recipientName?: string | undefined;\n\n /**\n * @generated from field: string recipient_email = 5;\n */\n recipientEmail: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationDeliveryChannel channel = 6;\n */\n channel: NotificationDeliveryChannel;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationDeliveryStatus status = 7;\n */\n status: NotificationDeliveryStatus;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp sent_at = 8;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp delivered_at = 9;\n */\n deliveredAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp opened_at = 10;\n */\n openedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional string error_message = 11;\n */\n errorMessage?: string | undefined;\n\n /**\n * @generated from field: int32 open_count = 12;\n */\n openCount: number;\n\n /**\n * @generated from field: int32 attempts = 13;\n */\n attempts: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationDelivery.\n * Use `create(NotificationDeliverySchema)` to create a new message.\n */\nexport const NotificationDeliverySchema: GenMessage<NotificationDelivery> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 49);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsRequest\n */\nexport type ReadNotificationMessageJobsRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsRequest\"> & {\n /**\n * @generated from field: optional string notification_message_job_id = 1;\n */\n notificationMessageJobId?: string | undefined;\n\n /**\n * Filters below apply to `deliveries` (per recipient and channel), which\n * is returned instead of `notification_message_jobs` when a message is given.\n *\n * @generated from field: optional string notification_message_id = 2;\n */\n notificationMessageId?: string | undefined;\n\n /**\n * @generated from field: optional dashboard.notifications.v1.NotificationDeliveryChannel channel = 3;\n */\n channel?: NotificationDeliveryChannel | undefined;\n\n /**\n * @generated from field: optional dashboard.notifications.v1.NotificationDeliveryOutcome outcome = 4;\n */\n outcome?: NotificationDeliveryOutcome | undefined;\n\n /**\n * Matches recipient e-mail and name.\n *\n * @generated from field: optional string search = 5;\n */\n search?: string | undefined;\n\n /**\n * 0-based\n *\n * @generated from field: optional int32 page = 6;\n */\n page?: number | undefined;\n\n /**\n * default 50, max 200\n *\n * @generated from field: optional int32 page_size = 7;\n */\n pageSize?: number | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsRequest.\n * Use `create(ReadNotificationMessageJobsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsRequestSchema: GenMessage<ReadNotificationMessageJobsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 50);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageJobRequest\n */\nexport type UpdateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional string error_message = 4;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageJobRequest.\n * Use `create(UpdateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageJobRequestSchema: GenMessage<UpdateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageJobRequest\n */\nexport type DeleteNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageJobRequest.\n * Use `create(DeleteNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageJobRequestSchema: GenMessage<DeleteNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 52);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse\n */\nexport type ReadNotificationMessageJobsResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessageJobsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result success = 1;\n */\n value: ReadNotificationMessageJobsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.\n * Use `create(ReadNotificationMessageJobsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponseSchema: GenMessage<ReadNotificationMessageJobsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\n */\nexport type ReadNotificationMessageJobsResponse_NotificationMessageJob = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string customer_id = 4;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 5;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 6;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 7;\n */\n errorMessage?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob.\n * Use `create(ReadNotificationMessageJobsResponse_NotificationMessageJobSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_NotificationMessageJobSchema: GenMessage<ReadNotificationMessageJobsResponse_NotificationMessageJob> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\n */\nexport type ReadNotificationMessageJobsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob notification_message_jobs = 1;\n */\n notificationMessageJobs: ReadNotificationMessageJobsResponse_NotificationMessageJob[];\n\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationDelivery deliveries = 2;\n */\n deliveries: NotificationDelivery[];\n\n /**\n * Rows matching the filters, ignoring paging.\n *\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result.\n * Use `create(ReadNotificationMessageJobsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_ResultSchema: GenMessage<ReadNotificationMessageJobsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 53, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse\n */\nexport type NotificationMessageJobResponse = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageJobResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobResponse.Result success = 1;\n */\n value: NotificationMessageJobResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.\n * Use `create(NotificationMessageJobResponseSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponseSchema: GenMessage<NotificationMessageJobResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 54);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse.Result\n */\nexport type NotificationMessageJobResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.Result.\n * Use `create(NotificationMessageJobResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponse_ResultSchema: GenMessage<NotificationMessageJobResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 54, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.User\n */\nexport type User = Message<\"dashboard.notifications.v1.User\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string | undefined;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string | undefined;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: optional bool is_app_installed = 9;\n */\n isAppInstalled?: boolean | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.User.\n * Use `create(UserSchema)` to create a new message.\n */\nexport const UserSchema: GenMessage<User> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 55);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationProductsRequest\n */\nexport type ReadNotificationProductsRequest = Message<\"dashboard.notifications.v1.ReadNotificationProductsRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationProductsRequest.\n * Use `create(ReadNotificationProductsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationProductsRequestSchema: GenMessage<ReadNotificationProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 56);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailRequest\n */\nexport type PreviewNotificationMessageEmailRequest = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailRequest\"> & {\n /**\n * @generated from field: string title = 1;\n */\n title: string;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string | undefined;\n\n /**\n * @generated from field: optional string email_body_html = 3;\n */\n emailBodyHtml?: string | undefined;\n\n /**\n * Storage key or absolute URL, like `image_url` of a message.\n *\n * @generated from field: optional string image_url = 4;\n */\n imageUrl?: string | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailRequest.\n * Use `create(PreviewNotificationMessageEmailRequestSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailRequestSchema: GenMessage<PreviewNotificationMessageEmailRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 57);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse\n */\nexport type PreviewNotificationMessageEmailResponse = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result success = 1;\n */\n value: PreviewNotificationMessageEmailResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.\n * Use `create(PreviewNotificationMessageEmailResponseSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailResponseSchema: GenMessage<PreviewNotificationMessageEmailResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 58);\n\n/**\n * @generated from message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result\n */\nexport type PreviewNotificationMessageEmailResponse_Result = Message<\"dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result\"> & {\n /**\n * @generated from field: string subject = 1;\n */\n subject: string;\n\n /**\n * @generated from field: string preheader = 2;\n */\n preheader: string;\n\n /**\n * @generated from field: string html = 3;\n */\n html: string;\n\n /**\n * @generated from field: string text = 4;\n */\n text: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.PreviewNotificationMessageEmailResponse.Result.\n * Use `create(PreviewNotificationMessageEmailResponse_ResultSchema)` to create a new message.\n */\nexport const PreviewNotificationMessageEmailResponse_ResultSchema: GenMessage<PreviewNotificationMessageEmailResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 58, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountRequest\n */\nexport type GetProjectedRecipientCountRequest = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountRequest\"> & {\n /**\n * @generated from field: repeated string groups = 1;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 2;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 3;\n */\n users: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountRequest.\n * Use `create(GetProjectedRecipientCountRequestSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountRequestSchema: GenMessage<GetProjectedRecipientCountRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 59);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountResponse\n */\nexport type GetProjectedRecipientCountResponse = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountResponse\"> & {\n /**\n * @generated from field: int32 total = 1;\n */\n total: number;\n\n /**\n * @generated from field: int32 email_count = 2;\n */\n emailCount: number;\n\n /**\n * @generated from field: int32 sms_count = 3;\n */\n smsCount: number;\n\n /**\n * @generated from field: int32 mobile_count = 4;\n */\n mobileCount: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountResponse.\n * Use `create(GetProjectedRecipientCountResponseSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountResponseSchema: GenMessage<GetProjectedRecipientCountResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 60);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsRequest\n */\nexport type GetNotificationStatsRequest = Message<\"dashboard.notifications.v1.GetNotificationStatsRequest\"> & {\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp | undefined;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp | undefined;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsRequest.\n * Use `create(GetNotificationStatsRequestSchema)` to create a new message.\n */\nexport const GetNotificationStatsRequestSchema: GenMessage<GetNotificationStatsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 61);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse\n */\nexport type GetNotificationStatsResponse = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationStatsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.Result success = 1;\n */\n value: GetNotificationStatsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.\n * Use `create(GetNotificationStatsResponseSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponseSchema: GenMessage<GetNotificationStatsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\n */\nexport type GetNotificationStatsResponse_StatusBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\"> & {\n /**\n * @generated from field: int32 drafts = 1;\n */\n drafts: number;\n\n /**\n * @generated from field: int32 planned = 2;\n */\n planned: number;\n\n /**\n * @generated from field: int32 in_progress = 3;\n */\n inProgress: number;\n\n /**\n * @generated from field: int32 sent = 4;\n */\n sent: number;\n\n /**\n * @generated from field: int32 error = 5;\n */\n error: number;\n\n /**\n * @generated from field: int32 cancelled = 6;\n */\n cancelled: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown.\n * Use `create(GetNotificationStatsResponse_StatusBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_StatusBreakdownSchema: GenMessage<GetNotificationStatsResponse_StatusBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\n */\nexport type GetNotificationStatsResponse_ChannelBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\"> & {\n /**\n * @generated from field: int32 mobile = 1;\n */\n mobile: number;\n\n /**\n * @generated from field: int32 email = 2;\n */\n email: number;\n\n /**\n * @generated from field: int32 sms = 3;\n */\n sms: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown.\n * Use `create(GetNotificationStatsResponse_ChannelBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ChannelBreakdownSchema: GenMessage<GetNotificationStatsResponse_ChannelBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\n */\nexport type GetNotificationStatsResponse_TimelinePoint = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\"> & {\n /**\n * @generated from field: string date = 1;\n */\n date: string;\n\n /**\n * @generated from field: int32 count = 2;\n */\n count: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint.\n * Use `create(GetNotificationStatsResponse_TimelinePointSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_TimelinePointSchema: GenMessage<GetNotificationStatsResponse_TimelinePoint> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.Result\n */\nexport type GetNotificationStatsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.Result\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown status_breakdown = 1;\n */\n statusBreakdown?: GetNotificationStatsResponse_StatusBreakdown | undefined;\n\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown channel_breakdown = 2;\n */\n channelBreakdown?: GetNotificationStatsResponse_ChannelBreakdown | undefined;\n\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint timeline = 3;\n */\n timeline: GetNotificationStatsResponse_TimelinePoint[];\n\n /**\n * @generated from field: int32 total_subscribers = 4;\n */\n totalSubscribers: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.Result.\n * Use `create(GetNotificationStatsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ResultSchema: GenMessage<GetNotificationStatsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 62, 3);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageStatus\n */\nexport enum NotificationMessageStatus {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: PLANNED = 1;\n */\n PLANNED = 1,\n\n /**\n * @generated from enum value: IN_PROGRESS = 2;\n */\n IN_PROGRESS = 2,\n\n /**\n * @generated from enum value: SENT = 3;\n */\n SENT = 3,\n\n /**\n * @generated from enum value: ERROR = 4;\n */\n ERROR = 4,\n\n /**\n * @generated from enum value: CANCELLED = 5;\n */\n CANCELLED = 5,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageStatus.\n */\nexport const NotificationMessageStatusSchema: GenEnum<NotificationMessageStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageJobStatus\n */\nexport enum NotificationMessageJobStatus {\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_TODO = 0;\n */\n TODO = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_IN_PROGRESS = 1;\n */\n IN_PROGRESS = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_SENT = 2;\n */\n SENT = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_ERROR = 3;\n */\n ERROR = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageJobStatus.\n */\nexport const NotificationMessageJobStatusSchema: GenEnum<NotificationMessageJobStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryChannel\n */\nexport enum NotificationDeliveryChannel {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_EMAIL = 1;\n */\n EMAIL = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_MOBILE = 2;\n */\n MOBILE = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_CHANNEL_SMS = 3;\n */\n SMS = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryChannel.\n */\nexport const NotificationDeliveryChannelSchema: GenEnum<NotificationDeliveryChannel> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryStatus\n */\nexport enum NotificationDeliveryStatus {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_PENDING = 1;\n */\n PENDING = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_SENT = 2;\n */\n SENT = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_FAILED = 3;\n */\n FAILED = 3,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_STATUS_SKIPPED = 4;\n */\n SKIPPED = 4,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryStatus.\n */\nexport const NotificationDeliveryStatusSchema: GenEnum<NotificationDeliveryStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 3);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationDeliveryOutcome\n */\nexport enum NotificationDeliveryOutcome {\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_ANY = 0;\n */\n ANY = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_SENT = 1;\n */\n SENT = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_FAILED = 2;\n */\n FAILED = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_DELIVERY_OUTCOME_OPENED = 3;\n */\n OPENED = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationDeliveryOutcome.\n */\nexport const NotificationDeliveryOutcomeSchema: GenEnum<NotificationDeliveryOutcome> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 4);\n\n/**\n * @generated from enum dashboard.notifications.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_NOT_FOUND = 2;\n */\n NOTIFICATION_SETTING_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_SETTING_FAILED = 3;\n */\n CREATE_NOTIFICATION_SETTING_FAILED = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_SETTING_FAILED = 4;\n */\n UPDATE_NOTIFICATION_SETTING_FAILED = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_SETTING_FAILED = 5;\n */\n DELETE_NOTIFICATION_SETTING_FAILED = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_NOT_FOUND = 6;\n */\n NOTIFICATION_GROUP_NOT_FOUND = 6,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUPS_NOT_FOUND = 7;\n */\n NOTIFICATION_GROUPS_NOT_FOUND = 7,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_FAILED = 8;\n */\n CREATE_NOTIFICATION_GROUP_FAILED = 8,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_FAILED = 9;\n */\n UPDATE_NOTIFICATION_GROUP_FAILED = 9,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_FAILED = 10;\n */\n DELETE_NOTIFICATION_GROUP_FAILED = 10,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_NOT_FOUND = 11;\n */\n NOTIFICATION_USER_NOT_FOUND = 11,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USERS_NOT_FOUND = 12;\n */\n NOTIFICATION_USERS_NOT_FOUND = 12,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_USER_FAILED = 13;\n */\n CREATE_NOTIFICATION_USER_FAILED = 13,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_USER_FAILED = 14;\n */\n UPDATE_NOTIFICATION_USER_FAILED = 14,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_USER_FAILED = 15;\n */\n DELETE_NOTIFICATION_USER_FAILED = 15,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_USER_NOT_FOUND = 16;\n */\n NOTIFICATION_GROUP_USER_NOT_FOUND = 16,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_USER_FAILED = 17;\n */\n CREATE_NOTIFICATION_GROUP_USER_FAILED = 17,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18;\n */\n UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_USER_FAILED = 19;\n */\n DELETE_NOTIFICATION_GROUP_USER_FAILED = 19,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_FOUND = 20;\n */\n NOTIFICATION_MESSAGE_NOT_FOUND = 20,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGES_NOT_FOUND = 21;\n */\n NOTIFICATION_MESSAGES_NOT_FOUND = 21,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_FAILED = 22;\n */\n CREATE_NOTIFICATION_MESSAGE_FAILED = 22,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_FAILED = 23;\n */\n UPDATE_NOTIFICATION_MESSAGE_FAILED = 23,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_FAILED = 24;\n */\n DELETE_NOTIFICATION_MESSAGE_FAILED = 24,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25;\n */\n NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26;\n */\n NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27;\n */\n CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28;\n */\n UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29;\n */\n DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_ALREADY_EXIST = 30;\n */\n NOTIFICATION_SETTING_ALREADY_EXIST = 30,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31;\n */\n NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_ALREADY_EXIST = 32;\n */\n NOTIFICATION_USER_ALREADY_EXIST = 32,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_ALREADY_EXIST = 33;\n */\n NOTIFICATION_GROUP_ALREADY_EXIST = 33,\n\n /**\n * Cancel is only possible while the message is planned.\n *\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_CANCELLABLE = 34;\n */\n NOTIFICATION_MESSAGE_NOT_CANCELLABLE = 34,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CANCEL_NOTIFICATION_MESSAGE_FAILED = 35;\n */\n CANCEL_NOTIFICATION_MESSAGE_FAILED = 35,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_RETRY_NOTIFICATION_MESSAGE_FAILED = 36;\n */\n RETRY_NOTIFICATION_MESSAGE_FAILED = 36,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DUPLICATE_NOTIFICATION_MESSAGE_FAILED = 37;\n */\n DUPLICATE_NOTIFICATION_MESSAGE_FAILED = 37,\n\n /**\n * Already sent, in progress or cancelled: content and status are locked.\n *\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_EDITABLE = 38;\n */\n NOTIFICATION_MESSAGE_NOT_EDITABLE = 38,\n\n /**\n * The e-mails would exceed what is left of the plan's Bitsnap e-mail quota\n * (Podstawowy / Klasyczny); Profesjonalny is charged instead and never refused.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_QUOTA_EXCEEDED = 39;\n */\n EMAIL_QUOTA_EXCEEDED = 39,\n\n /**\n * The campaign e-mail could not be rendered for the preview.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_PREVIEW_FAILED = 40;\n */\n EMAIL_PREVIEW_FAILED = 40,\n\n /**\n * The rich e-mail body is over its length limit.\n *\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_BODY_TOO_LONG = 41;\n */\n EMAIL_BODY_TOO_LONG = 41,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 5);\n\n/**\n * @generated from service dashboard.notifications.v1.NotificationsService\n */\nexport const NotificationsService: GenService<{\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\n createNotificationSetting: {\n methodKind: \"unary\";\n input: typeof CreateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\n readNotificationSetting: {\n methodKind: \"unary\";\n input: typeof ReadNotificationSettingRequestSchema;\n output: typeof ReadNotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\n updateNotificationSetting: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\n deleteNotificationSetting: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\n createNotificationGroup: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\n readNotificationGroups: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupsRequestSchema;\n output: typeof ReadNotificationGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\n updateNotificationGroup: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\n deleteNotificationGroup: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\n createNotificationUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\n readNotificationUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationUsersRequestSchema;\n output: typeof ReadNotificationUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\n updateNotificationUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\n deleteNotificationUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\n createNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\n readNotificationGroupUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupUsersRequestsSchema;\n output: typeof ReadNotificationGroupUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\n updateNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\n deleteNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\n createNotificationMessage: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\n readNotificationMessages: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessagesRequestSchema;\n output: typeof ReadNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\n getSentNotificationMessages: {\n methodKind: \"unary\";\n input: typeof GetSentNotificationMessagesRequestSchema;\n output: typeof GetSentNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\n updateNotificationMessage: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\n deleteNotificationMessage: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * Planned -> cancelled, atomically (a message the worker already claimed cannot be cancelled).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CancelNotificationMessage\n */\n cancelNotificationMessage: {\n methodKind: \"unary\";\n input: typeof CancelNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * Re-queues only the failed deliveries of a message (a delivery is retried at most 3 times).\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.RetryFailedNotificationMessageJobs\n */\n retryFailedNotificationMessageJobs: {\n methodKind: \"unary\";\n input: typeof RetryFailedNotificationMessageJobsRequestSchema;\n output: typeof RetryFailedNotificationMessageJobsResponseSchema;\n },\n /**\n * Copies a message (content, audience, channels) into a new draft without a send time.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DuplicateNotificationMessage\n */\n duplicateNotificationMessage: {\n methodKind: \"unary\";\n input: typeof DuplicateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationMessageReport\n */\n getNotificationMessageReport: {\n methodKind: \"unary\";\n input: typeof GetNotificationMessageReportRequestSchema;\n output: typeof GetNotificationMessageReportResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\n createNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\n readNotificationMessageJobs: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessageJobsRequestSchema;\n output: typeof ReadNotificationMessageJobsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\n updateNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\n deleteNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\n readNotificationProducts: {\n methodKind: \"unary\";\n input: typeof ReadNotificationProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\n getNotificationUserSettings: {\n methodKind: \"unary\";\n input: typeof GetNotificationUserSettingsRequestSchema;\n output: typeof GetNotificationUserSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\n verifyUserEmail: {\n methodKind: \"unary\";\n input: typeof VerifyUserEmailRequestSchema;\n output: typeof VerifyUserEmailResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\n getUserGroups: {\n methodKind: \"unary\";\n input: typeof GetUserGroupsRequestSchema;\n output: typeof GetUserGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\n updateUserGroups: {\n methodKind: \"unary\";\n input: typeof UpdateUserGroupsRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\n getProjectedRecipientCount: {\n methodKind: \"unary\";\n input: typeof GetProjectedRecipientCountRequestSchema;\n output: typeof GetProjectedRecipientCountResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\n getNotificationStats: {\n methodKind: \"unary\";\n input: typeof GetNotificationStatsRequestSchema;\n output: typeof GetNotificationStatsResponseSchema;\n },\n /**\n * Renders the campaign e-mail of an unsaved message with the real template\n * (shop branding, sanitized rich body). Persists and sends nothing.\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.PreviewNotificationMessageEmail\n */\n previewNotificationMessageEmail: {\n methodKind: \"unary\";\n input: typeof PreviewNotificationMessageEmailRequestSchema;\n output: typeof PreviewNotificationMessageEmailResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_notifications, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file dashboard/v1/product.proto (package dashboard.product.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Empty, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/product.proto.\n */\nexport const file_dashboard_v1_product: GenFile = /*@__PURE__*/\n fileDesc(\"ChpkYXNoYm9hcmQvdjEvcHJvZHVjdC5wcm90bxIUZGFzaGJvYXJkLnByb2R1Y3QudjEiNAoeR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkibAobU2V0R3Vlc3RDYXRhbG9nRW50cnlSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMcHJvZHVjdF90eXBlGAIgASgJEg8KB2VuYWJsZWQYAyABKAgSEgoKc29ydF9vcmRlchgEIAEoBSL3AQofR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRISCgpjYW5fbWFuYWdlGAEgASgIEh0KFWd1ZXN0X2NhdGFsb2dfZW5hYmxlZBgCIAEoCBI4CgdlbnRyaWVzGAMgAygLMicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR3Vlc3RDYXRhbG9nRW50cnkSHQoVYXZhaWxhYmxlX3Byb2R1Y3RfaWRzGAQgAygJEkgKD3Byb2R1Y3Rfb3B0aW9ucxgFIAMoCzIvLmRhc2hib2FyZC5wcm9kdWN0LnYxLkd1ZXN0Q2F0YWxvZ1Byb2R1Y3RPcHRpb24iRQoZR3Vlc3RDYXRhbG9nUHJvZHVjdE9wdGlvbhISCgpwcm9kdWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSJ+ChFHdWVzdENhdGFsb2dFbnRyeRISCgpwcm9kdWN0X2lkGAEgASgJEhQKDHByb2R1Y3RfdHlwZRgCIAEoCRIPCgdlbmFibGVkGAMgASgIEhIKCnNvcnRfb3JkZXIYBCABKAUSGgoSZWxpZ2liaWxpdHlfcmVhc29uGAUgASgJIisKFUFyY2hpdmVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIi0KF0R1cGxpY2F0ZVByb2R1Y3RSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiOQoYRHVwbGljYXRlUHJvZHVjdFJlc3BvbnNlEh0KFWR1cGxpY2F0ZWRfcHJvZHVjdF9pZBgBIAEoCSI3CiBFeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBITCgtwcm9kdWN0X2lkcxgBIAMoCSK6AQohRXhjaGFuZ2VQcm9kdWN0SURzVG9OYW1lc1Jlc3BvbnNlEmAKDXByb2R1Y3RfbmFtZXMYASADKAsySS5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVzcG9uc2UuUHJvZHVjdE5hbWVzRW50cnkaMwoRUHJvZHVjdE5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJ5ChtHZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARIXCgp2YXJpYW50X2lkGAMgASgJSAGIAQFCCQoHX3NlYXJjaEINCgtfdmFyaWFudF9pZCLRAQocR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZRJJCgdtZW1iZXJzGAEgAygLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZS5WYWx1ZRpmCgVWYWx1ZRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIzCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19jcmVhdGVkX2F0ImQKF0dpdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoKdmFyaWFudF9pZBgCIAEoCUgAiAEBEg0KBWVtYWlsGAMgASgJQg0KC192YXJpYW50X2lkIisKGEdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIicKGVJlbW92ZUFjY2Vzc1RvRmlsZVJlcXVlc3QSCgoCaWQYASABKAkiLQoaUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJkCh9TZW5kVGVzdEVtYWlsV2l0aE1lc3NhZ2VSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhQKDGh0bWxfbWVzc2FnZRgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBQggKBl90aXRsZSIvChlHZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkimQEKGkdldFByb2R1Y3RWYXJpYW50c1Jlc3BvbnNlElAKCHZhcmlhbnRzGAEgAygLMj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2UuU2luZ2xlVmFyaWFudBopCg1TaW5nbGVWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkigwEKKFVwZGF0ZVByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhQKDGh0bWxfbWVzc2FnZRgDIAEoCRISCgV0aXRsZRgEIAEoCUgAiAEBQggKBl90aXRsZSI7CiVHZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiuwIKJkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAadQoHU3VjY2VzcxIUCgdtZXNzYWdlGAEgASgJSACIAQESGQoMaHRtbF9tZXNzYWdlGAIgASgJSAGIAQESEgoFdGl0bGUYAyABKAlIAogBAUIKCghfbWVzc2FnZUIPCg1faHRtbF9tZXNzYWdlQggKBl90aXRsZUIICgZyZXN1bHQiMwodUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSJlCitVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSIgoac2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2UYAiABKAgiVgoqVXBkYXRlUHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMYXVkaW9ib29rX2lkGAIgASgJIj4KKEdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSL5AQopR2V0UHJvZHVjdFNlbmRUaWNrZXRBZnRlclB1cmNoYXNlUmVzcG9uc2USWgoHc3VjY2VzcxgBIAEoCzJHLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlc3BvbnNlLlN1Y2Nlc3NIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABotCgdTdWNjZXNzEiIKGnNlbmRfdGlja2V0X2FmdGVyX3B1cmNoYXNlGAEgASgIQggKBnJlc3VsdCI9CidHZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKfAgooR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaVQoHU3VjY2VzcxIUCgxhdWRpb2Jvb2tfaWQYASABKAkSFwoPYXVkaW9ib29rX3RpdGxlGAIgASgJEhsKE2F1ZGlvYm9va19pbWFnZV91cmwYAyABKAlCCAoGcmVzdWx0IjcKFVNlYXJjaFByb2R1Y3RzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBAUIJCgdfc2VhcmNoIswCChZTZWFyY2hQcm9kdWN0c1Jlc3BvbnNlEkYKB3N1Y2Nlc3MYASABKAsyMy5kYXNoYm9hcmQucHJvZHVjdC52MS5TZWFyY2hQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGk8KDVNpbmdsZVByb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIWCglpbWFnZV91cmwYAyABKAlIAIgBAUIMCgpfaW1hZ2VfdXJsGlYKBlJlc3VsdBJMCghwcm9kdWN0cxgBIAMoCzI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2UuU2luZ2xlUHJvZHVjdEIICgZyZXN1bHQiNQofR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJImAKIEdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEjwKCGFydGljbGVzGAEgAygLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiiAEKFFByb2R1Y3RCb3VnaHRBcnRpY2xlEgoKAmlkGAEgASgJEhIKCnByb2R1Y3RfaWQYAiABKAkSFAoHY29udGVudBgDIAEoCUgAiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9jb250ZW50ImAKIVVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlUmVxdWVzdBI7CgdhcnRpY2xlGAEgASgLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiJwoRR2V0UHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKBAgoSR2V0UHJvZHVjdFJlc3BvbnNlEjIKB3Byb2R1Y3QYASABKAsyHy5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjJIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABJGCgpzZWxsX3N0YXRzGAMgAygLMjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlc3BvbnNlLlNlbGxTdGF0cxosCglTZWxsU3RhdHMSEQoJcHJvZHVjdElEGAEgASgJEgwKBHNvbGQYAiABKAVCCAoGcmVzdWx0InIKHENyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlcXVlc3QSMAoHcHJvZHVjdBgBIAEoCzIfLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMhIgChhpc19kZXNjcmlwdGlvbl9kaWZmZXJlbnQYAiABKAgiTQoeVXBkYXRlUHJvZHVjdFVuaXF1ZVNsdWdSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoPbmV3X3VuaXF1ZV9zbHVnGAIgASgJIqULCglQcm9kdWN0VjISDwoCaWQYASABKAlIAIgBARITCgt1bmlxdWVfc2x1ZxgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjYKBnN0YXR1cxgEIAEoDjImLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMi5TdGF0dXMSGQoMaXNfcmVjdXJyaW5nGAUgASgISAGIAQESNwoJcmVjdXJyaW5nGAYgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSAKIAQESDAoEbmFtZRgHIAEoCRIYCgtkZXNjcmlwdGlvbhgIIAEoCUgDiAEBEh0KEGh0bWxfZGVzY3JpcHRpb24YCSABKAlIBIgBARIeChFzaG9ydF9kZXNjcmlwdGlvbhgKIAEoCUgFiAEBEhkKDHByaWNlX2Ftb3VudBgLIAEoBUgGiAEBEhsKDnByaWNlX2N1cnJlbmN5GAwgASgJSAeIAQESEAoDdGF4GA0gASgCSAiIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GA4gASgFSAmIAQESPwoIZmVhdHVyZXMYDyADKAsyLS5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjIuRmVhdHVyZXNFbnRyeRIOCgZpbWFnZXMYECADKAkSHAoPdGh1bWJuYWlsX2ltYWdlGBEgASgJSAqIAQESFwoKbWFpbl9pbWFnZRgSIAEoCUgLiAEBEi8KCHZhcmlhbnRzGBMgAygLMh0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudBInChpzZW5kX3RpY2tldF9hZnRlcl9wdXJjaGFzZRgUIAEoCEgMiAEBEicKGmlzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0GBUgASgISA2IAQESGwoOaXNfZGVsaXZlcmFibGUYGCABKAhIDogBARIhChRmb3JjZV9tYW51YWxfcGF5bWVudBgdIAEoCEgPiAEBEhkKDHdlaWdodF9ncmFtcxgeIAEoBUgQiAEBEh4KEXdpZHRoX21pbGxpbWV0ZXJzGB8gASgFSBGIAQESHwoSaGVpZ2h0X21pbGxpbWV0ZXJzGCAgASgFSBKIAQESEgoKY3JlYXRlZF9hdBgZIAEoAxISCgp1cGRhdGVkX2F0GBogASgDEhcKCmRlbGV0ZWRfYXQYGyABKANIE4gBARIVCghhcmNoaXZlZBgcIAEoCEgUiAEBEhAKCHJldmlzaW9uGCEgASgFGi8KDUZlYXR1cmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIzCgZTdGF0dXMSCQoFRFJBRlQQABIPCgtVTlBVQkxJU0hFRBABEg0KCVBVQkxJU0hFRBACQgUKA19pZEIPCg1faXNfcmVjdXJyaW5nQgwKCl9yZWN1cnJpbmdCDgoMX2Rlc2NyaXB0aW9uQhMKEV9odG1sX2Rlc2NyaXB0aW9uQhQKEl9zaG9ydF9kZXNjcmlwdGlvbkIPCg1fcHJpY2VfYW1vdW50QhEKD19wcmljZV9jdXJyZW5jeUIGCgRfdGF4QhUKE19hdmFpbGFibGVfcXVhbnRpdHlCEgoQX3RodW1ibmFpbF9pbWFnZUINCgtfbWFpbl9pbWFnZUIdChtfc2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2VCHQobX2lzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0QhEKD19pc19kZWxpdmVyYWJsZUIXChVfZm9yY2VfbWFudWFsX3BheW1lbnRCDwoNX3dlaWdodF9ncmFtc0IUChJfd2lkdGhfbWlsbGltZXRlcnNCFQoTX2hlaWdodF9taWxsaW1ldGVyc0INCgtfZGVsZXRlZF9hdEILCglfYXJjaGl2ZWQiuwMKCVJlY3VycmluZxI6Cg1iaWxsaW5nUGVyaW9kGAEgASgOMiMuZGFzaGJvYXJkLnByb2R1Y3QudjEuQmlsbGluZ1BlcmlvZBIXCgp0cmlhbF9kYXlzGAIgASgFSACIAQESHwoSbnVtYmVyX29mX3BheW1lbnRzGAMgASgFSAGIAQESMQokY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzGAQgASgISAKIAQESNAoncmVtb3ZlX2FjY2Vzc19mb3JfY2FuY2VsbGVkX3N1YnNjcmliZXJzGAUgASgISAOIAQESLgohc2hvdWxkX3NlbmRfdHJpYWxfcGVyaW9kX3JlbWluZGVyGAYgASgISASIAQFCDQoLX3RyaWFsX2RheXNCFQoTX251bWJlcl9vZl9wYXltZW50c0InCiVfY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzQioKKF9yZW1vdmVfYWNjZXNzX2Zvcl9jYW5jZWxsZWRfc3Vic2NyaWJlcnNCJAoiX3Nob3VsZF9zZW5kX3RyaWFsX3BlcmlvZF9yZW1pbmRlciKrAgoPVmFyaWFudERpc2NvdW50EjgKBHR5cGUYASABKA4yKi5kYXNoYm9hcmQucHJvZHVjdC52MS5WYXJpYW50RGlzY291bnQuVHlwZRIOCgZhbW91bnQYAiABKAUSMQoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESDwoCaWQYBCABKAlIAYgBARIPCgdlbmFibGVkGAUgASgIEjMKCnN0YXJ0X2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQEiIQoEVHlwZRIJCgVGSVhFRBAAEg4KClBFUkNFTlRBR0UQAUILCglfZW5kX2RhdGVCBQoDX2lkQg0KC19zdGFydF9kYXRlIt0GCgdWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIWCglpbWFnZV91cmwYBCABKAlIAYgBARIUCgxwcmljZV9hbW91bnQYBSABKAUSFgoOcHJpY2VfY3VycmVuY3kYBiABKAkSEAoDdGF4GAcgASgFSAKIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GAggASgFSAOIAQESNwoJcmVjdXJyaW5nGAkgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSASIAQESGwoOaXNfZGVsaXZlcmFibGUYCiABKAhIBYgBARIhChRsb3dlc3RfcHJpY2VfMzBfZGF5cxgLIAEoBUgGiAEBEjwKCGRpc2NvdW50GAwgASgLMiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudERpc2NvdW50SAeIAQESPgoVZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhwKFHJlZ3VsYXJfcHJpY2VfYW1vdW50GA4gASgFEh4KFmVmZmVjdGl2ZV9wcmljZV9hbW91bnQYDyABKAUSIwoWcmVmZXJlbmNlX3ByaWNlX2Ftb3VudBgQIAEoBUgJiAEBEiMKG3JlZmVyZW5jZV9oaXN0b3J5X2F2YWlsYWJsZRgRIAEoCBIVCg1wcmljZV92ZXJzaW9uGBIgASgDEj0KFG5leHRfcHJpY2VfY2hhbmdlX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaW1hZ2VfdXJsQgYKBF90YXhCFQoTX2F2YWlsYWJsZV9xdWFudGl0eUIMCgpfcmVjdXJyaW5nQhEKD19pc19kZWxpdmVyYWJsZUIXChVfbG93ZXN0X3ByaWNlXzMwX2RheXNCCwoJX2Rpc2NvdW50QhgKFl9lc3RpbWF0ZWRfZGVsaXZlcnlfYXRCGQoXX3JlZmVyZW5jZV9wcmljZV9hbW91bnRCFwoVX25leHRfcHJpY2VfY2hhbmdlX2F0IngKHUNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEhQKCnByb2R1Y3RfaWQYASABKAlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQifAoMQm9vbFJlc3BvbnNlEikKB3N1Y2Nlc3MYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQiIgoPT3BlcmF0aW9uUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgiUAoSR2V0UHJvZHVjdHNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhEKBHR5cGUYAiABKAlIAYgBAUIJCgdfc2VhcmNoQgcKBV90eXBlIrwBChNHZXRQcm9kdWN0c1Jlc3BvbnNlEkMKB3N1Y2Nlc3MYASABKAsyMC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGh0KBlJlc3VsdBITCgtwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQilgEKF0dldFByb2R1Y3RzQnlJZHNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIVCghjdXJyZW5jeRgCIAEoCUgAiAEBEhEKBGxhbmcYAyABKAlIAYgBARIbCg5ncm91cF92YXJpYW50cxgEIAEoCEgCiAEBQgsKCV9jdXJyZW5jeUIHCgVfbGFuZ0IRCg9fZ3JvdXBfdmFyaWFudHMiwQIKGEdldFByb2R1Y3RzQnlJZHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGkQKB1Byb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwcmljZRgDIAEoBRIQCghjdXJyZW5jeRgEIAEoCRpSCgZSZXN1bHQSSAoIcHJvZHVjdHMYASADKAsyNi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c0J5SWRzUmVzcG9uc2UuUHJvZHVjdEIICgZyZXN1bHQi3QEKFUdldFByb2R1Y3RHcmlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhUKCGN1cnJlbmN5GAMgASgJSAGIAQESGwoOZ3JvdXBfdmFyaWFudHMYBCABKAhIAogBARITCgZvZmZzZXQYBSABKAVIA4gBARISCgVsaW1pdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCwoJX2N1cnJlbmN5QhEKD19ncm91cF92YXJpYW50c0IJCgdfb2Zmc2V0QggKBl9saW1pdCLCAQoWR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJGCgdzdWNjZXNzGAEgASgLMjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZS5SZXN1bHRIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABodCgZSZXN1bHQSEwoLcHJvZHVjdF9pZHMYASADKAlCCAoGcmVzdWx0ItYBChpHZXRNYWluUGFnZVByb2R1Y3RzUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESEgoFbGltaXQYAyABKAVIAogBARITCgZvZmZzZXQYBCABKAVIA4gBARIdChBpbmNsdWRlX2FyY2hpdmVkGAUgASgISASIAQFCDQoLX3Byb2plY3RfaWRCCQoHX3NlYXJjaEIICgZfbGltaXRCCQoHX29mZnNldEITChFfaW5jbHVkZV9hcmNoaXZlZCL2AQobR2V0TWFpblBhZ2VQcm9kdWN0c1Jlc3BvbnNlEksKB3N1Y2Nlc3MYASABKAsyOC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaRwoGUmVzdWx0EhMKC3Byb2R1Y3RfaWRzGAEgAygJEhgKC3RvdGFsX2NvdW50GAIgASgFSACIAQFCDgoMX3RvdGFsX2NvdW50QggKBnJlc3VsdCI6CiNHZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBITCgt1bmlxdWVfc2x1ZxgBIAEoCSKXBAokR2V0UHVibGljUHJvZHVjdEJ5VW5pcXVlU2x1Z1Jlc3BvbnNlElQKB3N1Y2Nlc3MYASABKAsyQS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAa1QIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARISCgpwcm9qZWN0X2lkGAMgASgJEgoKAmlkGAQgASgJEgwKBG5hbWUYBSABKAkSHgoRc2hvcnRfZGVzY3JpcHRpb24YBiABKAlIAYgBARIZCgxwcmljZV9hbW91bnQYByABKAVIAogBARIbCg5wcmljZV9jdXJyZW5jeRgIIAEoCUgDiAEBEhcKCm1haW5faW1hZ2UYCSABKAlIBIgBARIcCg90aHVtYm5haWxfaW1hZ2UYCiABKAlIBYgBAUIKCghfbWVzc2FnZUIUChJfc2hvcnRfZGVzY3JpcHRpb25CDwoNX3ByaWNlX2Ftb3VudEIRCg9fcHJpY2VfY3VycmVuY3lCDQoLX21haW5faW1hZ2VCEgoQX3RodW1ibmFpbF9pbWFnZUIICgZyZXN1bHQiYQoaR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtwcm9kdWN0X2lkcxgCIAMoCRIaChJjb250YWluc19yZWN1cnJpbmcYAyABKAgi5QIKG0dldFB1YmxpY0FncmVlbWVudHNSZXNwb25zZRJLCgdzdWNjZXNzGAEgASgLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGisKCUFncmVlbWVudBIMCgRuYW1lGAEgASgJEhAKCHJlcXVpcmVkGAIgASgIGogBCgZSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIUCgdtZXNzYWdlGAIgASgJSACIAQESSwoGcmVzdWx0GAMgAygLMjsuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLkFncmVlbWVudEIKCghfbWVzc2FnZUIICgZyZXN1bHQiPAomR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSLlAQonR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaHgoGUmVzdWx0EhQKDGVwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQiVQopVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIUCgxlcHJvZHVjdF9pZHMYAiADKAkiOgokR2V0TGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiUAoPQWdyZWVtZW50T3B0aW9uEgwKBG5hbWUYASABKAkSEwoLaXNfcmVxdWlyZWQYAiABKAgSEQoEbGluaxgDIAEoCUgAiAEBQgcKBV9saW5rIrUCCiVHZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGnIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARI1CgZyZXN1bHQYAyADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb25CCgoIX21lc3NhZ2VCCAoGcmVzdWx0IngKJ1VwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJEjkKCmFncmVlbWVudHMYAiADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb24iJAoUQ3JlYXRlUHJvZHVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIqChREZWxldGVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIjcKFUdldFByb2R1Y3RCeUlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgoKAmlkGAIgASgJKr0BCg1CaWxsaW5nUGVyaW9kEhgKFEJJTExJTkdfUEVSSU9EX0RBSUxZEAASGQoVQklMTElOR19QRVJJT0RfV0VFS0xZEAESGgoWQklMTElOR19QRVJJT0RfTU9OVEhMWRACEhwKGEJJTExJTkdfUEVSSU9EX1FVQVJURVJMWRADEiAKHEJJTExJTkdfUEVSSU9EX1NFTUlfQU5OVUFMTFkQBBIbChdCSUxMSU5HX1BFUklPRF9BTk5VQUxMWRAFKpUCCg5GYWlsdXJlTWVzc2FnZRIbChdGQUlMVVJFX01FU1NBR0VfVU5LTk9XThAAEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9KRUNUX05PVF9GT1VORBABEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9EVUNUX05PVF9GT1VORBACEiYKIkZBSUxVUkVfTUVTU0FHRV9JTlZBTElEX1BST0RVQ1RfSUQQAxImCiJGQUlMVVJFX01FU1NBR0VfU0xVR19BTFJFQURZX1RBS0VOEAQSKQolRkFJTFVSRV9NRVNTQUdFX0NBTk5PVF9DUkVBVEVfUFJPRFVDVBAFEh0KGUZBSUxVUkVfTUVTU0FHRV9OT19BQ0NFU1MQBjLXJQoNUHJvZHVjdFJvdXRlchKAAQoVQ3JlYXRlT3JVcGRhdGVQcm9kdWN0EjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQ3JlYXRlT3JVcGRhdGVQcm9kdWN0UmVxdWVzdBozLmRhc2hib2FyZC5wcm9kdWN0LnYxLkNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEnEKEER1cGxpY2F0ZVByb2R1Y3QSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5EdXBsaWNhdGVQcm9kdWN0UmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkR1cGxpY2F0ZVByb2R1Y3RSZXNwb25zZRJzChdVcGRhdGVQcm9kdWN0VW5pcXVlU2x1ZxI0LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RVbmlxdWVTbHVnUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJfCgpHZXRQcm9kdWN0EicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2USpAEKIUdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZRI+LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXNwb25zZRKhAQogR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2USPS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlc3BvbnNlEo0BCiRVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2USQS5kYXNoYm9hcmQucHJvZHVjdC52MS5VcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEosBCiNVcGRhdGVQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZRJALmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RBdWRpb2Jvb2tBZnRlclB1cmNoYXNlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJxChZQdWJsaXNoUHJvZHVjdElmTmVlZGVkEjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USmwEKHkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZRI7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QaPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZRKHAQohVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlEj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJ3ChJHZXRQcm9kdWN0VmFyaWFudHMSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2USdQoYU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJrCg5TZWFyY2hQcm9kdWN0cxIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVxdWVzdBosLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2USjAEKGUV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXMSNi5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBo3LmRhc2hib2FyZC5wcm9kdWN0LnYxLkV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXNSZXNwb25zZRKJAQoYR2V0UHJvZHVjdEJvdWdodEFydGljbGVzEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBo2LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEnkKGlVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlEjcuZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEJvdWdodEFydGljbGVSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEmkKF0FkZFByb2R1Y3RCb3VnaHRBcnRpY2xlEiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USfQoUR2V0RmlsZUFjY2Vzc01lbWJlcnMSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QaMi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1Jlc3BvbnNlEnEKEEdpdmVBY2Nlc3NUb0ZpbGUSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5HaXZlQWNjZXNzVG9GaWxlUmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRJ3ChJSZW1vdmVBY2Nlc3NUb0ZpbGUSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5SZW1vdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USYQoOQXJjaGl2ZVByb2R1Y3QSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5BcmNoaXZlUHJvZHVjdFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USYwoQVW5hcmNoaXZlUHJvZHVjdBIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLkFyY2hpdmVQcm9kdWN0UmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJiCgtHZXRQcm9kdWN0cxIoLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVxdWVzdBopLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVzcG9uc2UScQoQR2V0UHJvZHVjdHNCeUlkcxItLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzQnlJZHNSZXF1ZXN0Gi4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlEmsKDkdldFByb2R1Y3RHcmlkEisuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJ6ChNHZXRNYWluUGFnZVByb2R1Y3RzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0TWFpblBhZ2VQcm9kdWN0c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2USlQEKHEdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWcSOS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBo6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWdSZXNwb25zZRJ6ChNHZXRQdWJsaWNBZ3JlZW1lbnRzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNBZ3JlZW1lbnRzUmVzcG9uc2USngEKH0dldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3QSPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVxdWVzdBo9LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXNwb25zZRKMAQoiVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdBI/LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZUVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EpgBCh1HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50cxI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBo7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVzcG9uc2USiAEKIFVwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzEj0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlTGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EmIKDUNyZWF0ZVByb2R1Y3QSKi5kYXNoYm9hcmQucHJvZHVjdC52MS5DcmVhdGVQcm9kdWN0UmVxdWVzdBolLmRhc2hib2FyZC5wcm9kdWN0LnYxLk9wZXJhdGlvblJlc3VsdBJiCg1EZWxldGVQcm9kdWN0EiouZGFzaGJvYXJkLnByb2R1Y3QudjEuRGVsZXRlUHJvZHVjdFJlcXVlc3QaJS5kYXNoYm9hcmQucHJvZHVjdC52MS5PcGVyYXRpb25SZXN1bHQSZwoOR2V0UHJvZHVjdEJ5SWQSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QnlJZFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2UShgEKF0dldEd1ZXN0Q2F0YWxvZ1NldHRpbmdzEjQuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0GjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRKAAQoUU2V0R3Vlc3RDYXRhbG9nRW50cnkSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5TZXRHdWVzdENhdGFsb2dFbnRyeVJlcXVlc3QaNS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRHdWVzdENhdGFsb2dTZXR0aW5nc1Jlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_empty, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsRequest\n */\nexport type GetGuestCatalogSettingsRequest = Message<\"dashboard.product.v1.GetGuestCatalogSettingsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsRequest.\n * Use `create(GetGuestCatalogSettingsRequestSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsRequestSchema: GenMessage<GetGuestCatalogSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from message dashboard.product.v1.SetGuestCatalogEntryRequest\n */\nexport type SetGuestCatalogEntryRequest = Message<\"dashboard.product.v1.SetGuestCatalogEntryRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.SetGuestCatalogEntryRequest.\n * Use `create(SetGuestCatalogEntryRequestSchema)` to create a new message.\n */\nexport const SetGuestCatalogEntryRequestSchema: GenMessage<SetGuestCatalogEntryRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsResponse\n */\nexport type GetGuestCatalogSettingsResponse = Message<\"dashboard.product.v1.GetGuestCatalogSettingsResponse\"> & {\n /**\n * @generated from field: bool can_manage = 1;\n */\n canManage: boolean;\n\n /**\n * @generated from field: bool guest_catalog_enabled = 2;\n */\n guestCatalogEnabled: boolean;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogEntry entries = 3;\n */\n entries: GuestCatalogEntry[];\n\n /**\n * @generated from field: repeated string available_product_ids = 4;\n */\n availableProductIds: string[];\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogProductOption product_options = 5;\n */\n productOptions: GuestCatalogProductOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsResponse.\n * Use `create(GetGuestCatalogSettingsResponseSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsResponseSchema: GenMessage<GetGuestCatalogSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 2);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogProductOption\n */\nexport type GuestCatalogProductOption = Message<\"dashboard.product.v1.GuestCatalogProductOption\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogProductOption.\n * Use `create(GuestCatalogProductOptionSchema)` to create a new message.\n */\nexport const GuestCatalogProductOptionSchema: GenMessage<GuestCatalogProductOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 3);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogEntry\n */\nexport type GuestCatalogEntry = Message<\"dashboard.product.v1.GuestCatalogEntry\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n\n /**\n * @generated from field: string eligibility_reason = 5;\n */\n eligibilityReason: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogEntry.\n * Use `create(GuestCatalogEntrySchema)` to create a new message.\n */\nexport const GuestCatalogEntrySchema: GenMessage<GuestCatalogEntry> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 4);\n\n/**\n * @generated from message dashboard.product.v1.ArchiveProductRequest\n */\nexport type ArchiveProductRequest = Message<\"dashboard.product.v1.ArchiveProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.ArchiveProductRequest.\n * Use `create(ArchiveProductRequestSchema)` to create a new message.\n */\nexport const ArchiveProductRequestSchema: GenMessage<ArchiveProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 5);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductRequest\n */\nexport type DuplicateProductRequest = Message<\"dashboard.product.v1.DuplicateProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductRequest.\n * Use `create(DuplicateProductRequestSchema)` to create a new message.\n */\nexport const DuplicateProductRequestSchema: GenMessage<DuplicateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 6);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductResponse\n */\nexport type DuplicateProductResponse = Message<\"dashboard.product.v1.DuplicateProductResponse\"> & {\n /**\n * @generated from field: string duplicated_product_id = 1;\n */\n duplicatedProductId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductResponse.\n * Use `create(DuplicateProductResponseSchema)` to create a new message.\n */\nexport const DuplicateProductResponseSchema: GenMessage<DuplicateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 7);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesRequest\n */\nexport type ExchangeProductIDsToNamesRequest = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesRequest.\n * Use `create(ExchangeProductIDsToNamesRequestSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesRequestSchema: GenMessage<ExchangeProductIDsToNamesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 8);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesResponse\n */\nexport type ExchangeProductIDsToNamesResponse = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesResponse\"> & {\n /**\n * @generated from field: map<string, string> product_names = 1;\n */\n productNames: { [key: string]: string };\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesResponse.\n * Use `create(ExchangeProductIDsToNamesResponseSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesResponseSchema: GenMessage<ExchangeProductIDsToNamesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 9);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersRequest\n */\nexport type GetFileAccessMembersRequest = Message<\"dashboard.product.v1.GetFileAccessMembersRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string variant_id = 3;\n */\n variantId?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersRequest.\n * Use `create(GetFileAccessMembersRequestSchema)` to create a new message.\n */\nexport const GetFileAccessMembersRequestSchema: GenMessage<GetFileAccessMembersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 10);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse\n */\nexport type GetFileAccessMembersResponse = Message<\"dashboard.product.v1.GetFileAccessMembersResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetFileAccessMembersResponse.Value members = 1;\n */\n members: GetFileAccessMembersResponse_Value[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.\n * Use `create(GetFileAccessMembersResponseSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponseSchema: GenMessage<GetFileAccessMembersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse.Value\n */\nexport type GetFileAccessMembersResponse_Value = Message<\"dashboard.product.v1.GetFileAccessMembersResponse.Value\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.Value.\n * Use `create(GetFileAccessMembersResponse_ValueSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponse_ValueSchema: GenMessage<GetFileAccessMembersResponse_Value> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11, 0);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileRequest\n */\nexport type GiveAccessToFileRequest = Message<\"dashboard.product.v1.GiveAccessToFileRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string variant_id = 2;\n */\n variantId?: string;\n\n /**\n * @generated from field: string email = 3;\n */\n email: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileRequest.\n * Use `create(GiveAccessToFileRequestSchema)` to create a new message.\n */\nexport const GiveAccessToFileRequestSchema: GenMessage<GiveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 12);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileResponse\n */\nexport type GiveAccessToFileResponse = Message<\"dashboard.product.v1.GiveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileResponse.\n * Use `create(GiveAccessToFileResponseSchema)` to create a new message.\n */\nexport const GiveAccessToFileResponseSchema: GenMessage<GiveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 13);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileRequest\n */\nexport type RemoveAccessToFileRequest = Message<\"dashboard.product.v1.RemoveAccessToFileRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileRequest.\n * Use `create(RemoveAccessToFileRequestSchema)` to create a new message.\n */\nexport const RemoveAccessToFileRequestSchema: GenMessage<RemoveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 14);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileResponse\n */\nexport type RemoveAccessToFileResponse = Message<\"dashboard.product.v1.RemoveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileResponse.\n * Use `create(RemoveAccessToFileResponseSchema)` to create a new message.\n */\nexport const RemoveAccessToFileResponseSchema: GenMessage<RemoveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 15);\n\n/**\n * @generated from message dashboard.product.v1.SendTestEmailWithMessageRequest\n */\nexport type SendTestEmailWithMessageRequest = Message<\"dashboard.product.v1.SendTestEmailWithMessageRequest\"> & {\n /**\n * @generated from field: string email = 1;\n */\n email: string;\n\n /**\n * @generated from field: string html_message = 2;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SendTestEmailWithMessageRequest.\n * Use `create(SendTestEmailWithMessageRequestSchema)` to create a new message.\n */\nexport const SendTestEmailWithMessageRequestSchema: GenMessage<SendTestEmailWithMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 16);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsRequest\n */\nexport type GetProductVariantsRequest = Message<\"dashboard.product.v1.GetProductVariantsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsRequest.\n * Use `create(GetProductVariantsRequestSchema)` to create a new message.\n */\nexport const GetProductVariantsRequestSchema: GenMessage<GetProductVariantsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 17);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse\n */\nexport type GetProductVariantsResponse = Message<\"dashboard.product.v1.GetProductVariantsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductVariantsResponse.SingleVariant variants = 1;\n */\n variants: GetProductVariantsResponse_SingleVariant[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.\n * Use `create(GetProductVariantsResponseSchema)` to create a new message.\n */\nexport const GetProductVariantsResponseSchema: GenMessage<GetProductVariantsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse.SingleVariant\n */\nexport type GetProductVariantsResponse_SingleVariant = Message<\"dashboard.product.v1.GetProductVariantsResponse.SingleVariant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.SingleVariant.\n * Use `create(GetProductVariantsResponse_SingleVariantSchema)` to create a new message.\n */\nexport const GetProductVariantsResponse_SingleVariantSchema: GenMessage<GetProductVariantsResponse_SingleVariant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\n */\nexport type UpdateProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * @generated from field: string html_message = 3;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 4;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest.\n * Use `create(UpdateProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const UpdateProductAfterPurchaseMessageRequestSchema: GenMessage<UpdateProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 19);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageRequest\n */\nexport type GetProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageRequest.\n * Use `create(GetProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageRequestSchema: GenMessage<GetProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 20);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse\n */\nexport type GetProductAfterPurchaseMessageResponse = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAfterPurchaseMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success success = 1;\n */\n value: GetProductAfterPurchaseMessageResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.\n * Use `create(GetProductAfterPurchaseMessageResponseSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponseSchema: GenMessage<GetProductAfterPurchaseMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\n */\nexport type GetProductAfterPurchaseMessageResponse_Success = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\"> & {\n /**\n * @generated from field: optional string message = 1;\n */\n message?: string;\n\n /**\n * @generated from field: optional string html_message = 2;\n */\n htmlMessage?: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success.\n * Use `create(GetProductAfterPurchaseMessageResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponse_SuccessSchema: GenMessage<GetProductAfterPurchaseMessageResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21, 0);\n\n/**\n * @generated from message dashboard.product.v1.PublishProductIfNeededRequest\n */\nexport type PublishProductIfNeededRequest = Message<\"dashboard.product.v1.PublishProductIfNeededRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.PublishProductIfNeededRequest.\n * Use `create(PublishProductIfNeededRequestSchema)` to create a new message.\n */\nexport const PublishProductIfNeededRequestSchema: GenMessage<PublishProductIfNeededRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 22);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\n */\nexport type UpdateProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: bool send_ticket_after_purchase = 2;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest.\n * Use `create(UpdateProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductSendTicketAfterPurchaseRequestSchema: GenMessage<UpdateProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 23);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\n */\nexport type UpdateProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string audiobook_id = 2;\n */\n audiobookId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest.\n * Use `create(UpdateProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductAudiobookAfterPurchaseRequestSchema: GenMessage<UpdateProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 24);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\n */\nexport type GetProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest.\n * Use `create(GetProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseRequestSchema: GenMessage<GetProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 25);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\n */\nexport type GetProductSendTicketAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductSendTicketAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.\n * Use `create(GetProductSendTicketAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponseSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\n */\nexport type GetProductSendTicketAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: bool send_ticket_after_purchase = 1;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success.\n * Use `create(GetProductSendTicketAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\n */\nexport type GetProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest.\n * Use `create(GetProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseRequestSchema: GenMessage<GetProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 27);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\n */\nexport type GetProductAudiobookAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductAudiobookAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.\n * Use `create(GetProductAudiobookAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponseSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\n */\nexport type GetProductAudiobookAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: string audiobook_id = 1;\n */\n audiobookId: string;\n\n /**\n * @generated from field: string audiobook_title = 2;\n */\n audiobookTitle: string;\n\n /**\n * @generated from field: string audiobook_image_url = 3;\n */\n audiobookImageUrl: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success.\n * Use `create(GetProductAudiobookAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsRequest\n */\nexport type SearchProductsRequest = Message<\"dashboard.product.v1.SearchProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsRequest.\n * Use `create(SearchProductsRequestSchema)` to create a new message.\n */\nexport const SearchProductsRequestSchema: GenMessage<SearchProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 29);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse\n */\nexport type SearchProductsResponse = Message<\"dashboard.product.v1.SearchProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.SearchProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.SearchProductsResponse.Result success = 1;\n */\n value: SearchProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.\n * Use `create(SearchProductsResponseSchema)` to create a new message.\n */\nexport const SearchProductsResponseSchema: GenMessage<SearchProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.SingleProduct\n */\nexport type SearchProductsResponse_SingleProduct = Message<\"dashboard.product.v1.SearchProductsResponse.SingleProduct\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string image_url = 3;\n */\n imageUrl?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.SingleProduct.\n * Use `create(SearchProductsResponse_SingleProductSchema)` to create a new message.\n */\nexport const SearchProductsResponse_SingleProductSchema: GenMessage<SearchProductsResponse_SingleProduct> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.Result\n */\nexport type SearchProductsResponse_Result = Message<\"dashboard.product.v1.SearchProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.SearchProductsResponse.SingleProduct products = 1;\n */\n products: SearchProductsResponse_SingleProduct[];\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.Result.\n * Use `create(SearchProductsResponse_ResultSchema)` to create a new message.\n */\nexport const SearchProductsResponse_ResultSchema: GenMessage<SearchProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesRequest\n */\nexport type GetProductBoughtArticlesRequest = Message<\"dashboard.product.v1.GetProductBoughtArticlesRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesRequest.\n * Use `create(GetProductBoughtArticlesRequestSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesRequestSchema: GenMessage<GetProductBoughtArticlesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 31);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesResponse\n */\nexport type GetProductBoughtArticlesResponse = Message<\"dashboard.product.v1.GetProductBoughtArticlesResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.ProductBoughtArticle articles = 1;\n */\n articles: ProductBoughtArticle[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesResponse.\n * Use `create(GetProductBoughtArticlesResponseSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesResponseSchema: GenMessage<GetProductBoughtArticlesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 32);\n\n/**\n * @generated from message dashboard.product.v1.ProductBoughtArticle\n */\nexport type ProductBoughtArticle = Message<\"dashboard.product.v1.ProductBoughtArticle\"> & {\n /**\n * empty string if new.\n *\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: optional string content = 3;\n */\n content?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductBoughtArticle.\n * Use `create(ProductBoughtArticleSchema)` to create a new message.\n */\nexport const ProductBoughtArticleSchema: GenMessage<ProductBoughtArticle> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 33);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductBoughtArticleRequest\n */\nexport type UpdateProductBoughtArticleRequest = Message<\"dashboard.product.v1.UpdateProductBoughtArticleRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductBoughtArticle article = 1;\n */\n article?: ProductBoughtArticle;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductBoughtArticleRequest.\n * Use `create(UpdateProductBoughtArticleRequestSchema)` to create a new message.\n */\nexport const UpdateProductBoughtArticleRequestSchema: GenMessage<UpdateProductBoughtArticleRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 34);\n\n/**\n * @generated from message dashboard.product.v1.GetProductRequest\n */\nexport type GetProductRequest = Message<\"dashboard.product.v1.GetProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductRequest.\n * Use `create(GetProductRequestSchema)` to create a new message.\n */\nexport const GetProductRequestSchema: GenMessage<GetProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 35);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse\n */\nexport type GetProductResponse = Message<\"dashboard.product.v1.GetProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n value: ProductV2;\n case: \"product\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductResponse.SellStats sell_stats = 3;\n */\n sellStats: GetProductResponse_SellStats[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.\n * Use `create(GetProductResponseSchema)` to create a new message.\n */\nexport const GetProductResponseSchema: GenMessage<GetProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse.SellStats\n */\nexport type GetProductResponse_SellStats = Message<\"dashboard.product.v1.GetProductResponse.SellStats\"> & {\n /**\n * @generated from field: string productID = 1;\n */\n productID: string;\n\n /**\n * @generated from field: int32 sold = 2;\n */\n sold: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.SellStats.\n * Use `create(GetProductResponse_SellStatsSchema)` to create a new message.\n */\nexport const GetProductResponse_SellStatsSchema: GenMessage<GetProductResponse_SellStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36, 0);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductRequest\n */\nexport type CreateOrUpdateProductRequest = Message<\"dashboard.product.v1.CreateOrUpdateProductRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n product?: ProductV2;\n\n /**\n * @generated from field: bool is_description_different = 2;\n */\n isDescriptionDifferent: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductRequest.\n * Use `create(CreateOrUpdateProductRequestSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductRequestSchema: GenMessage<CreateOrUpdateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 37);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductUniqueSlugRequest\n */\nexport type UpdateProductUniqueSlugRequest = Message<\"dashboard.product.v1.UpdateProductUniqueSlugRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string new_unique_slug = 2;\n */\n newUniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductUniqueSlugRequest.\n * Use `create(UpdateProductUniqueSlugRequestSchema)` to create a new message.\n */\nexport const UpdateProductUniqueSlugRequestSchema: GenMessage<UpdateProductUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 38);\n\n/**\n * @generated from message dashboard.product.v1.ProductV2\n */\nexport type ProductV2 = Message<\"dashboard.product.v1.ProductV2\"> & {\n /**\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * @generated from field: string unique_slug = 2;\n */\n uniqueSlug: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: dashboard.product.v1.ProductV2.Status status = 4;\n */\n status: ProductV2_Status;\n\n /**\n * @generated from field: optional bool is_recurring = 5;\n */\n isRecurring?: boolean;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 6;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: string name = 7;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 8;\n */\n description?: string;\n\n /**\n * @generated from field: optional string html_description = 9;\n */\n htmlDescription?: string;\n\n /**\n * @generated from field: optional string short_description = 10;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 11;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 12;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional float tax = 13;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 14;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: map<string, string> features = 15;\n */\n features: { [key: string]: string };\n\n /**\n * @generated from field: repeated string images = 16;\n */\n images: string[];\n\n /**\n * @generated from field: optional string thumbnail_image = 17;\n */\n thumbnailImage?: string;\n\n /**\n * @generated from field: optional string main_image = 18;\n */\n mainImage?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.Variant variants = 19;\n */\n variants: Variant[];\n\n /**\n * @generated from field: optional bool send_ticket_after_purchase = 20;\n */\n sendTicketAfterPurchase?: boolean;\n\n /**\n * @generated from field: optional bool is_product_visible_on_list = 21;\n */\n isProductVisibleOnList?: boolean;\n\n /**\n * @generated from field: optional bool is_deliverable = 24;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional bool force_manual_payment = 29;\n */\n forceManualPayment?: boolean;\n\n /**\n * @generated from field: optional int32 weight_grams = 30;\n */\n weightGrams?: number;\n\n /**\n * @generated from field: optional int32 width_millimeters = 31;\n */\n widthMillimeters?: number;\n\n /**\n * @generated from field: optional int32 height_millimeters = 32;\n */\n heightMillimeters?: number;\n\n /**\n * @generated from field: int64 created_at = 25;\n */\n createdAt: bigint;\n\n /**\n * @generated from field: int64 updated_at = 26;\n */\n updatedAt: bigint;\n\n /**\n * @generated from field: optional int64 deleted_at = 27;\n */\n deletedAt?: bigint;\n\n /**\n * @generated from field: optional bool archived = 28;\n */\n archived?: boolean;\n\n /**\n * Monotonic conditional-save token. Clients must send the revision they read.\n *\n * @generated from field: int32 revision = 33;\n */\n revision: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductV2.\n * Use `create(ProductV2Schema)` to create a new message.\n */\nexport const ProductV2Schema: GenMessage<ProductV2> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 39);\n\n/**\n * @generated from enum dashboard.product.v1.ProductV2.Status\n */\nexport enum ProductV2_Status {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: UNPUBLISHED = 1;\n */\n UNPUBLISHED = 1,\n\n /**\n * @generated from enum value: PUBLISHED = 2;\n */\n PUBLISHED = 2,\n}\n\n/**\n * Describes the enum dashboard.product.v1.ProductV2.Status.\n */\nexport const ProductV2_StatusSchema: GenEnum<ProductV2_Status> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 39, 0);\n\n/**\n * @generated from message dashboard.product.v1.Recurring\n */\nexport type Recurring = Message<\"dashboard.product.v1.Recurring\"> & {\n /**\n * @generated from field: dashboard.product.v1.BillingPeriod billingPeriod = 1;\n */\n billingPeriod: BillingPeriod;\n\n /**\n * @generated from field: optional int32 trial_days = 2;\n */\n trialDays?: number;\n\n /**\n * @generated from field: optional int32 number_of_payments = 3;\n */\n numberOfPayments?: number;\n\n /**\n * @generated from field: optional bool change_amount_for_currentSubscribers = 4;\n */\n changeAmountForCurrentSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool remove_access_for_cancelled_subscribers = 5;\n */\n removeAccessForCancelledSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool should_send_trial_period_reminder = 6;\n */\n shouldSendTrialPeriodReminder?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.Recurring.\n * Use `create(RecurringSchema)` to create a new message.\n */\nexport const RecurringSchema: GenMessage<Recurring> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 40);\n\n/**\n * @generated from message dashboard.product.v1.VariantDiscount\n */\nexport type VariantDiscount = Message<\"dashboard.product.v1.VariantDiscount\"> & {\n /**\n * @generated from field: dashboard.product.v1.VariantDiscount.Type type = 1;\n */\n type: VariantDiscount_Type;\n\n /**\n * Minor units for FIXED; basis points (10000 = 100%) for PERCENTAGE.\n *\n * @generated from field: int32 amount = 2;\n */\n amount: number;\n\n /**\n * Kept at field 3 for wire compatibility with the original discount model.\n *\n * @generated from field: optional google.protobuf.Timestamp end_date = 3;\n */\n endDate?: Timestamp;\n\n /**\n * @generated from field: optional string id = 4;\n */\n id?: string;\n\n /**\n * @generated from field: bool enabled = 5;\n */\n enabled: boolean;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_date = 6;\n */\n startDate?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.VariantDiscount.\n * Use `create(VariantDiscountSchema)` to create a new message.\n */\nexport const VariantDiscountSchema: GenMessage<VariantDiscount> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 41);\n\n/**\n * @generated from enum dashboard.product.v1.VariantDiscount.Type\n */\nexport enum VariantDiscount_Type {\n /**\n * @generated from enum value: FIXED = 0;\n */\n FIXED = 0,\n\n /**\n * @generated from enum value: PERCENTAGE = 1;\n */\n PERCENTAGE = 1,\n}\n\n/**\n * Describes the enum dashboard.product.v1.VariantDiscount.Type.\n */\nexport const VariantDiscount_TypeSchema: GenEnum<VariantDiscount_Type> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 41, 0);\n\n/**\n * @generated from message dashboard.product.v1.Variant\n */\nexport type Variant = Message<\"dashboard.product.v1.Variant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional string image_url = 4;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: int32 price_amount = 5;\n */\n priceAmount: number;\n\n /**\n * @generated from field: string price_currency = 6;\n */\n priceCurrency: string;\n\n /**\n * @generated from field: optional int32 tax = 7;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 8;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 9;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: optional bool is_deliverable = 10;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional int32 lowest_price_30_days = 11;\n */\n lowestPrice30Days?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.VariantDiscount discount = 12;\n */\n discount?: VariantDiscount;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp estimated_delivery_at = 13;\n */\n estimatedDeliveryAt?: Timestamp;\n\n /**\n * @generated from field: int32 regular_price_amount = 14;\n */\n regularPriceAmount: number;\n\n /**\n * @generated from field: int32 effective_price_amount = 15;\n */\n effectivePriceAmount: number;\n\n /**\n * @generated from field: optional int32 reference_price_amount = 16;\n */\n referencePriceAmount?: number;\n\n /**\n * @generated from field: bool reference_history_available = 17;\n */\n referenceHistoryAvailable: boolean;\n\n /**\n * @generated from field: int64 price_version = 18;\n */\n priceVersion: bigint;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp next_price_change_at = 19;\n */\n nextPriceChangeAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.Variant.\n * Use `create(VariantSchema)` to create a new message.\n */\nexport const VariantSchema: GenMessage<Variant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 42);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductResponse\n */\nexport type CreateOrUpdateProductResponse = Message<\"dashboard.product.v1.CreateOrUpdateProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.CreateOrUpdateProductResponse.result\n */\n result: {\n /**\n * @generated from field: string product_id = 1;\n */\n value: string;\n case: \"productId\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductResponse.\n * Use `create(CreateOrUpdateProductResponseSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductResponseSchema: GenMessage<CreateOrUpdateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 43);\n\n/**\n * @generated from message dashboard.product.v1.BoolResponse\n */\nexport type BoolResponse = Message<\"dashboard.product.v1.BoolResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.BoolResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.BoolResponse.\n * Use `create(BoolResponseSchema)` to create a new message.\n */\nexport const BoolResponseSchema: GenMessage<BoolResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 44);\n\n/**\n * Plain bool result message for non-success/failure RPCs\n *\n * @generated from message dashboard.product.v1.OperationResult\n */\nexport type OperationResult = Message<\"dashboard.product.v1.OperationResult\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.OperationResult.\n * Use `create(OperationResultSchema)` to create a new message.\n */\nexport const OperationResultSchema: GenMessage<OperationResult> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 45);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsRequest\n */\nexport type GetProductsRequest = Message<\"dashboard.product.v1.GetProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n\n /**\n * @generated from field: optional string type = 2;\n */\n type?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsRequest.\n * Use `create(GetProductsRequestSchema)` to create a new message.\n */\nexport const GetProductsRequestSchema: GenMessage<GetProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 46);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse\n */\nexport type GetProductsResponse = Message<\"dashboard.product.v1.GetProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsResponse.Result success = 1;\n */\n value: GetProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.\n * Use `create(GetProductsResponseSchema)` to create a new message.\n */\nexport const GetProductsResponseSchema: GenMessage<GetProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse.Result\n */\nexport type GetProductsResponse_Result = Message<\"dashboard.product.v1.GetProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.Result.\n * Use `create(GetProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsResponse_ResultSchema: GenMessage<GetProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsRequest\n */\nexport type GetProductsByIdsRequest = Message<\"dashboard.product.v1.GetProductsByIdsRequest\"> & {\n /**\n * @generated from field: repeated string ids = 1;\n */\n ids: string[];\n\n /**\n * @generated from field: optional string currency = 2;\n */\n currency?: string;\n\n /**\n * @generated from field: optional string lang = 3;\n */\n lang?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsRequest.\n * Use `create(GetProductsByIdsRequestSchema)` to create a new message.\n */\nexport const GetProductsByIdsRequestSchema: GenMessage<GetProductsByIdsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 48);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse\n */\nexport type GetProductsByIdsResponse = Message<\"dashboard.product.v1.GetProductsByIdsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsByIdsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsByIdsResponse.Result success = 1;\n */\n value: GetProductsByIdsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.\n * Use `create(GetProductsByIdsResponseSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponseSchema: GenMessage<GetProductsByIdsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Product\n */\nexport type GetProductsByIdsResponse_Product = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Product\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: int32 price = 3;\n */\n price: number;\n\n /**\n * @generated from field: string currency = 4;\n */\n currency: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Product.\n * Use `create(GetProductsByIdsResponse_ProductSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ProductSchema: GenMessage<GetProductsByIdsResponse_Product> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Result\n */\nexport type GetProductsByIdsResponse_Result = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductsByIdsResponse.Product products = 1;\n */\n products: GetProductsByIdsResponse_Product[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Result.\n * Use `create(GetProductsByIdsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ResultSchema: GenMessage<GetProductsByIdsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridRequest\n */\nexport type GetProductGridRequest = Message<\"dashboard.product.v1.GetProductGridRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string currency = 3;\n */\n currency?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n\n /**\n * @generated from field: optional int32 offset = 5;\n */\n offset?: number;\n\n /**\n * @generated from field: optional int32 limit = 6;\n */\n limit?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridRequest.\n * Use `create(GetProductGridRequestSchema)` to create a new message.\n */\nexport const GetProductGridRequestSchema: GenMessage<GetProductGridRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 50);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse\n */\nexport type GetProductGridResponse = Message<\"dashboard.product.v1.GetProductGridResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductGridResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductGridResponse.Result success = 1;\n */\n value: GetProductGridResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.\n * Use `create(GetProductGridResponseSchema)` to create a new message.\n */\nexport const GetProductGridResponseSchema: GenMessage<GetProductGridResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse.Result\n */\nexport type GetProductGridResponse_Result = Message<\"dashboard.product.v1.GetProductGridResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.Result.\n * Use `create(GetProductGridResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductGridResponse_ResultSchema: GenMessage<GetProductGridResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsRequest\n */\nexport type GetMainPageProductsRequest = Message<\"dashboard.product.v1.GetMainPageProductsRequest\"> & {\n /**\n * @generated from field: optional string project_id = 1;\n */\n projectId?: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional int32 limit = 3;\n */\n limit?: number;\n\n /**\n * @generated from field: optional int32 offset = 4;\n */\n offset?: number;\n\n /**\n * @generated from field: optional bool include_archived = 5;\n */\n includeArchived?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsRequest.\n * Use `create(GetMainPageProductsRequestSchema)` to create a new message.\n */\nexport const GetMainPageProductsRequestSchema: GenMessage<GetMainPageProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 52);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse\n */\nexport type GetMainPageProductsResponse = Message<\"dashboard.product.v1.GetMainPageProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetMainPageProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetMainPageProductsResponse.Result success = 1;\n */\n value: GetMainPageProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.\n * Use `create(GetMainPageProductsResponseSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponseSchema: GenMessage<GetMainPageProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse.Result\n */\nexport type GetMainPageProductsResponse_Result = Message<\"dashboard.product.v1.GetMainPageProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n\n /**\n * @generated from field: optional int32 total_count = 2;\n */\n totalCount?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.Result.\n * Use `create(GetMainPageProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponse_ResultSchema: GenMessage<GetMainPageProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugRequest\n */\nexport type GetPublicProductByUniqueSlugRequest = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugRequest\"> & {\n /**\n * @generated from field: string unique_slug = 1;\n */\n uniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugRequest.\n * Use `create(GetPublicProductByUniqueSlugRequestSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugRequestSchema: GenMessage<GetPublicProductByUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 54);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse\n */\nexport type GetPublicProductByUniqueSlugResponse = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicProductByUniqueSlugResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result success = 1;\n */\n value: GetPublicProductByUniqueSlugResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.\n * Use `create(GetPublicProductByUniqueSlugResponseSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponseSchema: GenMessage<GetPublicProductByUniqueSlugResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\n */\nexport type GetPublicProductByUniqueSlugResponse_Result = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 4;\n */\n id: string;\n\n /**\n * @generated from field: string name = 5;\n */\n name: string;\n\n /**\n * @generated from field: optional string short_description = 6;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 7;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 8;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional string main_image = 9;\n */\n mainImage?: string;\n\n /**\n * @generated from field: optional string thumbnail_image = 10;\n */\n thumbnailImage?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result.\n * Use `create(GetPublicProductByUniqueSlugResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponse_ResultSchema: GenMessage<GetPublicProductByUniqueSlugResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsRequest\n */\nexport type GetPublicAgreementsRequest = Message<\"dashboard.product.v1.GetPublicAgreementsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated string product_ids = 2;\n */\n productIds: string[];\n\n /**\n * @generated from field: bool contains_recurring = 3;\n */\n containsRecurring: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsRequest.\n * Use `create(GetPublicAgreementsRequestSchema)` to create a new message.\n */\nexport const GetPublicAgreementsRequestSchema: GenMessage<GetPublicAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 56);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse\n */\nexport type GetPublicAgreementsResponse = Message<\"dashboard.product.v1.GetPublicAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicAgreementsResponse.Result success = 1;\n */\n value: GetPublicAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.\n * Use `create(GetPublicAgreementsResponseSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponseSchema: GenMessage<GetPublicAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Agreement\n */\nexport type GetPublicAgreementsResponse_Agreement = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Agreement\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Agreement.\n * Use `create(GetPublicAgreementsResponse_AgreementSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_AgreementSchema: GenMessage<GetPublicAgreementsResponse_Agreement> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Result\n */\nexport type GetPublicAgreementsResponse_Result = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetPublicAgreementsResponse.Agreement result = 3;\n */\n result: GetPublicAgreementsResponse_Agreement[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Result.\n * Use `create(GetPublicAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_ResultSchema: GenMessage<GetPublicAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductRequest\n */\nexport type GetEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductRequest.\n * Use `create(GetEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductRequestSchema: GenMessage<GetEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 58);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse\n */\nexport type GetEProductsAddedForThisProductResponse = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetEProductsAddedForThisProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result success = 1;\n */\n value: GetEProductsAddedForThisProductResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.\n * Use `create(GetEProductsAddedForThisProductResponseSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponseSchema: GenMessage<GetEProductsAddedForThisProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\n */\nexport type GetEProductsAddedForThisProductResponse_Result = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\"> & {\n /**\n * @generated from field: repeated string eproduct_ids = 1;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result.\n * Use `create(GetEProductsAddedForThisProductResponse_ResultSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponse_ResultSchema: GenMessage<GetEProductsAddedForThisProductResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\n */\nexport type UpdateEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated string eproduct_ids = 2;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest.\n * Use `create(UpdateEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const UpdateEProductsAddedForThisProductRequestSchema: GenMessage<UpdateEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 60);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsRequest\n */\nexport type GetListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsRequest.\n * Use `create(GetListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsRequestSchema: GenMessage<GetListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 61);\n\n/**\n * @generated from message dashboard.product.v1.AgreementOption\n */\nexport type AgreementOption = Message<\"dashboard.product.v1.AgreementOption\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool is_required = 2;\n */\n isRequired: boolean;\n\n /**\n * @generated from field: optional string link = 3;\n */\n link?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.AgreementOption.\n * Use `create(AgreementOptionSchema)` to create a new message.\n */\nexport const AgreementOptionSchema: GenMessage<AgreementOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 62);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse\n */\nexport type GetListOfAdditionalAgreementsResponse = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetListOfAdditionalAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result success = 1;\n */\n value: GetListOfAdditionalAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.\n * Use `create(GetListOfAdditionalAgreementsResponseSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponseSchema: GenMessage<GetListOfAdditionalAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\n */\nexport type GetListOfAdditionalAgreementsResponse_Result = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption result = 3;\n */\n result: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result.\n * Use `create(GetListOfAdditionalAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponse_ResultSchema: GenMessage<GetListOfAdditionalAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\n */\nexport type UpdateListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption agreements = 2;\n */\n agreements: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest.\n * Use `create(UpdateListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const UpdateListOfAdditionalAgreementsRequestSchema: GenMessage<UpdateListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 64);\n\n/**\n * @generated from message dashboard.product.v1.CreateProductRequest\n */\nexport type CreateProductRequest = Message<\"dashboard.product.v1.CreateProductRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateProductRequest.\n * Use `create(CreateProductRequestSchema)` to create a new message.\n */\nexport const CreateProductRequestSchema: GenMessage<CreateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 65);\n\n/**\n * @generated from message dashboard.product.v1.DeleteProductRequest\n */\nexport type DeleteProductRequest = Message<\"dashboard.product.v1.DeleteProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DeleteProductRequest.\n * Use `create(DeleteProductRequestSchema)` to create a new message.\n */\nexport const DeleteProductRequestSchema: GenMessage<DeleteProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 66);\n\n/**\n * @generated from message dashboard.product.v1.GetProductByIdRequest\n */\nexport type GetProductByIdRequest = Message<\"dashboard.product.v1.GetProductByIdRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 2;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductByIdRequest.\n * Use `create(GetProductByIdRequestSchema)` to create a new message.\n */\nexport const GetProductByIdRequestSchema: GenMessage<GetProductByIdRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 67);\n\n/**\n * @generated from enum dashboard.product.v1.BillingPeriod\n */\nexport enum BillingPeriod {\n /**\n * @generated from enum value: BILLING_PERIOD_DAILY = 0;\n */\n DAILY = 0,\n\n /**\n * @generated from enum value: BILLING_PERIOD_WEEKLY = 1;\n */\n WEEKLY = 1,\n\n /**\n * @generated from enum value: BILLING_PERIOD_MONTHLY = 2;\n */\n MONTHLY = 2,\n\n /**\n * @generated from enum value: BILLING_PERIOD_QUARTERLY = 3;\n */\n QUARTERLY = 3,\n\n /**\n * @generated from enum value: BILLING_PERIOD_SEMI_ANNUALLY = 4;\n */\n SEMI_ANNUALLY = 4,\n\n /**\n * @generated from enum value: BILLING_PERIOD_ANNUALLY = 5;\n */\n ANNUALLY = 5,\n}\n\n/**\n * Describes the enum dashboard.product.v1.BillingPeriod.\n */\nexport const BillingPeriodSchema: GenEnum<BillingPeriod> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from enum dashboard.product.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PRODUCT_NOT_FOUND = 2;\n */\n PRODUCT_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INVALID_PRODUCT_ID = 3;\n */\n INVALID_PRODUCT_ID = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_SLUG_ALREADY_TAKEN = 4;\n */\n SLUG_ALREADY_TAKEN = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CANNOT_CREATE_PRODUCT = 5;\n */\n CANNOT_CREATE_PRODUCT = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NO_ACCESS = 6;\n */\n NO_ACCESS = 6,\n}\n\n/**\n * Describes the enum dashboard.product.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from service dashboard.product.v1.ProductRouter\n */\nexport const ProductRouter: GenService<{\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateOrUpdateProduct\n */\n createOrUpdateProduct: {\n methodKind: \"unary\";\n input: typeof CreateOrUpdateProductRequestSchema;\n output: typeof CreateOrUpdateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DuplicateProduct\n */\n duplicateProduct: {\n methodKind: \"unary\";\n input: typeof DuplicateProductRequestSchema;\n output: typeof DuplicateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductUniqueSlug\n */\n updateProductUniqueSlug: {\n methodKind: \"unary\";\n input: typeof UpdateProductUniqueSlugRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProduct\n */\n getProduct: {\n methodKind: \"unary\";\n input: typeof GetProductRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductSendTicketAfterPurchase\n */\n getProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductSendTicketAfterPurchaseRequestSchema;\n output: typeof GetProductSendTicketAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAudiobookAfterPurchase\n */\n getProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductAudiobookAfterPurchaseRequestSchema;\n output: typeof GetProductAudiobookAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductSendTicketAfterPurchase\n */\n updateProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductSendTicketAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAudiobookAfterPurchase\n */\n updateProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductAudiobookAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.PublishProductIfNeeded\n */\n publishProductIfNeeded: {\n methodKind: \"unary\";\n input: typeof PublishProductIfNeededRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAfterPurchaseMessage\n */\n getProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof GetProductAfterPurchaseMessageRequestSchema;\n output: typeof GetProductAfterPurchaseMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAfterPurchaseMessage\n */\n updateProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof UpdateProductAfterPurchaseMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductVariants\n */\n getProductVariants: {\n methodKind: \"unary\";\n input: typeof GetProductVariantsRequestSchema;\n output: typeof GetProductVariantsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SendTestEmailWithMessage\n */\n sendTestEmailWithMessage: {\n methodKind: \"unary\";\n input: typeof SendTestEmailWithMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SearchProducts\n */\n searchProducts: {\n methodKind: \"unary\";\n input: typeof SearchProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ExchangeProductIDsToNames\n */\n exchangeProductIDsToNames: {\n methodKind: \"unary\";\n input: typeof ExchangeProductIDsToNamesRequestSchema;\n output: typeof ExchangeProductIDsToNamesResponseSchema;\n },\n /**\n * After product buy methods\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductBoughtArticles\n */\n getProductBoughtArticles: {\n methodKind: \"unary\";\n input: typeof GetProductBoughtArticlesRequestSchema;\n output: typeof GetProductBoughtArticlesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductBoughtArticle\n */\n updateProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof UpdateProductBoughtArticleRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.AddProductBoughtArticle\n */\n addProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof ProductBoughtArticleSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetFileAccessMembers\n */\n getFileAccessMembers: {\n methodKind: \"unary\";\n input: typeof GetFileAccessMembersRequestSchema;\n output: typeof GetFileAccessMembersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GiveAccessToFile\n */\n giveAccessToFile: {\n methodKind: \"unary\";\n input: typeof GiveAccessToFileRequestSchema;\n output: typeof GiveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.RemoveAccessToFile\n */\n removeAccessToFile: {\n methodKind: \"unary\";\n input: typeof RemoveAccessToFileRequestSchema;\n output: typeof RemoveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ArchiveProduct\n */\n archiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UnarchiveProduct\n */\n unarchiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * Dashboard product procedures (ported from tRPC)\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProducts\n */\n getProducts: {\n methodKind: \"unary\";\n input: typeof GetProductsRequestSchema;\n output: typeof GetProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductsByIds\n */\n getProductsByIds: {\n methodKind: \"unary\";\n input: typeof GetProductsByIdsRequestSchema;\n output: typeof GetProductsByIdsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductGrid\n */\n getProductGrid: {\n methodKind: \"unary\";\n input: typeof GetProductGridRequestSchema;\n output: typeof GetProductGridResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetMainPageProducts\n */\n getMainPageProducts: {\n methodKind: \"unary\";\n input: typeof GetMainPageProductsRequestSchema;\n output: typeof GetMainPageProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicProductByUniqueSlug\n */\n getPublicProductByUniqueSlug: {\n methodKind: \"unary\";\n input: typeof GetPublicProductByUniqueSlugRequestSchema;\n output: typeof GetPublicProductByUniqueSlugResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicAgreements\n */\n getPublicAgreements: {\n methodKind: \"unary\";\n input: typeof GetPublicAgreementsRequestSchema;\n output: typeof GetPublicAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetEProductsAddedForThisProduct\n */\n getEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof GetEProductsAddedForThisProductRequestSchema;\n output: typeof GetEProductsAddedForThisProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateEProductsAddedForThisProduct\n */\n updateEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof UpdateEProductsAddedForThisProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetListOfAdditionalAgreements\n */\n getListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof GetListOfAdditionalAgreementsRequestSchema;\n output: typeof GetListOfAdditionalAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateListOfAdditionalAgreements\n */\n updateListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof UpdateListOfAdditionalAgreementsRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateProduct\n */\n createProduct: {\n methodKind: \"unary\";\n input: typeof CreateProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DeleteProduct\n */\n deleteProduct: {\n methodKind: \"unary\";\n input: typeof DeleteProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductById\n */\n getProductById: {\n methodKind: \"unary\";\n input: typeof GetProductByIdRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetGuestCatalogSettings\n */\n getGuestCatalogSettings: {\n methodKind: \"unary\";\n input: typeof GetGuestCatalogSettingsRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SetGuestCatalogEntry\n */\n setGuestCatalogEntry: {\n methodKind: \"unary\";\n input: typeof SetGuestCatalogEntryRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_product, 0);\n\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/public_api.proto (package public_api.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { PublicApiService } from \"./public_api_pb\";\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrder\n */\nexport const getOrder = PublicApiService.method.getOrder;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrders\n */\nexport const getOrders = PublicApiService.method.getOrders;\n\n/**\n * Short history of the buyer's OWN order for the customer panel (paid, e-mail with access sent,\n * access granted, invoice issued, shipped, refund, return status). Read only. Another buyer's\n * order, or one the panel order list does not show, is ORDER_NOT_FOUND.\n *\n * @generated from rpc public_api.v1.PublicApiService.GetOrderHistory\n */\nexport const getOrderHistory = PublicApiService.method.getOrderHistory;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrderRetryUrl\n */\nexport const getOrderRetryUrl = PublicApiService.method.getOrderRetryUrl;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogin\n */\nexport const userPanelLogin = PublicApiService.method.userPanelLogin;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLoginWithCode\n */\nexport const userPanelLoginWithCode = PublicApiService.method.userPanelLoginWithCode;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogout\n */\nexport const userPanelLogout = PublicApiService.method.userPanelLogout;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelDeleteAccount\n */\nexport const userPanelDeleteAccount = PublicApiService.method.userPanelDeleteAccount;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetProducts\n */\nexport const userPanelGetProducts = PublicApiService.method.userPanelGetProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetails\n */\nexport const userPanelGetAudiobookDetails = PublicApiService.method.userPanelGetAudiobookDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetailsDownloadURLs\n */\nexport const userPanelGetAudiobookDetailsDownloadURLs = PublicApiService.method.userPanelGetAudiobookDetailsDownloadURLs;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetFileDetails\n */\nexport const userPanelGetFileDetails = PublicApiService.method.userPanelGetFileDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetTicketDetails\n */\nexport const userPanelGetTicketDetails = PublicApiService.method.userPanelGetTicketDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushSendDeviceToken\n */\nexport const pushSendDeviceToken = PublicApiService.method.pushSendDeviceToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushEvent\n */\nexport const pushEvent = PublicApiService.method.pushEvent;\n\n/**\n * iOS SHOP methods\n *\n * @generated from rpc public_api.v1.PublicApiService.ShouldShopProducts\n */\nexport const shouldShopProducts = PublicApiService.method.shouldShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ShouldShowGuestCatalog\n */\nexport const shouldShowGuestCatalog = PublicApiService.method.shouldShowGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetGuestCatalog\n */\nexport const getGuestCatalog = PublicApiService.method.getGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelResolveProductAccess\n */\nexport const userPanelResolveProductAccess = PublicApiService.method.userPanelResolveProductAccess;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetShopProducts\n */\nexport const getShopProducts = PublicApiService.method.getShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.DidBuyProduct\n */\nexport const didBuyProduct = PublicApiService.method.didBuyProduct;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreAccountToken\n */\nexport const getAppStoreAccountToken = PublicApiService.method.getAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.VerifyAppStorePurchase\n */\nexport const verifyAppStorePurchase = PublicApiService.method.verifyAppStorePurchase;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreEntitlements\n */\nexport const getAppStoreEntitlements = PublicApiService.method.getAppStoreEntitlements;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.RestoreAppStorePurchases\n */\nexport const restoreAppStorePurchases = PublicApiService.method.restoreAppStorePurchases;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ClearAppStoreAccountToken\n */\nexport const clearAppStoreAccountToken = PublicApiService.method.clearAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetStoreKitCatalog\n */\nexport const getStoreKitCatalog = PublicApiService.method.getStoreKitCatalog;\n\n/**\n * Notification settings\n *\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettings\n */\nexport const getNotificationSettings = PublicApiService.method.getNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettingsDetails\n */\nexport const getNotificationSettingsDetails = PublicApiService.method.getNotificationSettingsDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateGlobalNotificationSettings\n */\nexport const updateGlobalNotificationSettings = PublicApiService.method.updateGlobalNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateNotificationSettings\n */\nexport const updateNotificationSettings = PublicApiService.method.updateNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationHistory\n */\nexport const getNotificationHistory = PublicApiService.method.getNotificationHistory;\n\n/**\n * Product V2 requests\n *\n * @generated from rpc public_api.v1.PublicApiService.GetAvailableCountForProduct\n */\nexport const getAvailableCountForProduct = PublicApiService.method.getAvailableCountForProduct;\n\n/**\n * Thank-you page shown after a successful purchase\n *\n * @generated from rpc public_api.v1.PublicApiService.GetThankYouPage\n */\nexport const getThankYouPage = PublicApiService.method.getThankYouPage;\n\n/**\n * Shop logo and name shown on the customer login screens (panel, returns,\n * notifications). Unauthenticated; an unknown project gives an empty response.\n *\n * @generated from rpc public_api.v1.PublicApiService.GetLoginBranding\n */\nexport const getLoginBranding = PublicApiService.method.getLoginBranding;\n\n/**\n * Checkout requests\n *\n * @generated from rpc public_api.v1.PublicApiService.IsOneClickPaymentAvailable\n */\nexport const isOneClickPaymentAvailable = PublicApiService.method.isOneClickPaymentAvailable;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetPreOrderDetails\n */\nexport const getPreOrderDetails = PublicApiService.method.getPreOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ApplePayValidateMerchant\n */\nexport const applePayValidateMerchant = PublicApiService.method.applePayValidateMerchant;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AuthorizeOneClickPayment\n */\nexport const authorizeOneClickPayment = PublicApiService.method.authorizeOneClickPayment;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.NotifyUserAboutProductAvailability\n */\nexport const notifyUserAboutProductAvailability = PublicApiService.method.notifyUserAboutProductAvailability;\n\n/**\n * Public order details (with obfuscation)\n *\n * @generated from rpc public_api.v1.PublicApiService.GetPublicOrderDetails\n */\nexport const getPublicOrderDetails = PublicApiService.method.getPublicOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AddPublicOrderComment\n */\nexport const addPublicOrderComment = PublicApiService.method.addPublicOrderComment;\n\n/**\n * Testimonials\n *\n * @generated from rpc public_api.v1.PublicApiService.GetOrderForTestimonial\n */\nexport const getOrderForTestimonial = PublicApiService.method.getOrderForTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.SubmitTestimonial\n */\nexport const submitTestimonial = PublicApiService.method.submitTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetTestimonialUploadUrl\n */\nexport const getTestimonialUploadUrl = PublicApiService.method.getTestimonialUploadUrl;\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ReturnsService } from \"./returns_pb\";\n\n/**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\nexport const startReturnSession = ReturnsService.method.startReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\nexport const verifyReturnSession = ReturnsService.method.verifyReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\nexport const exchangePanelSession = ReturnsService.method.exchangePanelSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\nexport const listReturnOrders = ReturnsService.method.listReturnOrders;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\nexport const getReturnableOrder = ReturnsService.method.getReturnableOrder;\n\n/**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\nexport const createReturnRequest = ReturnsService.method.createReturnRequest;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\nexport const listMyReturns = ReturnsService.method.listMyReturns;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\nexport const getMyReturn = ReturnsService.method.getMyReturn;\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","function parseHex(value: string): [number, number, number] | undefined {\n const match = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(value);\n if (match == null) {\n return undefined;\n }\n let hex = match[1];\n if (hex.length <= 4) {\n hex = hex\n .split(\"\")\n .map((char) => char + char)\n .join(\"\");\n }\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction parseRgb(value: string): [number, number, number] | undefined {\n const match =\n /^rgba?\\(\\s*(\\d{1,3})[\\s,]+(\\d{1,3})[\\s,]+(\\d{1,3})(?:[\\s,/]+[\\d.%]+)?\\s*\\)$/i.exec(\n value,\n );\n if (match == null) {\n return undefined;\n }\n const channels = [match[1], match[2], match[3]].map(Number);\n return channels.every((channel) => channel <= 255)\n ? (channels as [number, number, number])\n : undefined;\n}\n\nfunction linearize(channel: number): number {\n const value = channel / 255;\n return value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n}\n\n/**\n * Text color that stays readable on a brand color: white or near black,\n * whichever has the higher WCAG contrast. `undefined` when the color is not a\n * hex or `rgb()` value.\n */\nexport function readableForeground(color: string): string | undefined {\n const trimmed = color.trim();\n const rgb = parseHex(trimmed) ?? parseRgb(trimmed);\n if (rgb == null) {\n return undefined;\n }\n const [r, g, b] = rgb.map(linearize);\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n // Contrast against white (1.05 / (L + 0.05)) versus against black.\n const whiteContrast = 1.05 / (luminance + 0.05);\n const blackContrast = (luminance + 0.05) / 0.05;\n return whiteContrast >= blackContrast ? \"#ffffff\" : \"#18181b\";\n}\n\n/**\n * Appearance tokens derived from one brand color: button background, focus\n * ring and, when the color can be parsed, a readable button foreground.\n */\nexport function brandColorTokens(color: string): {\n buttonBackground: string;\n focusRing: string;\n buttonForeground?: string;\n} {\n const foreground = readableForeground(color);\n return {\n buttonBackground: color,\n focusRing: color,\n ...(foreground != null ? { buttonForeground: foreground } : {}),\n };\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-neutral-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-800 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import { cn } from \"@/src/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
|