You are viewing an old version of this page. View the current version .
Compare with Current
View Page History
« Previous
Version 63
Next »
Reference Material Open Issues & Decisions # Description Notes Decision 1 How to deal with hardcoded E2E NW Slicing model, spike 23 Apr 2021 Discusdons started with E2E NW Slicing Team, to be continued next week
2 Which Simulator to use? NetConf Simulator Netopeer v2Nokia Ericsson Honeycomb(?) lighty netconf simulator Rahul Tyagi Ericsson more lightweight, more experience. Available CSIT standard setup
Swaminathan Seetharaman mentioned 'Honeycomb' simulator they used before. Need to investigate if it supports get-schema method over RESTConf/NetConf
Need to check if we can use it with E2E NW Slicing model
3 Should (ONAP) dmi-instance be as separate (springboot) application Could be part of DMI Manager DMI-Instance interface should be an open standard Tony Finnerty and Team to allow easy integration of future 3rd part DMI-Plugin instances a separate application with its own REST Interface is required
Istanbul Roadmap
Priorities & Scope for Istanbul Release Priority Description Notes Istanbul commitment Jira(s) 1 Publish and Share NCMP Rest interface proposal detailed for Istanbul scope, general structure only for functionality related to later releases Committed
CPS-391
-
Getting issue details...
STATUS
2 Publish and Share DMI Plugin Rest interface proposal detailed for Istanbul scope, general structure only for functionality related to later releases Committed
CPS-390
-
Getting issue details...
STATUS
3 Register a DMI Plugin with NCMP
DMI plugin registration is implicit part of CM handle registration (inventory update), REST endpoint on NCMP (can be multiple calls) Committed
CPS-350
-
Getting issue details...
STATUS
CPS-384
-
Getting issue details...
STATUS
CPS-352
-
Getting issue details...
STATUS
CPS-353
-
Getting issue details...
STATUS
CPS-389
-
Getting issue details...
STATUS
CPS-442
-
Getting issue details...
STATUS
CPS-403
-
Getting issue details...
STATUS
CPS-404
-
Getting issue details...
STATUS
CPS-405
-
Getting issue details...
STATUS
4 Initial Inventory (semi hardcoded e.g. hidden rest endpoint
Additional properties for ONAP plugin may need ODL mountpoint, stored by NCMP and later provided to DMI plugin for each request. The mountpoint is created outside of CPS and DMI plugin. Committed
CPS-385
-
Getting issue details...
STATUS
CPS-406
-
Getting issue details...
STATUS
5 Passthrough Read operations for data (single cmHandle, synchronous only) Explicit specified Passthrough datastores only (ncmp-datastores:passthrough-*
, see Datastore Mapping below) i.e. no resource-path or data format transformations required. Committed
CPS-388
-
Getting issue details...
STATUS
CPS-394
-
Getting issue details...
STATUS
6 Create, Update & Delete operations for (single cmHandle , synchronous only )
Explicit specified Passthrough datastores only (ncmp-datastores:passthrough-*
Not expected these to be differ much from each other from a NCMP/DMI plugin perspective. Committed
CPS-395
-
Getting issue details...
STATUS
7 Inventory Changes define and implement interface to add & remove cm handle Related to #3 Committed
CPS-443
-
Getting issue details...
STATUS
CPS-444
-
Getting issue details...
STATUS
8 Model discovery (get and store model for a cm-handle) NCMP queries DMI plugin that provides information, for ONAP retrieved via SDNC/ODL Committed
CPS-386
-
Getting issue details...
STATUS
9 Retrieve list of modules (names) for a cmHandle - make higher priority Used by applications to get cached information from NCMP about models Committed 10 Manual (initial) data sync Includes both NCMP and DMI APIs Committed 11 Support dynamic inventory changes (ONAP DMU Plugin) React to events from AAI sent over DMaaP, in turn using API in #7 for updates Stretch
CPS-392
-
Getting issue details...
STATUS
CPS-393
-
Getting issue details...
STATUS
12 Yang Patch operations for single cmHandle with ds = pass-through, synchronous only Stretch 13 Retrieve list of cm-handles that have a given module Stretch 14 Support yang-date+json output for all datastores Stretch 15 Trigger (initial) Data Sync Metadata (per cmHandle) controls whether this will happen or not Out of Scope 16 Implement -async option for CRUD and Patch operations
Out of Scope 17 Support multiple cmHandles in a single call (bulk) Out of Scope 18 Support all cmHandles in a single call? Out of Scope 19 Support ds = operation-running for read and query operations Out of Scope 20 Support yang-data+json output format for ds = operational running Out of Scope
Epics Summary
# Epic Project/Component Description Comments 1 E2E Network Slicing
CPS-382
-
Getting issue details...
STATUS
CPS/NCMP create rest interface on northbound for GET/POST/PUT/DELETE to access yang data. Note. Currently driven by "E2E Network Slicing" Use Case mix of CPS-CORE and NCMP Interface
interfaces for yang data are: operational, intended, pass-through (selection can be done by parameter) check with netconf-sim if current nw slicing yang model can be imported including its imports.
2 DMI-Registry
CPS-350
-
Getting issue details...
STATUS
(NCMP) DMI-Registry Create dmi-registry. Data Model Inventory Interface (DMI)
'Internal service' no public Java or REST API
responsibilities are
Store & retrieve cm-handle/dmi-plugin mapping in yang modelled CPS data table. include additional data (key-value pars as provided by dmi-Plugin) Dmi manager is to select the dmi instance at runtime for cm handle for a northbound (write) request 3 DMI-Plugin
CPS-384
-
Getting issue details...
STATUS
DMI-Plugin (ONAP impl.) Common standard (REST and Java?) interface for extensibility
create dmi plugin for onap. Its responsibility of admin to provide instance of dmi.
extract dmi-plugin into separate container consensus on rest interface is needed. 4 Inventory
CPS-385
-
Getting issue details...
STATUS
DMI-Plugin (ONAP impl.) Capability to get initial Inventory Process Inventory updates5 Model & Data Sync
CPS-386
-
Getting issue details...
STATUS
DMI-Plugin (ONAP impl.) 6 Pass-Through Support
CPS-388
-
Getting issue details...
STATUS
DMI-Plugin (ONAP impl.) dmi plugin instance (onap-dmi) have sdnc connector to access sdnc. call get/post/put/delete towards restconf interface (forward northbound write requests) Possibly overlaps with #1 E2E Network Slicing
Interfaces
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsIm91dHB1dFR5cGUiOiJibG9jayIsImxhc3RNb2RpZmllck5hbWUiOiJUb2luZSBTaWViZWxpbmsiLCJsYW5ndWFnZSI6ImVuIiwiZGlhZ3JhbURpc3BsYXlOYW1lIjoiIiwic0ZpbGVJZCI6IiIsImF0dElkIjoiMTAzNDE2MzAzIiwiZGlhZ3JhbU5hbWUiOiJOQ01QIGFuZCBETUkiLCJhc3BlY3QiOiIiLCJsaW5rcyI6ImF1dG8iLCJjZW9OYW1lIjoiQ1BTLTMzMyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCAoTkNNUCkgc2NvcGUgZm9yIEkgcmVsZWFzZSBjb25zaWRlcmF0aW9ucyIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6MTAwODk1NTQ5LCJlZGl0YWJsZSI6ZmFsc2UsImNlb0lkIjoxMDM0MjAwNzQsInBhZ2VJZCI6IiIsImxib3giOnRydWUsInNlcnZlckNvbmZpZyI6eyJlbWFpbHByZXZpZXciOiIxIn0sIm9kcml2ZUlkIjoiIiwicmV2aXNpb24iOjQsIm1hY3JvSWQiOiIxMGJkYjdjNi0yZTg0LTQ0YWUtODFmOC04ZmNmOTUwZTRiMGEiLCJwcmV2aWV3TmFtZSI6Ik5DTVAgYW5kIERNSS5wbmciLCJsaWNlbnNlU3RhdHVzIjoiT0siLCJzZXJ2aWNlIjoiIiwiaXNUZW1wbGF0ZSI6IiIsIndpZHRoIjoiMjAwIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNjIwMzg4NjcyMDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
Preliminary Interface Overview (Work-in-Progress)
# module rest api java api 1 onap/cps/ncmp/dmi-registry
# type name params 1 POST register_dmi_plugin dmi-plugin-id name adress other-params 2 POST create_cm_handle cm-handle dmi-plugin-id 3 DELETE delete_cm_handle cm-handle
# method_name params return 1 getDmiPluginByCmHandle cm-handle dmi-plugin-object
2 onap/cps/ncmp/dmi-plugin 3 onap/cps/ncmp/ncmp-rest 4 onap/cps/cps-rest
Data Stores
+-------------+ +-----------+
| <candidate> | | <startup> |
| (ct, rw) |<---+ +--->| (ct, rw) |
+-------------+ | | +-----------+
| | | |
| +-----------+ |
+-------->| <running> |<--------+
| (ct, rw) |
+-----------+
|
| // configuration transformations,
| // e.g., removal of nodes marked as
| // "inactive", expansion of
| // templates
v
+------------+
| <intended> | // subject to validation
| (ct, ro) |
+------------+
| // changes applied, subject to
| // local factors, e.g., missing
| // resources, delays
|
dynamic | +-------- learned configuration
configuration | +-------- system configuration
datastores -----+ | +-------- default configuration
| | |
v v v
+---------------+
| <operational> | <-- system state
| (ct + cf, ro) |
+---------------+
ct = config true; cf = config false
rw = read-write; ro = read-only
boxes denote named datastores
Datastore Mapping in ONAP DMI Plugin impl. # Incoming Outgoing Notes 1 /ds
/ncmp-datastores:operational
/ds/ietf-datastores:operational
2 /ds/ncmp-datastores:running
/ds/ietf-datastores:running
3 /ds/ncmp-datastores:intent
/ds/ietf-datastores:intended
might be rejected by node or ODL interface, in that case error response will be reported back 4 /ds/ncmp-datastores:passthrough-operational
/ds/ietf-datastores:operational
5 /ds/ncmp-datastores:passthrough-running
/ds/ietf-datastores:running
6 /ds/ncmp-datastores:passthrough-intent
/ds/ietf-datastores:intended
7 /ds/
<anything-else> /ds/
<anything-else> This is to allow any future custom datastore
Component description diagram
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsIm91dHB1dFR5cGUiOiJibG9jayIsImxhc3RNb2RpZmllck5hbWUiOiJUb2luZSBTaWViZWxpbmsiLCJsYW5ndWFnZSI6ImVuIiwiZGlhZ3JhbURpc3BsYXlOYW1lIjoiIiwic0ZpbGVJZCI6IiIsImF0dElkIjoiMTAwODk1NTk4IiwiZGlhZ3JhbU5hbWUiOiJDUFMgTkNNUCBEZXBsb3ltZW50IFByb3Bvc2FsIiwiYXNwZWN0IjoiIiwibGlua3MiOiJhdXRvIiwiY2VvTmFtZSI6IkNQUy0zMzMgTmV0d29yayBDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgKE5DTVApIHNjb3BlIGZvciBJIHJlbGVhc2UgY29uc2lkZXJhdGlvbnMiLCJ0YnN0eWxlIjoidG9wIiwiY2FuQ29tbWVudCI6ZmFsc2UsImRpYWdyYW1VcmwiOiIiLCJjc3ZGaWxlVXJsIjoiIiwiYm9yZGVyIjp0cnVlLCJtYXhTY2FsZSI6IjEiLCJvd25pbmdQYWdlSWQiOjEwMDg5NTU0OSwiZWRpdGFibGUiOmZhbHNlLCJjZW9JZCI6MTAzNDIwMDc0LCJwYWdlSWQiOiIiLCJsYm94Ijp0cnVlLCJzZXJ2ZXJDb25maWciOnsiZW1haWxwcmV2aWV3IjoiMSJ9LCJvZHJpdmVJZCI6IiIsInJldmlzaW9uIjoxNywibWFjcm9JZCI6Ijg1NjhmMzMwLWNlYWItNDQ4Ni05YWFkLTIwMGJlZDRjMDM1NCIsInByZXZpZXdOYW1lIjoiQ1BTIE5DTVAgRGVwbG95bWVudCBQcm9wb3NhbC5wbmciLCJsaWNlbnNlU3RhdHVzIjoiT0siLCJzZXJ2aWNlIjoiIiwiaXNUZW1wbGF0ZSI6IiIsIndpZHRoIjoiODg5Iiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNjE5MDE5MTA4MDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
Sequence diagrams
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlJhaHVsIFR5YWdpIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiIxMDA4OTU5NTgiLCJkaWFncmFtTmFtZSI6IkNvcHkgb2YgQ1BTIE5DTVAgRGVwbG95bWVudCBQcm9wb3NhbCIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJDUFMtMzMzIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IChOQ01QKSBzY29wZSBmb3IgSSByZWxlYXNlIGNvbnNpZGVyYXRpb25zIiwidGJzdHlsZSI6InRvcCIsImNhbkNvbW1lbnQiOmZhbHNlLCJkaWFncmFtVXJsIjoiIiwiY3N2RmlsZVVybCI6IiIsImJvcmRlciI6dHJ1ZSwibWF4U2NhbGUiOiIxIiwib3duaW5nUGFnZUlkIjoxMDA4OTU1NDksImVkaXRhYmxlIjpmYWxzZSwiY2VvSWQiOjEwMzQyMDA3NCwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6NSwibWFjcm9JZCI6ImIxNTUwYWZjLWI3Y2EtNDA2Ni1hMTc1LTI3YWMwYzNmN2UzZSIsInByZXZpZXdOYW1lIjoiQ29weSBvZiBDUFMgTkNNUCBEZXBsb3ltZW50IFByb3Bvc2FsLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiI2OTEiLCJzaW1wbGVWaWV3ZXIiOmZhbHNlLCJsYXN0TW9kaWZpZWQiOjE2MTkwMTkyMTMwMDAsImV4Y2VlZFBhZ2VXaWR0aCI6ZmFsc2UsIm9DbGllbnRJZCI6IiJ9
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlJhaHVsIFR5YWdpIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiIxMDA4OTU5NjciLCJkaWFncmFtTmFtZSI6InJlZ2lzdGVyIGRtaS1zZXJ2aWNlIiwiYXNwZWN0IjoiIiwibGlua3MiOiJhdXRvIiwiY2VvTmFtZSI6IkNQUy0zMzMgTmV0d29yayBDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgKE5DTVApIHNjb3BlIGZvciBJIHJlbGVhc2UgY29uc2lkZXJhdGlvbnMiLCJ0YnN0eWxlIjoidG9wIiwiY2FuQ29tbWVudCI6ZmFsc2UsImRpYWdyYW1VcmwiOiIiLCJjc3ZGaWxlVXJsIjoiIiwiYm9yZGVyIjp0cnVlLCJtYXhTY2FsZSI6IjEiLCJvd25pbmdQYWdlSWQiOjEwMDg5NTU0OSwiZWRpdGFibGUiOmZhbHNlLCJjZW9JZCI6MTAzNDIwMDc0LCJwYWdlSWQiOiIiLCJsYm94Ijp0cnVlLCJzZXJ2ZXJDb25maWciOnsiZW1haWxwcmV2aWV3IjoiMSJ9LCJvZHJpdmVJZCI6IiIsInJldmlzaW9uIjo0LCJtYWNyb0lkIjoiZjk3N2EyN2ItZGFlYy00NGVmLThiOTAtN2M5MzFkZjg4ZmU4IiwicHJldmlld05hbWUiOiJyZWdpc3RlciBkbWktc2VydmljZS5wbmciLCJsaWNlbnNlU3RhdHVzIjoiT0siLCJzZXJ2aWNlIjoiIiwiaXNUZW1wbGF0ZSI6IiIsIndpZHRoIjoiNjcxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNjE5MDE5MjgwMDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlJhaHVsIFR5YWdpIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiIxMDA4OTU5ODEiLCJkaWFncmFtTmFtZSI6InN5bmMiLCJhc3BlY3QiOiIiLCJsaW5rcyI6ImF1dG8iLCJjZW9OYW1lIjoiQ1BTLTMzMyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCAoTkNNUCkgc2NvcGUgZm9yIEkgcmVsZWFzZSBjb25zaWRlcmF0aW9ucyIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6MTAwODk1NTQ5LCJlZGl0YWJsZSI6ZmFsc2UsImNlb0lkIjoxMDM0MjAwNzQsInBhZ2VJZCI6IiIsImxib3giOnRydWUsInNlcnZlckNvbmZpZyI6eyJlbWFpbHByZXZpZXciOiIxIn0sIm9kcml2ZUlkIjoiIiwicmV2aXNpb24iOjYsIm1hY3JvSWQiOiJjMjc4YzgzZS1kZTY2LTRkZDgtOTUxMi04YTQwMjY4MTdjMDEiLCJwcmV2aWV3TmFtZSI6InN5bmMucG5nIiwibGljZW5zZVN0YXR1cyI6Ik9LIiwic2VydmljZSI6IiIsImlzVGVtcGxhdGUiOiIiLCJ3aWR0aCI6Ijg2MSIsInNpbXBsZVZpZXdlciI6ZmFsc2UsImxhc3RNb2RpZmllZCI6MTYxOTAxOTM1MjAwMCwiZXhjZWVkUGFnZVdpZHRoIjpmYWxzZSwib0NsaWVudElkIjoiIn0=
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlJhaHVsIFR5YWdpIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiIxMDA4OTU5NzEiLCJkaWFncmFtTmFtZSI6InB1dC1wb3N0LWRlbGV0ZSIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJDUFMtMzMzIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IChOQ01QKSBzY29wZSBmb3IgSSByZWxlYXNlIGNvbnNpZGVyYXRpb25zIiwidGJzdHlsZSI6InRvcCIsImNhbkNvbW1lbnQiOmZhbHNlLCJkaWFncmFtVXJsIjoiIiwiY3N2RmlsZVVybCI6IiIsImJvcmRlciI6dHJ1ZSwibWF4U2NhbGUiOiIxIiwib3duaW5nUGFnZUlkIjoxMDA4OTU1NDksImVkaXRhYmxlIjpmYWxzZSwiY2VvSWQiOjEwMzQyMDA3NCwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6NCwibWFjcm9JZCI6ImZiYjA2MmUwLWJhZmItNGRiNi04NDdiLTQyZmFhOWQyYTMwYSIsInByZXZpZXdOYW1lIjoicHV0LXBvc3QtZGVsZXRlLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiIxMzAxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNjE5MDE5NDEwMDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6IlJhaHVsIFR5YWdpIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6IlRvaW5lIFNpZWJlbGluayIsImxhbmd1YWdlIjoiZW4iLCJkaWFncmFtRGlzcGxheU5hbWUiOiIiLCJzRmlsZUlkIjoiIiwiYXR0SWQiOiIxMDA4OTU5NzciLCJkaWFncmFtTmFtZSI6ImdldC1vcCIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJDUFMtMzMzIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IChOQ01QKSBzY29wZSBmb3IgSSByZWxlYXNlIGNvbnNpZGVyYXRpb25zIiwidGJzdHlsZSI6InRvcCIsImNhbkNvbW1lbnQiOmZhbHNlLCJkaWFncmFtVXJsIjoiIiwiY3N2RmlsZVVybCI6IiIsImJvcmRlciI6dHJ1ZSwibWF4U2NhbGUiOiIxIiwib3duaW5nUGFnZUlkIjoxMDA4OTU1NDksImVkaXRhYmxlIjpmYWxzZSwiY2VvSWQiOjEwMzQyMDA3NCwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6MywibWFjcm9JZCI6IjNlZTA3YTZlLTYwMWMtNDA5MS1hYjJiLWRiOTM5YzlmNTBiYiIsInByZXZpZXdOYW1lIjoiZ2V0LW9wLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiI2NjEiLCJzaW1wbGVWaWV3ZXIiOmZhbHNlLCJsYXN0TW9kaWZpZWQiOjE2MTkwMTk0MzgwMDAsImV4Y2VlZFBhZ2VXaWR0aCI6ZmFsc2UsIm9DbGllbnRJZCI6IiJ9