{"context":{"domain":"sky-fit-atendimento"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"69cd6c664e19f3858e2fb59d","name":"Sky Fit Atendimento","domain":"sky-fit-atendimento","visibility":"public","settings":{"defaultAccessPolicy":"public"},"updatedAt":"2026-07-27T14:19:36.810Z","createdAt":"2026-04-01T19:05:10.922Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a7f540fb7014a3fb17ac284","component":"data2-core-types@Component","system":"69cd6c664e19f3858e2fb59d","params":{"extends":"data2-core-primitives@Block","component":"JanelasLogin","package":"sky-fit-atendimento","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"function esc(v) {\n  return String(v == null ? '' : v)\n    .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\n\nconst ICON_LOCK = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"10\" width=\"16\" height=\"11\" rx=\"2.5\"/><path d=\"M8 10V7a4 4 0 0 1 8 0v3\"/></svg>'\n\nasync function submit(d2) {\n  const emEl = d2.$('.f-email')\n  const pwEl = d2.$('.f-senha')\n  const email = emEl ? String(emEl.value || '').trim() : ''\n  const senha = pwEl ? String(pwEl.value || '') : ''\n\n  if (!email || !senha) {\n    d2.setState({ err: 'Informe e-mail e senha.' })\n    return\n  }\n\n  d2.setState({ busy: true, err: '' })\n  const ref = d2.param('authRef', '') || undefined\n  const auth = d2.auth(ref)\n\n  try {\n    await auth.login({ credentials: { email: email, senha: senha } })\n  } catch (e) {\n    // um login recusado NÃO vira exceção — o estado abaixo é o que decide\n  }\n\n  if (auth.isAuthed) {\n    d2.setState({ busy: false, err: '' })\n    const home = d2.param('homePath', '') || '/'\n    try { d2.router().goTo(home) } catch (e) { location.href = home }\n  } else {\n    d2.setState({ busy: false, err: 'E-mail ou senha inválidos.' })\n  }\n}\n\nexport default {\n  css: `\n:host { display: block; height: 100%; }\n* { box-sizing: border-box; }\n.wrap {\n  height: 100%; overflow: auto; padding: 32px 24px;\n  background: #F5F6FB; color: #1A1B33;\n  font-family: inherit; font-size: 14px; line-height: 1.45;\n  display: flex; align-items: center; justify-content: center;\n}\n.card {\n  width: 100%; max-width: 400px; background: #fff;\n  border: 1px solid #E8EAF2; border-radius: 16px; padding: 32px 28px;\n  box-shadow: 0 12px 32px rgba(26,27,51,.06);\n}\n.badge { width: 42px; height: 42px; border-radius: 12px; background: #EEF0FF; color: var(--accent, #241E64); padding: 10px; margin-bottom: 18px; }\n.badge svg { width: 100%; height: 100%; }\nh1 { margin: 0; font-size: 20px; font-weight: 650; letter-spacing: -0.01em; }\n.sub { margin: 6px 0 24px; font-size: 13px; color: #7A7F99; }\n.fld { display: flex; flex-direction: column; gap: 5px; margin-bottom: 14px; }\n.fld > span { font-size: 11px; font-weight: 600; color: #8A90AB; text-transform: uppercase; letter-spacing: .05em; }\n.fld input {\n  font: inherit; padding: 11px 12px; border: 1px solid #DFE2EE; border-radius: 10px;\n  background: #FAFBFF; color: #1A1B33; width: 100%;\n}\n.fld input:focus { outline: none; border-color: var(--accent, #241E64); background: #fff; box-shadow: 0 0 0 3px rgba(36,30,100,.10); }\n.btn {\n  width: 100%; margin-top: 8px; font: inherit; font-weight: 600; font-size: 14px;\n  padding: 12px 16px; border-radius: 10px; border: none; cursor: pointer;\n  background: var(--accent, #241E64); color: #fff;\n}\n.btn:hover { filter: brightness(1.12); }\n.btn[disabled] { opacity: .6; cursor: default; }\n.alert { margin-top: 14px; font-size: 12.5px; padding: 10px 12px; border-radius: 10px; background: #FFF1F2; color: #97364A; border: 1px solid #F3C9CF; }\n`,\n\n  render(d2) {\n    const accent = d2.param('accent', '') || '#241E64'\n    const st = d2.state\n    return '<div class=\"wrap\" style=\"--accent:' + esc(accent) + '\">'\n      + '<form class=\"card js-form\">'\n      + '<div class=\"badge\">' + ICON_LOCK + '</div>'\n      + '<h1>Janelas de Atendimento</h1>'\n      + '<p class=\"sub\">Acesso restrito aos administradores da Sky Fit.</p>'\n      + '<label class=\"fld\"><span>E-mail</span>'\n      + '<input class=\"f-email\" type=\"email\" autocomplete=\"username\" placeholder=\"voce@skyfit.com.br\"></label>'\n      + '<label class=\"fld\"><span>Senha</span>'\n      + '<input class=\"f-senha\" type=\"password\" autocomplete=\"current-password\" placeholder=\"••••••••\"></label>'\n      + '<button class=\"btn js-submit\" type=\"submit\"' + (st.busy ? ' disabled' : '') + '>'\n      + (st.busy ? 'Entrando…' : 'Entrar') + '</button>'\n      + (st.err ? '<div class=\"alert\">' + esc(st.err) + '</div>' : '')\n      + '</form></div>'\n  },\n\n  mounted(d2) {\n    d2.setState({ busy: false, err: '' })\n\n    d2.on('.js-form', 'submit', function (e) {\n      e.preventDefault()\n      submit(d2)\n    })\n\n    d2.on('.js-submit', 'click', function (e) {\n      e.preventDefault()\n      submit(d2)\n    })\n\n    d2.on('.f-senha', 'keydown', function (e) {\n      if (e.key === 'Enter') { e.preventDefault(); submit(d2) }\n    })\n  }\n}"}},"authRef":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"authRef"}}}},"homePath":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"homePath"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"6a7f51187435c7c79971c76f","component":"data2-core-types@Component","system":"69cd6c664e19f3858e2fb59d","params":{"extends":"data2-core-primitives@Block","component":"TimeWindowsManager","package":"sky-fit-atendimento","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const DAY_NAMES = ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado']\n\nconst ICON_TRASH = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 6h18M8 6V4h8v2M19 6l-1 14H6L5 6\"/><path d=\"M10 11v6M14 11v6\"/></svg>'\nconst ICON_PLUS = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 5v14M5 12h14\"/></svg>'\nconst ICON_CLOCK = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 7v5l3 2\"/></svg>'\nconst ICON_CHEVRON = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 6l6 6-6 6\"/></svg>'\n\nfunction esc(v) {\n  return String(v == null ? '' : v)\n    .replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\n\nfunction isoDate(v) {\n  if (!v) return ''\n  const s = String(v)\n  if (/^\\d{4}-\\d{2}-\\d{2}/.test(s)) return s.slice(0, 10)\n  const d = new Date(v)\n  if (isNaN(d.getTime())) return ''\n  return new Date(d.getTime() - d.getTimezoneOffset() * 60000).toISOString().slice(0, 10)\n}\n\nfunction brDate(v) {\n  const s = isoDate(v)\n  if (!s) return 'Sem data'\n  const p = s.split('-')\n  return p[2] + '/' + p[1] + '/' + p[0]\n}\n\nfunction weekdayOfISO(s) {\n  if (!s || !/^\\d{4}-\\d{2}-\\d{2}$/.test(s)) return -1\n  const p = s.split('-')\n  return new Date(Date.UTC(Number(p[0]), Number(p[1]) - 1, Number(p[2]))).getUTCDay()\n}\n\nfunction normTime(v) {\n  const m = String(v == null ? '' : v).trim().match(/^(\\d{1,2}):(\\d{1,2})/)\n  if (!m) return ''\n  const h = Math.max(0, Math.min(23, parseInt(m[1], 10)))\n  const mi = Math.max(0, Math.min(59, parseInt(m[2], 10)))\n  return String(h).padStart(2, '0') + ':' + String(mi).padStart(2, '0')\n}\n\nfunction winsOf(rec) {\n  const w = rec && rec.windows\n  if (!Array.isArray(w)) return []\n  return w.map(function (x) { return { start: normTime(x && x.start_date), end: normTime(x && x.end_date) } })\n}\n\nfunction summaryOf(rec) {\n  const ws = winsOf(rec).filter(function (w) { return w.start && w.end })\n  if (!ws.length) return 'Fechado'\n  return ws.map(function (w) { return w.start + ' – ' + w.end }).join('   ·   ')\n}\n\nfunction todayISO() {\n  const d = new Date()\n  return new Date(d.getTime() - d.getTimezoneOffset() * 60000).toISOString().slice(0, 10)\n}\n\nfunction splitRecords(recs) {\n  const daily = recs.filter(function (r) { return r && r.type === 'DAILY' })\n    .sort(function (a, b) { return Number(a.week_day) - Number(b.week_day) })\n  const holidays = recs.filter(function (r) { return r && r.type === 'HOLIDAY' })\n    .sort(function (a, b) { return isoDate(a.holiday_date).localeCompare(isoDate(b.holiday_date)) })\n  return { daily: daily, holidays: holidays }\n}\n\nfunction readWindowsFromDom(d2) {\n  return d2.$$('.win-row').map(function (el) {\n    const s = el.querySelector('.w-start')\n    const e = el.querySelector('.w-end')\n    return { start: normTime(s ? s.value : ''), end: normTime(e ? e.value : '') }\n  })\n}\n\nfunction clearEditor(d2) {\n  d2.setState({ mode: '', recId: '', weekDay: '', holidayDate: '', windows: [], msg: '', err: '' })\n}\n\nfunction openDaily(d2, rec) {\n  d2.setState({\n    mode: 'DAILY', recId: rec._id, weekDay: String(rec.week_day),\n    holidayDate: '', windows: winsOf(rec), msg: '', err: ''\n  })\n}\n\nfunction openHoliday(d2, rec) {\n  d2.setState({\n    mode: 'HOLIDAY', recId: rec._id, weekDay: '',\n    holidayDate: isoDate(rec.holiday_date), windows: winsOf(rec), msg: '', err: ''\n  })\n}\n\nfunction renderWindowRows(d2) {\n  const wins = d2.state.windows || []\n  if (!wins.length) {\n    return '<div class=\"no-win\">Nenhuma janela cadastrada — este dia fica <b>fechado</b>.</div>'\n  }\n  return wins.map(function (w, i) {\n    return '<div class=\"win-row\" data-key=\"win-' + i + '\">'\n      + '<span class=\"win-n\">' + (i + 1) + '</span>'\n      + '<label class=\"fld\"><span>Início</span><input class=\"w-start\" type=\"time\" step=\"60\" value=\"' + esc(w.start) + '\"></label>'\n      + '<span class=\"dash\">até</span>'\n      + '<label class=\"fld\"><span>Fim</span><input class=\"w-end\" type=\"time\" step=\"60\" value=\"' + esc(w.end) + '\"></label>'\n      + '<button class=\"icon-btn\" data-remove-win=\"' + i + '\" title=\"Remover janela\">' + ICON_TRASH + '</button>'\n      + '</div>'\n  }).join('')\n}\n\nfunction renderEditor(d2, holidays) {\n  const st = d2.state\n  if (!st.mode) {\n    return '<div class=\"editor-empty\">'\n      + '<div class=\"ee-icon\">' + ICON_CLOCK + '</div>'\n      + '<div class=\"ee-t\">Nenhum item selecionado</div>'\n      + '<div class=\"ee-s\">Escolha um dia da semana ou um feriado na coluna ao lado — ou crie um novo feriado.</div>'\n      + '</div>'\n  }\n\n  const isHoliday = st.mode === 'HOLIDAY'\n  const title = isHoliday\n    ? (st.recId ? 'Editar feriado' : 'Novo feriado')\n    : (DAY_NAMES[Number(st.weekDay)] || ('Dia ' + st.weekDay))\n  const subtitle = isHoliday\n    ? 'Feriados sobrepõem o horário semanal na data escolhida.'\n    : 'Horário padrão para todas as ocorrências deste dia da semana.'\n\n  let dateRow = ''\n  if (isHoliday) {\n    const wd = weekdayOfISO(st.holidayDate)\n    const dup = holidays.filter(function (h) {\n      return h._id !== st.recId && isoDate(h.holiday_date) === st.holidayDate\n    }).length > 0\n    dateRow = '<div class=\"date-row\">'\n      + '<label class=\"fld wide\"><span>Data do feriado</span><input class=\"h-date\" type=\"date\" value=\"' + esc(st.holidayDate) + '\"></label>'\n      + (wd >= 0 ? '<div class=\"date-note\">Cai em <b>' + DAY_NAMES[wd] + '</b>' + (dup ? ' — <span class=\"warn\">já existe um feriado nesta data</span>' : '') + '</div>' : '')\n      + '</div>'\n  }\n\n  return '<div class=\"ed-hd\">'\n    + '<div><div class=\"ed-t\">' + esc(title) + '</div><div class=\"ed-s\">' + esc(subtitle) + '</div></div>'\n    + (isHoliday && st.recId ? '<button class=\"btn ghost danger js-delete\">' + ICON_TRASH + '<span>Excluir</span></button>' : '')\n    + '</div>'\n    + dateRow\n    + '<div class=\"sec-t\">Janelas de atendimento</div>'\n    + '<div class=\"wins\">' + renderWindowRows(d2) + '</div>'\n    + '<button class=\"btn ghost js-add-win\">' + ICON_PLUS + '<span>Adicionar janela</span></button>'\n    + (st.err ? '<div class=\"alert err\">' + esc(st.err) + '</div>' : '')\n    + (st.msg ? '<div class=\"alert ok\">' + esc(st.msg) + '</div>' : '')\n    + '<div class=\"ed-ft\">'\n    + '<button class=\"btn ghost js-cancel\">Cancelar</button>'\n    + '<button class=\"btn primary js-save\"' + (st.saving ? ' disabled' : '') + '>' + (st.saving ? 'Salvando…' : 'Salvar') + '</button>'\n    + '</div>'\n}\n\nasync function reload(d2, ds) {\n  await ds.refresh()\n  await ds.loadAll()\n}\n\nasync function ensureDailyRows(d2, ds) {\n  const have = {}\n  ;(ds.records() || []).forEach(function (r) {\n    if (r && r.type === 'DAILY') have[String(r.week_day)] = true\n  })\n  const missing = []\n  for (let i = 0; i < 7; i++) if (!have[String(i)]) missing.push(String(i))\n  if (!missing.length) return false\n  for (const wd of missing) {\n    await ds.create({ type: 'DAILY', week_day: wd, windows: [] })\n  }\n  await reload(d2, ds)\n  return true\n}\n\nfunction collectWindows(d2) {\n  const raw = readWindowsFromDom(d2)\n  const clean = []\n  for (const w of raw) {\n    if (!w.start && !w.end) continue\n    if (!w.start || !w.end) return { error: 'Preencha início E fim de cada janela (ou deixe as duas em branco para descartá-la).' }\n    if (w.start >= w.end) return { error: 'Janela inválida (' + w.start + ' – ' + w.end + '): o fim precisa ser depois do início.' }\n    clean.push({ start_date: w.start, end_date: w.end })\n  }\n  clean.sort(function (a, b) { return a.start_date.localeCompare(b.start_date) })\n  for (let i = 1; i < clean.length; i++) {\n    if (clean[i].start_date < clean[i - 1].end_date) {\n      return { error: 'As janelas não podem se sobrepor (' + clean[i - 1].start_date + ' – ' + clean[i - 1].end_date + ' e ' + clean[i].start_date + ' – ' + clean[i].end_date + ').' }\n    }\n  }\n  return { windows: clean }\n}\n\nasync function saveCurrent(d2) {\n  const ds = d2.data()\n  const st = d2.state\n  if (!ds || !st.mode) return\n\n  const res = collectWindows(d2)\n  if (res.error) { d2.setState({ err: res.error, msg: '' }); return }\n  const wins = res.windows\n\n  let date = st.holidayDate\n  if (st.mode === 'HOLIDAY') {\n    const dateEl = d2.$('.h-date')\n    date = dateEl ? String(dateEl.value || '') : st.holidayDate\n    if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(date)) {\n      d2.setState({ err: 'Informe a data do feriado.', msg: '' }); return\n    }\n  }\n\n  d2.setState({ saving: true, err: '', msg: '' })\n  try {\n    if (st.mode === 'DAILY') {\n      await ds.update({ _id: st.recId, type: 'DAILY', week_day: String(st.weekDay), windows: wins })\n      await reload(d2, ds)\n      d2.setState({ windows: wins, saving: false, msg: (DAY_NAMES[Number(st.weekDay)] || 'Dia') + ' atualizado.' })\n    } else {\n      const payload = { type: 'HOLIDAY', holiday_date: date, windows: wins }\n      if (st.recId) { payload._id = st.recId; await ds.update(payload) } else { await ds.create(payload) }\n      await reload(d2, ds)\n      let id = st.recId\n      if (!id) {\n        const found = (ds.records() || []).filter(function (r) {\n          return r && r.type === 'HOLIDAY' && isoDate(r.holiday_date) === date\n        })\n        if (found.length) id = found[found.length - 1]._id\n      }\n      d2.setState({ recId: id || '', holidayDate: date, windows: wins, saving: false, msg: 'Feriado de ' + brDate(date) + ' salvo.' })\n    }\n  } catch (e) {\n    d2.setState({ saving: false, err: 'Erro ao salvar: ' + (e && e.message ? e.message : String(e)) })\n  }\n}\n\nexport default {\n  css: `\n:host { display: block; height: 100%; }\n* { box-sizing: border-box; }\n.wrap {\n  height: 100%; overflow: auto; padding: 24px;\n  background: #F5F6FB; color: #1A1B33;\n  font-family: inherit; font-size: 14px; line-height: 1.45;\n  display: grid; grid-template-columns: minmax(320px, 420px) minmax(0, 1fr);\n  grid-template-rows: auto 1fr; gap: 18px 20px; align-content: start;\n}\n.hd { grid-column: 1 / -1; }\n.hd h1 { margin: 0; font-size: 22px; font-weight: 650; letter-spacing: -0.01em; }\n.hd p { margin: 6px 0 0; font-size: 13px; color: #7A7F99; }\n.col { display: flex; flex-direction: column; gap: 18px; min-width: 0; }\n.card { background: #fff; border: 1px solid #E8EAF2; border-radius: 14px; padding: 18px 18px 16px; }\n.card-hd { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; }\n.card-t { font-size: 15px; font-weight: 650; }\n.card-s { font-size: 12px; color: #7A7F99; margin-top: 3px; }\n.list { display: flex; flex-direction: column; gap: 6px; }\n.row {\n  display: grid; grid-template-columns: 1fr auto 16px; align-items: center; gap: 10px;\n  width: 100%; text-align: left; padding: 11px 12px; border-radius: 10px;\n  border: 1px solid transparent; background: #FAFBFF; cursor: pointer;\n  font: inherit; color: inherit; transition: background .12s, border-color .12s;\n}\n.row:hover { background: #F1F3FF; }\n.row.sel { background: #EEF0FF; border-color: var(--accent, #241E64); }\n.row-d { font-weight: 550; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.row-w { font-size: 12.5px; color: #4C5170; font-variant-numeric: tabular-nums; white-space: nowrap; }\n.row-w.closed { color: #B0455B; font-style: italic; }\n.row-c { width: 16px; height: 16px; color: #A8ADC4; }\n.row-c svg { width: 100%; height: 100%; }\n.hol-list { display: flex; flex-direction: column; gap: 6px; max-height: 280px; overflow: auto; }\n.hol-empty { font-size: 12.5px; color: #9096B0; padding: 14px 12px; background: #FAFBFF; border-radius: 10px; text-align: center; }\n.editor { display: flex; flex-direction: column; gap: 14px; min-height: 460px; }\n.editor-empty { margin: auto; text-align: center; max-width: 340px; padding: 40px 0; }\n.ee-icon { width: 38px; height: 38px; margin: 0 auto 12px; color: #C3C7DC; }\n.ee-icon svg { width: 100%; height: 100%; }\n.ee-t { font-weight: 600; font-size: 15px; }\n.ee-s { font-size: 13px; color: #7A7F99; margin-top: 5px; }\n.ed-hd { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }\n.ed-t { font-size: 18px; font-weight: 650; }\n.ed-s { font-size: 12.5px; color: #7A7F99; margin-top: 3px; }\n.sec-t { font-size: 12px; font-weight: 650; text-transform: uppercase; letter-spacing: .06em; color: #8A90AB; margin-top: 2px; }\n.date-row { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }\n.date-note { font-size: 12.5px; color: #7A7F99; padding-bottom: 10px; }\n.date-note .warn { color: #B0455B; font-weight: 600; }\n.wins { display: flex; flex-direction: column; gap: 8px; }\n.win-row { display: flex; align-items: flex-end; gap: 10px; background: #FAFBFF; border: 1px solid #EBEDF6; border-radius: 12px; padding: 10px 12px; flex-wrap: wrap; }\n.win-n { width: 22px; height: 22px; border-radius: 999px; background: #EEF0FF; color: var(--accent, #241E64); font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-bottom: 8px; flex: none; }\n.fld { display: flex; flex-direction: column; gap: 4px; }\n.fld.wide { min-width: 200px; }\n.fld > span { font-size: 11px; font-weight: 600; color: #8A90AB; text-transform: uppercase; letter-spacing: .05em; }\n.fld input { font: inherit; font-variant-numeric: tabular-nums; padding: 8px 10px; border: 1px solid #DFE2EE; border-radius: 9px; background: #fff; color: #1A1B33; min-width: 118px; }\n.fld input:focus { outline: none; border-color: var(--accent, #241E64); box-shadow: 0 0 0 3px rgba(36,30,100,.10); }\n.dash { font-size: 12px; color: #9096B0; padding-bottom: 10px; }\n.no-win { font-size: 13px; color: #7A7F99; background: #FAFBFF; border: 1px dashed #DFE2EE; border-radius: 12px; padding: 16px; text-align: center; }\n.icon-btn { margin-bottom: 4px; width: 32px; height: 32px; padding: 7px; border-radius: 9px; border: 1px solid #E4E7F2; background: #fff; color: #7A7F99; cursor: pointer; flex: none; }\n.icon-btn svg { width: 100%; height: 100%; }\n.icon-btn:hover { background: #FFF1F2; border-color: #F3C9CF; color: #B0455B; }\n.btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; font: inherit; font-weight: 600; font-size: 13px; padding: 9px 16px; border-radius: 10px; border: 1px solid transparent; cursor: pointer; }\n.btn svg { width: 15px; height: 15px; }\n.btn.primary { background: var(--accent, #241E64); color: #fff; }\n.btn.primary:hover { filter: brightness(1.12); }\n.btn.primary[disabled] { opacity: .6; cursor: default; }\n.btn.ghost { background: #fff; border-color: #E1E4F0; color: #3A3F5C; align-self: flex-start; }\n.btn.ghost:hover { background: #F5F6FB; }\n.btn.ghost.danger { color: #B0455B; border-color: #F0D3D8; }\n.btn.ghost.danger:hover { background: #FFF1F2; }\n.btn.small { padding: 7px 12px; font-size: 12.5px; }\n.ed-ft { margin-top: auto; padding-top: 14px; border-top: 1px solid #EEF0F6; display: flex; justify-content: flex-end; gap: 10px; }\n.alert { font-size: 12.5px; padding: 10px 12px; border-radius: 10px; }\n.alert.err { background: #FFF1F2; color: #97364A; border: 1px solid #F3C9CF; }\n.alert.ok { background: #EDFAF1; color: #1F6B41; border: 1px solid #C6E9D3; }\n.state { grid-column: 1 / -1; padding: 60px 0; text-align: center; color: #7A7F99; font-size: 14px; }\n@media (max-width: 980px) { .wrap { grid-template-columns: minmax(0, 1fr); } }\n`,\n\n  render(d2) {\n    const accent = d2.param('accent', '') || '#241E64'\n    const head = '<div class=\"hd\"><h1>Janelas de Atendimento</h1>'\n      + '<p>Horários em que a Sky Fit atende. Um feriado sobrepõe o horário semanal na data correspondente.</p></div>'\n\n    const ds = d2.data()\n    if (!ds) {\n      return '<div class=\"wrap\" style=\"--accent:' + esc(accent) + '\">' + head\n        + '<div class=\"state\">Nenhum DataSet vinculado. Defina o parâmetro <b>dataset</b> na instância deste componente.</div></div>'\n    }\n    if (!d2.state.ready) {\n      return '<div class=\"wrap\" style=\"--accent:' + esc(accent) + '\">' + head\n        + '<div class=\"state\">Carregando janelas de atendimento…</div></div>'\n    }\n\n    const parts = splitRecords(ds.records() || [])\n    const daily = parts.daily\n    const holidays = parts.holidays\n    const st = d2.state\n\n    const dailyRows = daily.map(function (r) {\n      const open = winsOf(r).filter(function (w) { return w.start && w.end }).length > 0\n      const sel = st.mode === 'DAILY' && st.recId === r._id\n      return '<div class=\"row' + (sel ? ' sel' : '') + '\" data-key=\"' + esc(r._id) + '\" data-daily=\"' + esc(r._id) + '\">'\n        + '<span class=\"row-d\">' + esc(DAY_NAMES[Number(r.week_day)] || ('Dia ' + r.week_day)) + '</span>'\n        + '<span class=\"row-w' + (open ? '' : ' closed') + '\">' + esc(summaryOf(r)) + '</span>'\n        + '<span class=\"row-c\">' + ICON_CHEVRON + '</span>'\n        + '</div>'\n    }).join('')\n\n    const holRows = holidays.length\n      ? holidays.map(function (r) {\n        const open = winsOf(r).filter(function (w) { return w.start && w.end }).length > 0\n        const sel = st.mode === 'HOLIDAY' && st.recId === r._id\n        return '<div class=\"row' + (sel ? ' sel' : '') + '\" data-key=\"' + esc(r._id) + '\" data-holiday=\"' + esc(r._id) + '\">'\n          + '<span class=\"row-d\">' + esc(brDate(r.holiday_date)) + '</span>'\n          + '<span class=\"row-w' + (open ? '' : ' closed') + '\">' + esc(summaryOf(r)) + '</span>'\n          + '<span class=\"row-c\">' + ICON_CHEVRON + '</span>'\n          + '</div>'\n      }).join('')\n      : '<div class=\"hol-empty\">Nenhum feriado cadastrado.</div>'\n\n    return '<div class=\"wrap\" style=\"--accent:' + esc(accent) + '\">'\n      + head\n      + '<div class=\"col\">'\n      + '<div class=\"card\">'\n      + '<div class=\"card-hd\"><div><div class=\"card-t\">Horário semanal</div>'\n      + '<div class=\"card-s\">Clique em um dia para editar as janelas.</div></div></div>'\n      + '<div class=\"list\">' + dailyRows + '</div>'\n      + '</div>'\n      + '<div class=\"card\">'\n      + '<div class=\"card-hd\"><div><div class=\"card-t\">Feriados</div>'\n      + '<div class=\"card-s\">' + holidays.length + ' cadastrado(s). Sobrepõem o horário semanal.</div></div>'\n      + '<button class=\"btn ghost small js-new-holiday\">' + ICON_PLUS + '<span>Novo feriado</span></button></div>'\n      + '<div class=\"hol-list\">' + holRows + '</div>'\n      + '</div>'\n      + '</div>'\n      + '<div class=\"card editor\">' + renderEditor(d2, holidays) + '</div>'\n      + '</div>'\n  },\n\n  mounted(d2) {\n    d2.setState({ ready: false, mode: '', recId: '', weekDay: '', holidayDate: '', windows: [], msg: '', err: '', saving: false })\n\n    const ds = d2.data()\n    if (ds) {\n      ;(async function () {\n        try {\n          await reload(d2, ds)\n          await ensureDailyRows(d2, ds)\n        } catch (e) {\n          d2.setState({ err: 'Falha ao carregar: ' + (e && e.message ? e.message : String(e)) })\n        }\n        d2.setState({ ready: true })\n      })()\n    } else {\n      d2.setState({ ready: true })\n    }\n\n    d2.on('[data-daily]', 'click', function (e, el) {\n      const id = el.getAttribute('data-daily')\n      const rec = (d2.data().records() || []).filter(function (r) { return r._id === id })[0]\n      if (rec) openDaily(d2, rec)\n    })\n\n    d2.on('[data-holiday]', 'click', function (e, el) {\n      const id = el.getAttribute('data-holiday')\n      const rec = (d2.data().records() || []).filter(function (r) { return r._id === id })[0]\n      if (rec) openHoliday(d2, rec)\n    })\n\n    d2.on('.js-new-holiday', 'click', function () {\n      d2.setState({ mode: 'HOLIDAY', recId: '', weekDay: '', holidayDate: todayISO(), windows: [], msg: '', err: '' })\n    })\n\n    d2.on('.js-add-win', 'click', function () {\n      const cur = readWindowsFromDom(d2)\n      const last = cur[cur.length - 1]\n      const next = { start: last && last.end ? last.end : '08:00', end: '' }\n      d2.setState({ windows: cur.concat([next]), msg: '', err: '' })\n    })\n\n    d2.on('[data-remove-win]', 'click', function (e, el) {\n      const i = Number(el.getAttribute('data-remove-win'))\n      const cur = readWindowsFromDom(d2)\n      cur.splice(i, 1)\n      d2.setState({ windows: cur, msg: '', err: '' })\n    })\n\n    d2.on('.h-date', 'change', function (e, el) {\n      d2.setState({ holidayDate: String(el.value || ''), msg: '', err: '' })\n    })\n\n    d2.on('.js-cancel', 'click', function () { clearEditor(d2) })\n\n    d2.on('.js-save', 'click', function () { saveCurrent(d2) })\n\n    d2.on('.js-delete', 'click', async function () {\n      const st = d2.state\n      if (!st.recId) return\n      const ok = await d2.dialog.confirm('Excluir o feriado de ' + brDate(st.holidayDate) + '?')\n      if (!ok) return\n      const ds2 = d2.data()\n      d2.setState({ saving: true, err: '', msg: '' })\n      try {\n        await ds2.remove(st.recId)\n        await reload(d2, ds2)\n        clearEditor(d2)\n        d2.setState({ saving: false, msg: 'Feriado excluído.' })\n      } catch (err) {\n        d2.setState({ saving: false, err: 'Erro ao excluir: ' + (err && err.message ? err.message : String(err)) })\n      }\n    })\n  }\n}"}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}},"accent":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"accent"}}}}}}}}}},{"_id":"5ed9bed7b9e0891ce913e884","component":"data2-core-types@Component","params":{"package":"data2-core","component":"DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5f472ae463c680de4ff296e9","component":"data2-core-types@Component","params":{"package":"data2-core","component":"Data2TableDataSource","extends":"data2-core@DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7f542c6c713f0dc1c2c389","component":"data2-core-primitives@Router","system":"69cd6c664e19f3858e2fb59d","displayName":"🧭 Router Janelas","params":{"routerType":{"component":"data2-core-primitives@String","params":{"content":"browser"}},"routes":[{"component":"data2-core-primitives@Route","params":{"path":"","name":"Janelas de Atendimento","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"WTLJcM3XZwPiycr4UAc8e"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"janelaAuth"}}}}]}}],"login":{"component":"data2-core-types@ArtboardReference","params":{"reference":"bgJewt9QrQc_w3W-4fQTe"}}},"reference":"janelaRouter","deleteMetadata":{}},{"_id":"6a7f53e86c713f0dc1c2c2ab","component":"data2-core-primitives@Artboard","system":"69cd6c664e19f3858e2fb59d","displayName":"🔐 Login Janelas","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"🔐 Login Janelas"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":-1829,"y":-82,"exactX":-1828.71,"exactY":-81.78}}},"reference":"bgJewt9QrQc_w3W-4fQTe","deleteMetadata":{}},{"_id":"6a7f4812bbce4725b9b8d69b","component":"data2-core-primitives@Artboard","system":"69cd6c664e19f3858e2fb59d","displayName":"⏰ Janelas de Atendimento","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"⏰ Janelas de Atendimento"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":-1843,"y":1516,"exactX":-1843.15,"exactY":1515.83}}},"reference":"WTLJcM3XZwPiycr4UAc8e","deleteMetadata":{}},{"_id":"a7ab6fa01d02f88871f637af","parent":"6a7f53e86c713f0dc1c2c2ab","component":"sky-fit-atendimento@JanelasLogin","system":"69cd6c664e19f3858e2fb59d","displayName":"Login Janelas","params":{"authRef":"janelaAuth","homePath":"/","accent":{"component":"data2-core-types@Color","params":{"rgba":"#241E64"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"Ih6_0XnqlHkgjS0BdwwLr","deleteMetadata":{}},{"_id":"036d945aa7bcfd57afcfaab0","parent":"6a7f4812bbce4725b9b8d69b","component":"sky-fit-atendimento@TimeWindowsManager","system":"69cd6c664e19f3858e2fb59d","displayName":"Janelas Manager","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"timeWindowsAdminDataSet"}},"accent":{"component":"data2-core-types@Color","params":{"rgba":"#241E64"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"bN2Dhixye1HNB5bVHdgiz","deleteMetadata":{}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7f4cab0209d1248d110142","displayName":"app janela de atendimento","reference":"GT0Jce_KvyymSa_imQV7v","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"janela-atendimento"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Router","reference":"janelaRouter"}}},"system":"69cd6c664e19f3858e2fb59d","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7f53f0e811f18f500e1924","component":"data2-core@AuthenticationStrategy","system":"69cd6c664e19f3858e2fb59d","params":{"credentials":[{"key":"email"},{"key":"senha"}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"janela-adminsDataSet"}},"email":"email","password":"senha","role":"role","roleDefault":"admin"},"reference":"janelaAuth","deleteMetadata":{}},{"_id":"6a7f53e54cf09d444f33b877","component":"data2-core@DataSet","system":"69cd6c664e19f3858e2fb59d","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"janela-admins"}}},"reference":"janela-adminsDataSet","deleteMetadata":{}},{"_id":"6a7f53e569da4b15e92a6b55","component":"data2-core@Data2TableDataSource","system":"69cd6c664e19f3858e2fb59d","params":{"table":"janela-admins","schema":[{"component":"data2-core-types@Field","params":{"key":"nome","title":"Nome","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"email","title":"E-mail","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"senha","title":"Senha","component":"data2-core-types@Password","required":true}},{"component":"data2-core-types@Field","params":{"key":"role","title":"Perfil","component":"data2-core-primitives@String"}}]},"reference":"janela-admins","deleteMetadata":{}},{"_id":"6a7f450eb7014a3fb17a9a13","component":"data2-core@DataSet","system":"69cd6c664e19f3858e2fb59d","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"Kz7TxPNU2isfdmKz3rUKP"}},"sort":{"type":1,"week_day":1},"pagination":{"size":200},"autoFetch":true},"reference":"timeWindowsAdminDataSet","deleteMetadata":{}},{"_id":"6a7f41c8006be07ef3de351a","component":"data2-core@Data2TableDataSource","system":"69cd6c664e19f3858e2fb59d","params":{"table":"Kz7TxPNU2isfdmKz3rUKP","multi":["create"],"schema":[{"component":"data2-core-types@Field","params":{"title":"type","key":"type","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"week_day","key":"week_day","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"title":"holiday_date","key":"holiday_date","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"title":"windows","key":"windows","component":"data2-core-primitives@Object","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"schema":[{"params":{"title":"start_date","key":"start_date","component":"data2-core-primitives@String"},"component":"data2-core-types@Field"},{"params":{"title":"end_date","key":"end_date","component":"data2-core-primitives@String"},"component":"data2-core-types@Field"}]},"break":true}]},"reference":"Kz7TxPNU2isfdmKz3rUKP","deleteMetadata":{}}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}