{"context":{"domain":"natura-br-cf"},"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":"6671e96b001009d97f222f73","name":"Natura Brasil CF","domain":"natura-br-cf","visibility":"private","settings":{"defaultAccessPolicy":"private"},"updatedAt":"2026-08-19T00:29:05.737Z","createdAt":"2024-06-18T20:09:15.343Z"}]}},{"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":"6af5cd31ab4b7542c0d32e3e","component":"data2-core-types@Component","system":"6671e96b001009d97f222f73","params":{"extends":"data2-core-primitives@Block","component":"Login_do_Monitoramento_dos_Fluxos_monFluxosLogin","package":"natura-br-cf","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// Login do Monitoramento dos Fluxos (CF-16 / BOT-12). Usa só o auth do monitoramento (param `auth`).\n// Sem cadastro: usuários são criados pelo builder na tabela mon_fluxos_users.\n\nfunction esc(v) {\n  return String(v == null ? '' : v).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\n\nexport default {\n  css: `\n    :host{display:block;height:100%}\n    *{box-sizing:border-box}\n    .pg{height:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:#F7F4EF;font:14px/1.45 system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;color:#2B2520}\n    .card{width:100%;max-width:400px;background:#fff;border:1px solid #E8E0D6;border-radius:16px;padding:28px 28px 24px;box-shadow:0 10px 30px rgba(43,37,32,.08)}\n    .tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#B8501F;background:#FCEFE6;padding:4px 9px;border-radius:999px}\n    h1{margin:12px 0 4px;font-size:22px}\n    p.sub{margin:0 0 20px;color:#8A8178;font-size:13px}\n    label{display:block;font-size:12.5px;font-weight:600;color:#5A5047;margin:12px 0 6px}\n    input{width:100%;padding:10px 12px;border:1px solid #DDD3C7;border-radius:10px;font:inherit;font-size:14px;background:#fff;color:#2B2520}\n    input:focus{outline:2px solid #F0B48A;border-color:#E8962B}\n    button{width:100%;margin-top:20px;padding:11px 14px;border:0;border-radius:10px;background:#D2602A;color:#fff;font:inherit;font-weight:700;font-size:14px;cursor:pointer}\n    button:disabled{opacity:.6;cursor:default}\n    .err{margin-top:14px;background:#FDECEA;color:#9B2C1F;border:1px solid #F3C2BB;border-radius:10px;padding:9px 12px;font-size:13px}\n    .foot{margin-top:16px;font-size:12px;color:#A0968B;text-align:center}\n  `,\n\n  render(d2) {\n    const st = d2.state\n    return `<div class=\"pg\"><form class=\"card\" novalidate>\n      <span class=\"tag\">Monitoramento dos fluxos</span>\n      <h1>Entrar</h1>\n      <p class=\"sub\">Cancelamento e Troca · acesso restrito à equipe do monitoramento</p>\n      <label for=\"em\">E-mail</label>\n      <input id=\"em\" name=\"email\" type=\"email\" autocomplete=\"username\" value=\"${esc(st.email || '')}\" />\n      <label for=\"pw\">Senha</label>\n      <input id=\"pw\" name=\"password\" type=\"password\" autocomplete=\"current-password\" />\n      <button type=\"submit\" ${st.busy ? 'disabled' : ''}>${st.busy ? 'Entrando…' : 'Entrar'}</button>\n      ${st.error ? `<div class=\"err\">${esc(st.error)}</div>` : ''}\n      <div class=\"foot\">Sem acesso? Peça para o responsável pelo monitoramento.</div>\n    </form></div>`\n  },\n\n  mounted(d2) {\n    d2.on('input[name=\"email\"]', 'input', (e, el) => { d2.state.email = el.value })\n    d2.on('form', 'submit', async (e) => {\n      e.preventDefault()\n      const email = String((d2.$('input[name=\"email\"]') || {}).value || '').trim().toLowerCase()\n      const pwEl = d2.$('input[name=\"password\"]')\n      const password = String((pwEl || {}).value || '')\n      if (!email || !password) { d2.setState({ error: 'Informe e-mail e senha.' }); return }\n      d2.setState({ busy: true, error: null, email })\n      try {\n        await d2.auth(d2.param('auth')).login({ email, password })\n        const a = d2.auth(d2.param('auth'))\n        const ok = !!(a && (a.user || a.session))\n        if (!ok) throw new Error('login')\n        location.assign(location.pathname || '/')\n      } catch (err) {\n        if (pwEl) pwEl.value = ''\n        d2.setState({ busy: false, error: 'E-mail ou senha inválidos, ou usuário sem acesso.' })\n      }\n    })\n  },\n}\n"}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}}}}}}}},{"_id":"6af5c947f7a52ff80a5fe90d","component":"data2-core-types@Component","system":"6671e96b001009d97f222f73","params":{"extends":"data2-core-primitives@Block","component":"Monitoramento_dos_fluxos_monFluxos","package":"natura-br-cf","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"// Monitoramento dos fluxos de Cancelamento e Troca (CF-16 / BOT-9). 12/11/2026.\n// Lê tudo pelo rush mon-fluxos-data (param `api`); login pelo param `auth` (Agents Auth).\n// Erro = result error OU statusCode >= 400, exceto 409 nos rushes de OCCURRENCE (o rush marca occ:true).\n\nconst PERIODS = [\n  ['15m', '15 min', 15 * 60e3, 60e3],\n  ['1h', '1 hora', 60 * 60e3, 5 * 60e3],\n  ['6h', '6 horas', 6 * 60 * 60e3, 30 * 60e3],\n  ['today', 'Hoje', 0, 60 * 60e3],\n  ['24h', '24 horas', 24 * 60 * 60e3, 60 * 60e3],\n]\nconst FLOWS = [['all', 'Todos'], ['cancelamento', 'Cancelamento'], ['troca', 'Troca']]\nconst ENVS = [['PRD', 'PRD'], ['HML', 'HML'], ['ALL', 'Todos']]\nconst REFRESH_MS = 15000\nconst PAGE = 20\n\nfunction esc(v) {\n  return String(v == null ? '' : v).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n}\nfunction unwrap(r) {\n  if (r && r.ok === undefined && r.data && typeof r.data === 'object') return r.data\n  return r || {}\n}\nfunction periodOf(key) { return PERIODS.find((p) => p[0] === key) || PERIODS[1] }\nfunction sinceOf(key) {\n  const p = periodOf(key)\n  let ms\n  if (p[0] === 'today') {\n    const brt = new Date(Date.now() - 3 * 3600e3)\n    ms = Date.UTC(brt.getUTCFullYear(), brt.getUTCMonth(), brt.getUTCDate(), 3, 0, 0)\n  } else ms = Date.now() - p[2]\n  const sinceOid = Math.floor(ms / 1000).toString(16).padStart(8, '0') + '0000000000000000'\n  return { since: new Date(ms).toISOString(), sinceOid, bucket: p[3], fromMs: ms }\n}\nfunction isErr(it, occ) { const sc = Number(it.sc) || 0; return (it.r === 'error' || sc >= 400) && !(occ && sc === 409) }\nfunction pct(err, n) { return n ? (err * 100) / n : 0 }\nfunction pctTxt(v) { return (v >= 10 ? v.toFixed(0) : v.toFixed(1)).replace('.', ',') + '%' }\nfunction tone(v, n) { if (!n) return 'mute'; if (v >= 10) return 'bad'; if (v >= 2) return 'warn'; return 'good' }\nfunction hhmmss(iso) { if (!iso) return '—'; const d = new Date(iso); return d.toLocaleTimeString('pt-BR', { timeZone: 'America/Sao_Paulo' }) }\nfunction dayTime(iso) { if (!iso) return '—'; const d = new Date(iso); return d.toLocaleString('pt-BR', { timeZone: 'America/Sao_Paulo', day: '2-digit', month: '2-digit', hour: '2-digit', minute: '2-digit', second: '2-digit' }) }\nfunction ago(iso) {\n  if (!iso) return ''\n  const s = Math.max(0, Math.round((Date.now() - new Date(iso).getTime()) / 1000))\n  if (s < 60) return `há ${s}s`\n  if (s < 3600) return `há ${Math.floor(s / 60)} min`\n  return `há ${Math.floor(s / 3600)} h`\n}\nfunction ms(v) { if (v == null) return '—'; return v >= 1000 ? (v / 1000).toFixed(1).replace('.', ',') + ' s' : Math.round(v) + ' ms' }\nfunction num(v) { return Number(v || 0).toLocaleString('pt-BR') }\nfunction pretty(o) { try { return JSON.stringify(o, null, 2) } catch (e) { return String(o) } }\n\n// junta cfg + resultado do summary\nfunction rowsOf(cfg, sums, flow) {\n  return (cfg || []).map((c, i) => {\n    const s = (sums && sums[i]) || {}\n    const t = (s.tot && s.tot[0]) || {}\n    return { ref: c.ref, name: c.name, occ: !!c.occ, flow, n: t.n || 0, err: t.err || 0, avg: t.avg, max: t.max, last: t.last, lastErr: t.lastErr, serie: s.serie || [] }\n  })\n}\nfunction totalOf(rows) {\n  const n = rows.reduce((a, r) => a + r.n, 0)\n  const err = rows.reduce((a, r) => a + r.err, 0)\n  const lastErr = rows.map((r) => r.lastErr).filter(Boolean).sort().pop() || null\n  const last = rows.map((r) => r.last).filter(Boolean).sort().pop() || null\n  const serie = {}\n  rows.forEach((r) => r.serie.forEach((b) => { const k = b._id; serie[k] = serie[k] || { n: 0, err: 0 }; serie[k].n += b.n; serie[k].err += b.err }))\n  return { n, err, ok: n - err, p: pct(err, n), lastErr, last, serie }\n}\nfunction spark(serie, fromMs, bucket) {\n  const start = Math.floor(fromMs / bucket)\n  const end = Math.floor(Date.now() / bucket)\n  const keys = []\n  for (let k = start; k <= end && keys.length < 60; k++) keys.push(k)\n  if (!keys.length) return ''\n  const max = Math.max(1, ...keys.map((k) => (serie[k] ? serie[k].n : 0)))\n  const w = 100 / keys.length\n  const bars = keys.map((k, i) => {\n    const b = serie[k] || { n: 0, err: 0 }\n    const hN = (b.n / max) * 100\n    const hE = (b.err / max) * 100\n    const tip = `${new Date(k * bucket).toLocaleTimeString('pt-BR', { timeZone: 'America/Sao_Paulo', hour: '2-digit', minute: '2-digit' })} · ${b.n} chamadas · ${b.err} erros`\n    return `<g><title>${esc(tip)}</title><rect x=\"${i * w + 0.4}\" y=\"${100 - hN}\" width=\"${Math.max(w - 0.8, 0.6)}\" height=\"${hN}\" class=\"sb-n\"/><rect x=\"${i * w + 0.4}\" y=\"${100 - hE}\" width=\"${Math.max(w - 0.8, 0.6)}\" height=\"${hE}\" class=\"sb-e\"/></g>`\n  }).join('')\n  return `<svg class=\"spark\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\">${bars}</svg>`\n}\n\nexport default {\n  css: `\n    :host{display:block;height:100%}\n    *{box-sizing:border-box}\n    .pg{height:100%;overflow:auto;background:#F7F4EF;color:#2B2520;font:14px/1.45 system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}\n    .top{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 24px;background:#fff;border-bottom:1px solid #E8E0D6}\n    .brand{display:flex;flex-direction:column;margin-right:8px}\n    .brand b{font-size:16px}\n    .brand span{font-size:12px;color:#8A8178}\n    .seg{display:inline-flex;background:#F3ECE3;border-radius:10px;padding:3px}\n    .seg button{border:0;background:none;font:inherit;font-size:13px;padding:6px 11px;border-radius:8px;cursor:pointer;color:#5A5047}\n    .seg button.on{background:#fff;color:#2B2520;font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.12)}\n    .sp{flex:1}\n    .live{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#6B6159}\n    .dot{width:9px;height:9px;border-radius:50%;background:#B9B0A6}\n    .dot.on{background:#2E9E5B;box-shadow:0 0 0 0 rgba(46,158,91,.6);animation:pulse 1.8s infinite}\n    .dot.busy{background:#E8962B}\n    @keyframes pulse{0%{box-shadow:0 0 0 0 rgba(46,158,91,.55)}70%{box-shadow:0 0 0 8px rgba(46,158,91,0)}100%{box-shadow:0 0 0 0 rgba(46,158,91,0)}}\n    .btn{border:1px solid #E0D6CA;background:#fff;font:inherit;font-size:13px;padding:6px 12px;border-radius:8px;cursor:pointer;color:#3B332C}\n    .btn:hover{background:#F7F1EA}\n    .btn:disabled{opacity:.45;cursor:default}\n    .user{font-size:12.5px;color:#6B6159;display:flex;align-items:center;gap:8px}\n    .wrap{padding:20px 24px 48px;max-width:1500px;margin:0 auto}\n    .err-box{background:#FDECEA;color:#9B2C1F;border:1px solid #F3C2BB;border-radius:10px;padding:10px 14px;margin-bottom:16px}\n    .cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-bottom:20px}\n    .card{background:#fff;border:1px solid #E8E0D6;border-radius:14px;padding:16px 18px;position:relative;overflow:hidden}\n    .card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5px;background:#B9B0A6}\n    .card.good::before{background:#2E9E5B}.card.warn::before{background:#E8A23A}.card.bad::before{background:#D2402E}\n    .card h3{margin:0 0 10px;font-size:15px;display:flex;justify-content:space-between;align-items:center}\n    .badge{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;background:#EEE8E1;color:#5A5047}\n    .badge.good{background:#E3F4EA;color:#1E7543}.badge.warn{background:#FCF0DB;color:#94600F}.badge.bad{background:#FBE3E0;color:#A92E1F}\n    .kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}\n    .kpi span{display:block;font-size:11.5px;color:#8A8178;text-transform:uppercase;letter-spacing:.04em}\n    .kpi b{font-size:22px;font-variant-numeric:tabular-nums}\n    .kpi.e b{color:#C23A28}\n    .kpi.p b.good{color:#1E7543}.kpi.p b.warn{color:#B07212}.kpi.p b.bad{color:#C23A28}\n    .meta{margin-top:8px;font-size:12px;color:#8A8178}\n    .spark{display:block;width:100%;height:44px;margin-top:10px;background:#FBF8F4;border-radius:6px}\n    .sb-n{fill:#D9CFC3}.sb-e{fill:#D2402E}\n    .panel{background:#fff;border:1px solid #E8E0D6;border-radius:14px;margin-bottom:20px;overflow:hidden}\n    .panel-h{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid #EFE8E0}\n    .panel-h h2{margin:0;font-size:15px;margin-right:auto}\n    table{width:100%;border-collapse:collapse;font-size:13px}\n    th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:#8A8178;padding:8px 12px;border-bottom:1px solid #EFE8E0;background:#FCFAF7;white-space:nowrap}\n    td{padding:8px 12px;border-bottom:1px solid #F3EEE8;vertical-align:middle}\n    td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}\n    th.n{text-align:right}\n    tr.click{cursor:pointer}\n    tr.click:hover td{background:#FBF6F0}\n    tr.sel td{background:#FFF4E6}\n    tr.zero td{color:#B0A69B}\n    .fl{font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;white-space:nowrap}\n    .fl.cancelamento{background:#EDE7F6;color:#5B3C99}.fl.troca{background:#E3F0F2;color:#24666D}\n    .st{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}\n    .st.ok{background:#E3F4EA;color:#1E7543}.st.er{background:#FBE3E0;color:#A92E1F}.st.ex{background:#EEE8E1;color:#6B6159}\n    .mono{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:#6B6159}\n    .tw{overflow-x:auto}\n    select,input[type=checkbox]{font:inherit}\n    select{border:1px solid #E0D6CA;border-radius:8px;padding:6px 8px;background:#fff;font-size:13px;max-width:280px}\n    label.chk{display:flex;align-items:center;gap:6px;font-size:13px;cursor:pointer}\n    .pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:10px 16px;font-size:13px;color:#6B6159}\n    .empty{padding:28px;text-align:center;color:#8A8178}\n    .loading{padding:28px;text-align:center;color:#8A8178}\n    .ov{position:fixed;inset:0;background:rgba(30,24,18,.35);z-index:20;display:flex;justify-content:flex-end}\n    .dr{width:min(760px,100%);height:100%;background:#fff;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.18)}\n    .dr-h{padding:16px 20px;border-bottom:1px solid #EFE8E0;display:flex;align-items:flex-start;gap:12px}\n    .dr-h div{flex:1}\n    .dr-h b{display:block;font-size:15px}\n    .dr-h span{font-size:12.5px;color:#8A8178}\n    .dr-b{flex:1;overflow:auto;padding:16px 20px}\n    .facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-bottom:16px}\n    .fact{background:#FBF8F4;border-radius:8px;padding:8px 10px}\n    .fact span{display:block;font-size:11px;color:#8A8178;text-transform:uppercase}\n    .fact b{font-size:13px;word-break:break-all}\n    .blk{margin-bottom:16px}\n    .blk-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}\n    .blk-h b{font-size:13px}\n    pre{margin:0;padding:12px;background:#1F1B17;color:#F3EDE6;border-radius:10px;font:12px/1.5 ui-monospace,Consolas,monospace;white-space:pre-wrap;word-break:break-word;max-height:46vh;overflow:auto}\n    .note{font-size:12px;color:#8A8178;margin-top:4px}\n    @media (max-width:760px){.top{padding:10px 12px}.wrap{padding:14px 12px}.kpis{grid-template-columns:repeat(2,1fr)}}\n  `,\n\n  render(d2) {\n    const st = d2.state\n    const env = st.env || 'PRD'\n    const per = st.period || '1h'\n    const flow = st.flow || 'all'\n    const sum = st.sum || null\n    const auth = d2.auth(d2.param('auth'))\n    const sess = (auth && auth.session) || {}\n    const email = (sess.session && sess.session.email) || sess.email || (auth && auth.user && auth.user.email) || ''\n\n    const segs = (list, cur, act) => `<div class=\"seg\">${list.map(([k, t]) => `<button class=\"${k === cur ? 'on' : ''}\" data-${act}=\"${k}\">${esc(t)}</button>`).join('')}</div>`\n\n    const top = `<div class=\"top\">\n      <div class=\"brand\"><b>Monitoramento dos fluxos</b><span>Cancelamento e Troca · rushes do chatbot</span></div>\n      ${segs(FLOWS, flow, 'flow')}\n      ${segs(ENVS, env, 'env')}\n      ${segs(PERIODS.map((p) => [p[0], p[1]]), per, 'per')}\n      <div class=\"sp\"></div>\n      <div class=\"live\"><span class=\"dot ${st.busy ? 'busy' : st.auto === false ? '' : 'on'}\"></span>\n        <span>${st.auto === false ? 'Pausado' : 'Ao vivo · 15 s'}${st.at ? ` · atualizado <span class=\"ago\" data-at=\"${esc(st.at)}\">${ago(st.at)}</span>` : ''}</span></div>\n      <button class=\"btn\" data-act=\"auto\">${st.auto === false ? 'Retomar' : 'Pausar'}</button>\n      <button class=\"btn\" data-act=\"refresh\" ${st.busy ? 'disabled' : ''}>Atualizar</button>\n      <div class=\"user\">${email ? esc(email) : ''}<button class=\"btn\" data-act=\"logout\">Sair</button></div>\n    </div>`\n\n    let body = ''\n    if (st.error) body += `<div class=\"err-box\">${esc(st.error)}</div>`\n\n    if (!sum) {\n      body += `<div class=\"loading\">Carregando os números…</div>`\n    } else {\n      const rowsC = rowsOf(sum.cfgC, sum.sumC, 'cancelamento')\n      const rowsT = rowsOf(sum.cfgT, sum.sumT, 'troca')\n      const showC = flow === 'all' || flow === 'cancelamento'\n      const showT = flow === 'all' || flow === 'troca'\n      const p = sinceOf(per)\n      const card = (title, rows) => {\n        const t = totalOf(rows)\n        const tn = tone(t.p, t.n)\n        const label = !t.n ? 'sem chamadas' : tn === 'bad' ? 'atenção' : tn === 'warn' ? 'observar' : 'saudável'\n        return `<div class=\"card ${tn}\" data-key=\"card-${esc(title)}\">\n          <h3>${esc(title)}<span class=\"badge ${tn}\">${label}</span></h3>\n          <div class=\"kpis\">\n            <div class=\"kpi\"><span>Requisições</span><b>${num(t.n)}</b></div>\n            <div class=\"kpi\"><span>Sucesso</span><b>${num(t.ok)}</b></div>\n            <div class=\"kpi e\"><span>Erros</span><b>${num(t.err)}</b></div>\n            <div class=\"kpi p\"><span>% erro</span><b class=\"${tn}\">${pctTxt(t.p)}</b></div>\n          </div>\n          ${spark(t.serie, p.fromMs, p.bucket)}\n          <div class=\"meta\">Última chamada ${t.last ? `${hhmmss(t.last)} (${ago(t.last)})` : '—'} · último erro ${t.lastErr ? `${hhmmss(t.lastErr)} (${ago(t.lastErr)})` : '—'}</div>\n        </div>`\n      }\n      body += `<div class=\"cards\">${showC ? card('Cancelamento', rowsC) : ''}${showT ? card('Troca', rowsT) : ''}</div>`\n\n      const all = [].concat(showC ? rowsC : [], showT ? rowsT : [])\n      const sorted = all.slice().sort((a, b) => (b.err - a.err) || (b.n - a.n))\n      body += `<div class=\"panel\"><div class=\"panel-h\"><h2>Por rush</h2><span class=\"note\">Clique num rush para filtrar as requisições. 409 no OCCURRENCE não conta como erro.</span></div>\n        <div class=\"tw\"><table><thead><tr><th>Fluxo</th><th>Rush</th><th class=\"n\">Requisições</th><th class=\"n\">Sucesso</th><th class=\"n\">Erros</th><th class=\"n\">% erro</th><th class=\"n\">Média</th><th class=\"n\">Máx.</th><th>Último erro</th></tr></thead><tbody>\n        ${sorted.map((r) => {\n          const pr = pct(r.err, r.n)\n          const tn = tone(pr, r.n)\n          return `<tr class=\"click ${r.n ? '' : 'zero'} ${st.rush === r.ref ? 'sel' : ''}\" data-key=\"r-${esc(r.ref)}\" data-rush=\"${esc(r.ref)}\">\n            <td><span class=\"fl ${r.flow}\">${r.flow === 'troca' ? 'Troca' : 'Cancel.'}</span></td>\n            <td>${esc(r.name)}<div class=\"mono\">${esc(r.ref)}</div></td>\n            <td class=\"n\">${num(r.n)}</td><td class=\"n\">${num(r.n - r.err)}</td><td class=\"n\">${num(r.err)}</td>\n            <td class=\"n\"><span class=\"badge ${tn}\">${r.n ? pctTxt(pr) : '—'}</span></td>\n            <td class=\"n\">${r.n ? ms(r.avg) : '—'}</td><td class=\"n\">${r.n ? ms(r.max) : '—'}</td>\n            <td>${r.lastErr ? `${hhmmss(r.lastErr)} <span class=\"mono\">${ago(r.lastErr)}</span>` : '—'}</td></tr>`\n        }).join('')}\n        </tbody></table></div></div>`\n\n      // feed\n      const feed = st.feed || null\n      const cfgAll = [].concat((sum.cfgC || []).map((c) => ({ ...c, flow: 'cancelamento' })), (sum.cfgT || []).map((c) => ({ ...c, flow: 'troca' })))\n      const opts = cfgAll.filter((c) => flow === 'all' || c.flow === flow)\n      const page = (st.cursors || [null]).length\n      const pages = feed ? Math.max(1, Math.ceil(feed.total / PAGE)) : 1\n      body += `<div class=\"panel\"><div class=\"panel-h\"><h2>Requisições</h2>\n          <select data-act=\"rush\"><option value=\"\">Todos os rushes</option>${opts.map((c) => `<option value=\"${esc(c.ref)}\" ${st.rush === c.ref ? 'selected' : ''}>${esc((c.flow === 'troca' ? 'Troca · ' : 'Cancel. · ') + c.name)}</option>`).join('')}</select>\n          <label class=\"chk\"><input type=\"checkbox\" data-act=\"onlyErr\" ${st.onlyErr ? 'checked' : ''}/> Só erros</label>\n        </div>`\n      if (!feed || st.feedBusy && !feed.items.length) body += `<div class=\"loading\">Carregando requisições…</div>`\n      else if (!feed.items.length) body += `<div class=\"empty\">Nenhuma requisição no período com esses filtros.</div>`\n      else {\n        body += `<div class=\"tw\"><table><thead><tr><th>Hora</th><th>Fluxo</th><th>Rush</th><th>Status</th><th class=\"n\">Duração</th><th>Env</th><th>Sessão</th></tr></thead><tbody>\n          ${feed.items.map((it) => {\n            const er = isErr(it, it.occ)\n            const exp = it.occ && Number(it.sc) === 409\n            const stc = exp ? 'ex' : er ? 'er' : 'ok'\n            const stt = exp ? '409 esperado' : er ? `ERRO ${it.sc || ''}` : `OK ${it.sc || ''}`\n            return `<tr class=\"click\" data-key=\"f-${esc(it.oid)}\" data-det=\"${esc(it.id)}\" data-ref=\"${esc(it.ref)}\">\n              <td class=\"mono\">${dayTime(it.t)}</td>\n              <td><span class=\"fl ${it.flow}\">${it.flow === 'troca' ? 'Troca' : 'Cancel.'}</span></td>\n              <td>${esc(it.name)}</td>\n              <td><span class=\"st ${stc}\">${esc(stt)}</span></td>\n              <td class=\"n\">${ms(it.d)}</td>\n              <td class=\"mono\">${esc(it.env || '—')}</td>\n              <td class=\"mono\">${esc(it.sid || '—')}</td></tr>`\n          }).join('')}\n          </tbody></table></div>\n          <div class=\"pager\">${num(feed.total)} requisições · página ${page} de ${pages}\n            <button class=\"btn\" data-act=\"first\" ${page <= 1 ? 'disabled' : ''}>« Início</button>\n            <button class=\"btn\" data-act=\"prev\" ${page <= 1 ? 'disabled' : ''}>‹ Anterior</button>\n            <button class=\"btn\" data-act=\"next\" ${!feed.next || page >= pages ? 'disabled' : ''}>Próxima ›</button></div>`\n      }\n      body += `</div>`\n    }\n\n    // detalhe\n    let drawer = ''\n    if (st.det) {\n      const dt = st.det\n      const o = dt.data || {}\n      const out = o.output || {}\n      const er = o.id ? isErr({ r: o.r, sc: out.statusCode }, dt.occ) : false\n      drawer = `<div class=\"ov\" data-act=\"close-ov\"><div class=\"dr\">\n        <div class=\"dr-h\"><div><b>${esc(dt.name)}</b><span>${esc(dt.ref)} · ${esc(dt.id)}</span></div><button class=\"btn\" data-act=\"close\">Fechar</button></div>\n        <div class=\"dr-b\">${dt.busy ? '<div class=\"loading\">Carregando o log…</div>' : !o.id ? '<div class=\"empty\">Execução não encontrada.</div>' : `\n          <div class=\"facts\">\n            <div class=\"fact\"><span>Quando</span><b>${dayTime(o.t)}</b></div>\n            <div class=\"fact\"><span>Resultado</span><b>${er ? 'Erro' : 'Sucesso'} (${esc(o.r)})</b></div>\n            <div class=\"fact\"><span>Status HTTP</span><b>${esc(out.statusCode == null ? '—' : out.statusCode)}</b></div>\n            <div class=\"fact\"><span>Duração</span><b>${ms(o.d)}</b></div>\n            <div class=\"fact\"><span>Versão</span><b>${esc(o.v || '—')}</b></div>\n          </div>\n          <div class=\"blk\"><div class=\"blk-h\"><b>Input</b><button class=\"btn\" data-copy=\"input\">${st.copied === 'input' ? 'Copiado' : 'Copiar'}</button></div><pre>${esc(pretty(o.input))}</pre></div>\n          <div class=\"blk\"><div class=\"blk-h\"><b>Output</b><button class=\"btn\" data-copy=\"output\">${st.copied === 'output' ? 'Copiado' : 'Copiar'}</button></div><pre>${esc(pretty(out))}</pre></div>\n          <div class=\"note\">Para o passo a passo da execução, abra o log do rush no builder.</div>`}\n        </div></div></div>`\n    }\n\n    return `<div class=\"pg\">${top}<div class=\"wrap\">${body}</div>${drawer}</div>`\n  },\n\n  mounted(d2) {\n    const api = () => d2.rush(d2.param('api'))\n    const st = d2.state\n    if (!st.env) d2.setState({ env: 'PRD', period: '1h', flow: 'all', auto: true, cursors: [null] })\n\n    let seq = 0\n    const loadSummary = async () => {\n      const my = ++seq\n      const p = sinceOf(st.period || '1h')\n      d2.setState({ busy: true })\n      try {\n        const r = unwrap(await api().invoke({ action: 'summary', env: st.env, flow: st.flow, since: p.since, sinceOid: p.sinceOid, bucket: p.bucket }))\n        if (my !== seq) return\n        if (r.ok === false) throw new Error(r.error || 'erro no servidor')\n        d2.setState({ sum: r, at: new Date().toISOString(), error: null })\n      } catch (e) {\n        if (my === seq) d2.setState({ error: 'Não consegui atualizar os números: ' + (e && e.message ? e.message : e) })\n      } finally { if (my === seq) d2.setState({ busy: false }) }\n    }\n\n    let fseq = 0\n    const loadFeed = async () => {\n      const my = ++fseq\n      const cursors = st.cursors || [null]\n      const before = cursors[cursors.length - 1]\n      // a janela fica fixa enquanto pagina; volta a andar na página 1\n      if (cursors.length === 1 || !st.feedSince) d2.setState({ feedSince: sinceOf(st.period || '1h') })\n      const p = d2.state.feedSince\n      d2.setState({ feedBusy: true })\n      try {\n        const body = { action: 'list', env: st.env, flow: st.flow, since: p.since, sinceOid: p.sinceOid, onlyErrors: !!st.onlyErr }\n        if (st.rush) body.rush = st.rush\n        if (before) body.before = before\n        const r = unwrap(await api().invoke(body))\n        if (my !== fseq) return\n        if (r.ok === false) throw new Error(r.error || 'erro no servidor')\n        const cfgC = (r.cfgC || []).map((c) => ({ ...c, flow: 'cancelamento' }))\n        const cfgT = (r.cfgT || []).map((c) => ({ ...c, flow: 'troca' }))\n        let items = []\n        let total = 0\n        const take = (cfg, res) => {\n          const cnt = (res && res.cnt && res.cnt[0] && res.cnt[0].n) || 0\n          total += cnt\n          ;((res && res.items) || []).forEach((it) => items.push({ ...it, ref: cfg.ref, name: cfg.name, occ: !!cfg.occ, flow: cfg.flow }))\n        }\n        if (st.rush) {\n          const cfg = cfgC.concat(cfgT).find((c) => c.ref === st.rush) || { ref: st.rush, name: st.rush }\n          take(cfg, r.one)\n        } else {\n          ;(r.listC || []).forEach((res, i) => take(cfgC[i] || {}, res))\n          ;(r.listT || []).forEach((res, i) => take(cfgT[i] || {}, res))\n        }\n        items.sort((a, b) => (a.oid < b.oid ? 1 : a.oid > b.oid ? -1 : 0))\n        items = items.slice(0, PAGE)\n        const next = items.length === PAGE ? items[items.length - 1].oid : null\n        d2.setState({ feed: { items, total, next }, error: null })\n      } catch (e) {\n        if (my === fseq) d2.setState({ error: 'Não consegui carregar as requisições: ' + (e && e.message ? e.message : e) })\n      } finally { if (my === fseq) d2.setState({ feedBusy: false }) }\n    }\n\n    const reloadAll = () => { d2.setState({ cursors: [null], feedSince: null }); loadSummary(); loadFeed() }\n    reloadAll()\n\n    const timer = setInterval(() => {\n      if (d2.state.auto === false || document.hidden) return\n      loadSummary()\n      if ((d2.state.cursors || [null]).length === 1 && !d2.state.det) loadFeed()\n    }, REFRESH_MS)\n    const tick = setInterval(() => { (d2.$$('.ago') || []).forEach((el) => { el.textContent = ago(el.dataset.at) }) }, 1000)\n    d2.onUnmount(() => { clearInterval(timer); clearInterval(tick) })\n\n    d2.on('[data-flow]', 'click', (e, el) => { d2.setState({ flow: el.dataset.flow, rush: '', sum: d2.state.sum }); reloadAll() })\n    d2.on('[data-env]', 'click', (e, el) => { d2.setState({ env: el.dataset.env }); reloadAll() })\n    d2.on('[data-per]', 'click', (e, el) => { d2.setState({ period: el.dataset.per }); reloadAll() })\n    d2.on('[data-act=\"auto\"]', 'click', () => { d2.setState({ auto: d2.state.auto === false }) })\n    d2.on('[data-act=\"refresh\"]', 'click', () => { loadSummary(); loadFeed() })\n    d2.on('[data-act=\"logout\"]', 'click', async () => { try { await d2.auth(d2.param('auth')).logout() } catch (e) {} location.assign('/') })\n    d2.on('tr[data-rush]', 'click', (e, el) => {\n      const ref = el.dataset.rush\n      d2.setState({ rush: d2.state.rush === ref ? '' : ref, cursors: [null], feedSince: null })\n      loadFeed()\n    })\n    d2.on('select[data-act=\"rush\"]', 'change', (e, el) => { d2.setState({ rush: el.value, cursors: [null], feedSince: null }); loadFeed() })\n    d2.on('input[data-act=\"onlyErr\"]', 'change', (e, el) => { d2.setState({ onlyErr: el.checked, cursors: [null], feedSince: null }); loadFeed() })\n    d2.on('[data-act=\"next\"]', 'click', () => { const f = d2.state.feed; if (!f || !f.next) return; d2.setState({ cursors: (d2.state.cursors || [null]).concat([f.next]) }); loadFeed() })\n    d2.on('[data-act=\"prev\"]', 'click', () => { const c = (d2.state.cursors || [null]); if (c.length <= 1) return; d2.setState({ cursors: c.slice(0, -1) }); loadFeed() })\n    d2.on('[data-act=\"first\"]', 'click', () => { d2.setState({ cursors: [null], feedSince: null }); loadFeed() })\n\n    d2.on('tr[data-det]', 'click', async (e, el) => {\n      const id = el.dataset.det\n      const ref = el.dataset.ref\n      const it = ((d2.state.feed && d2.state.feed.items) || []).find((x) => x.id === id && x.ref === ref) || {}\n      const p = d2.state.feedSince || sinceOf(d2.state.period || '1h')\n      d2.setState({ det: { id, ref, name: it.name || ref, occ: !!it.occ, busy: true, data: null } })\n      try {\n        const r = unwrap(await api().invoke({ action: 'detail', rush: ref, id, since: p.since, sinceOid: p.sinceOid }))\n        if (!d2.state.det || d2.state.det.id !== id) return\n        d2.setState({ det: { ...d2.state.det, busy: false, data: (r && r.one) || {} } })\n      } catch (err) {\n        if (d2.state.det && d2.state.det.id === id) d2.setState({ det: { ...d2.state.det, busy: false, data: {} }, error: 'Não consegui abrir o log: ' + (err && err.message ? err.message : err) })\n      }\n    })\n    d2.on('[data-act=\"close\"]', 'click', () => d2.setState({ det: null }))\n    d2.on('[data-act=\"close-ov\"]', 'click', (e) => { if (e.target === e.currentTarget || (e.target.classList && e.target.classList.contains('ov'))) d2.setState({ det: null }) })\n    d2.on(document, 'keydown', (e) => { if (e.key === 'Escape' && d2.state.det) d2.setState({ det: null }) })\n    d2.on('[data-copy]', 'click', async (e, el) => {\n      const k = el.dataset.copy\n      const o = (d2.state.det && d2.state.det.data) || {}\n      try { await navigator.clipboard.writeText(pretty(k === 'input' ? o.input : o.output)); d2.setState({ copied: k }); setTimeout(() => d2.setState({ copied: null }), 1500) } catch (err) {}\n    })\n  },\n}\n"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}}}}}}}},{"_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":{"component":"data2-core-types@Getter","displayName":"isData2User","params":{"module":{"component":"data2-core-functions@Match","params":{"pattern":{"component":"data2-core-types@Regex","params":{"pattern":"@data2\\.app$","flags":"i"}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}}},"prop":{"component":"data2-core-primitives@String","params":{"content":"0"}}}},"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":{"component":"data2-core-flow@If","displayName":"management exception never picks the system","params":{"compare":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-logical-operators@Not","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}}}]}},"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"d2_app":"management"}}},"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-10-29T19:05:43.007Z","updateMetadata":{"updatedBy":{"user":"5f1609be1ca96def427e1559"}}},{"_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"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_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"},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6af5ccf7d551b8b3232518fa","component":"data2-core@AuthenticationStrategy","system":"6671e96b001009d97f222f73","params":{"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"email"}},{"component":"data2-core-types@FieldReference","params":{"key":"password"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"31o_i0VXvDsiebEaEOz9eDataSet"}},"email":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"password":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"role":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"role"}},"roleDefault":"viewer","session":[{"component":"data2-core-types@FieldReference","params":{"key":"email"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"role"}}],"sessionExpiresIn":28800},"reference":"kTltJsXqpfevY6Vc8XTAQ"},{"_id":"6af5ccee74ea5cd03c455cbc","component":"data2-core@DataSet","system":"6671e96b001009d97f222f73","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"31o_i0VXvDsiebEaEOz9e"}}},"reference":"31o_i0VXvDsiebEaEOz9eDataSet"},{"_id":"6af5cceeab4b7542c0d32d78","component":"data2-core@Data2TableDataSource","system":"6671e96b001009d97f222f73","params":{"table":"31o_i0VXvDsiebEaEOz9e","schema":[{"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":"password","title":"Senha","component":"data2-core-types@Password"}},{"component":"data2-core-types@Field","params":{"key":"name","title":"Nome","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"role","title":"Papel (admin | viewer)","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"inativo","title":"Inativo","component":"data2-core-primitives@Boolean"}}]},"reference":"31o_i0VXvDsiebEaEOz9e"}]}},{"_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}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"FileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.217Z","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":"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"},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.254Z","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}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.347Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6af5c69a0cb208e4bc945423","component":"data2-rush@HTTPListener","reference":"7qBm4R-4O8icuL1vCug_w","system":"6671e96b001009d97f222f73","params":{},"versioning":"enabled","bundleId":null}]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6af5c98ed551b8b323250ba1","component":"data2-core-primitives@Router","system":"6671e96b001009d97f222f73","displayName":"Monitoramento dos Fluxos - Router","params":{"routerType":{"component":"data2-core-primitives@String","params":{"content":"browser"}},"routes":[{"component":"data2-core-primitives@Route","params":{"path":"/(.*)","name":"monitoramento","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"D-MXlJ-73A9WhSRC3a_73"}},"policies":[{"component":"data2-core-auth@Policy","params":{"authenticationStrategy":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"kTltJsXqpfevY6Vc8XTAQ"}},"allowedRoles":[{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"viewer"}}]}}]}}],"login":{"component":"data2-core-types@ArtboardReference","params":{"reference":"wl0XDqb5Z3mx-dRE_MKkx"}}},"reference":"lZoTdUfxXXKR2SKpYrfFm"},{"_id":"6af5cd31ab4b7542c0d32e43","component":"data2-core-primitives@Artboard","system":"6671e96b001009d97f222f73","displayName":"Monitoramento dos Fluxos - Login","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Monitoramento dos Fluxos - Login"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"wl0XDqb5Z3mx-dRE_MKkx"},{"_id":"6af5c94d2f06937356f12faa","component":"data2-core-primitives@Artboard","system":"6671e96b001009d97f222f73","displayName":"Monitoramento dos Fluxos - Tela","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Monitoramento dos Fluxos - Tela"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"D-MXlJ-73A9WhSRC3a_73"},{"_id":"9fef236aca8d112af9f3321c","parent":"6af5cd31ab4b7542c0d32e43","component":"natura-br-cf@Login_do_Monitoramento_dos_Fluxos_monFluxosLogin","system":"6671e96b001009d97f222f73","displayName":"monFluxosLogin","params":{"auth":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"kTltJsXqpfevY6Vc8XTAQ"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"MsDNgw3AJo7QMA4kydivH"},{"_id":"546300af8e4e38593ddf2729","parent":"6af5c94d2f06937356f12faa","component":"natura-br-cf@Monitoramento_dos_fluxos_monFluxos","system":"6671e96b001009d97f222f73","displayName":"monFluxos","params":{"api":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"7qBm4R-4O8icuL1vCug_w"}},"auth":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"kTltJsXqpfevY6Vc8XTAQ"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"93r9IRtxpoYxtUxQ_4IkC"}]}},{"_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":"6af5c994d551b8b323250bc6","displayName":"Monitoramento dos Fluxos (Cancelamento/Troca)","reference":"Bub8PCPHvzIqQMO3YftDB","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"monitoramento-fluxos"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Router","reference":"lZoTdUfxXXKR2SKpYrfFm"}}},"system":"6671e96b001009d97f222f73","component":"data2-core-primitives@Application"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}