{"context":{"domain":"people"},"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":"60da379fda3861ca65e727b8","name":"People","domain":"people","visibility":"public","settings":{"defaultAccessPolicy":"private"},"updatedAt":"2026-08-20T20:46:26.748Z"}]}},{"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":"6aeb45399479fae9bfe75ead","component":"data2-core-types@Component","system":"60da379fda3861ca65e727b8","params":{"extends":"data2-core-primitives@Block","component":"confra2026-form","package":"people","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const FORMS = new WeakMap()\nconst form = (d2) => { if (!FORMS.has(d2)) FORMS.set(d2, { dias: [], noites: [] }); return FORMS.get(d2) }\nconst esc = (s) => String(s ?? '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\n\nconst CHEGADA = ['Dom 6/12', 'Seg 7/12', 'Ter 8/12', 'Qua 9/12', 'Qui 10/12', 'Sex 11/12', 'Não preciso (moro em SP)']\nconst VOLTA = ['Seg 7/12', 'Ter 8/12', 'Qua 9/12', 'Qui 10/12', 'Sex 11/12', 'Sáb 12/12', 'Dom 13/12', 'Não preciso (moro em SP)']\nconst DIAS = ['Seg 7/12 · coworking', 'Ter 8/12 · coworking', 'Qua 9/12 · coworking', 'Qui 10/12 · atividade surpresa', 'Sex 11/12 · hackathon', 'Sex 11/12 à noite · confra']\nconst TRANSPORTE = [\n  ['aviao', 'Avião ✈️'], ['onibus', 'Ônibus 🚌'], ['carro', 'Carro próprio (reembolso da gasolina) 🚗'],\n  ['alugado', 'Carro alugado 🚙'], ['diario', 'Vou e volto (moro perto ou em SP)'],\n]\nconst NOITES = ['Dom 6 → seg 7', 'Seg 7 → ter 8', 'Ter 8 → qua 9', 'Qua 9 → qui 10', 'Qui 10 → sex 11', 'Sex 11 → sáb 12', 'Sáb 12 → dom 13', 'Nenhuma']\nconst DIVIDE = ['Sim, já combinei', 'Topo dividir, mas não combinei com ninguém', 'Prefiro ficar sozinho(a)']\nconst MOLETOM = ['PP', 'P', 'M', 'G', 'GG', 'XGG']\nconst CALCADO = Array.from({ length: 14 }, (_, i) => String(33 + i))\nconst CALCA = Array.from({ length: 11 }, (_, i) => String(34 + i * 2))\nconst PERIODOS = ['Manhã', 'Tarde', 'Noite', 'Tanto faz']\n\nfunction text(f, key, label, opts = {}) {\n  const req = opts.required ? ' <b class=\"req\">*</b>' : ''\n  const help = opts.help ? `<div class=\"help\">${opts.help}</div>` : ''\n  const input = opts.long\n    ? `<textarea data-k=\"${key}\" rows=\"3\">${esc(f[key])}</textarea>`\n    : `<input data-k=\"${key}\" type=\"${opts.type || 'text'}\" value=\"${esc(f[key])}\" placeholder=\"${esc(opts.placeholder || '')}\"/>`\n  return `<label class=\"q\"><span class=\"lbl\">${label}${req}</span>${help}${input}</label>`\n}\nfunction radios(f, key, label, options, opts = {}) {\n  const req = opts.required ? ' <b class=\"req\">*</b>' : ''\n  const items = options.map((o) => {\n    const [v, l] = Array.isArray(o) ? o : [o, o]\n    return `<button type=\"button\" class=\"chip ${f[key] === v ? 'on' : ''}\" data-radio=\"${key}\" data-v=\"${esc(v)}\">${esc(l)}</button>`\n  }).join('')\n  return `<div class=\"q\"><span class=\"lbl\">${label}${req}</span>${opts.help ? `<div class=\"help\">${opts.help}</div>` : ''}<div class=\"chips\">${items}</div></div>`\n}\nfunction checks(f, key, label, options, opts = {}) {\n  const req = opts.required ? ' <b class=\"req\">*</b>' : ''\n  const items = options.map((o) =>\n    `<button type=\"button\" class=\"chip ${f[key].includes(o) ? 'on' : ''}\" data-check=\"${key}\" data-v=\"${esc(o)}\">${esc(o)}</button>`).join('')\n  return `<div class=\"q\"><span class=\"lbl\">${label}${req}</span>${opts.help ? `<div class=\"help\">${opts.help}</div>` : ''}<div class=\"chips\">${items}</div></div>`\n}\nfunction select(f, key, label, options, opts = {}) {\n  const req = opts.required ? ' <b class=\"req\">*</b>' : ''\n  return `<label class=\"q\"><span class=\"lbl\">${label}${req}</span><select data-k=\"${key}\"><option value=\"\">Selecione…</option>${\n    options.map((o) => `<option ${f[key] === o ? 'selected' : ''}>${esc(o)}</option>`).join('')}</select></label>`\n}\nconst section = (title, body, sub = '') => `<section><h2>${title}</h2>${sub ? `<p class=\"sub\">${sub}</p>` : ''}${body}</section>`\n\nfunction missing(f) {\n  const m = []\n  if (!f.nome) m.push('nome completo')\n  if (!/@data2\\.app$/i.test(f.email || '')) m.push('e-mail @data2.app')\n  if (!f.participa) m.push('se vai participar')\n  if (f.participa !== 'sim') return m\n  if (!f.celular) m.push('celular')\n  if (!f.cidade) m.push('cidade de saída')\n  if (!f.chegada) m.push('dia de chegada')\n  if (!f.volta) m.push('dia de volta')\n  if (!f.dias.length) m.push('dias com a gente')\n  if (!f.transporte) m.push('como você vem')\n  if (f.acompanhante == null) m.push('se leva acompanhante')\n  if (!f.camiseta) m.push('tamanho de camiseta')\n  if (!f.moletom) m.push('tamanho de moletom')\n  if (!f.calca) m.push('tamanho de calça')\n  if (!f.calcado) m.push('número do calçado')\n  if (!f.emergencia) m.push('contato de emergência')\n  return m\n}\n\nexport default {\n  css: `\n    :host, .wrap { font-family: Inter, system-ui, sans-serif; color: #1f1d2b; }\n    .wrap { height: 100%; overflow-y: auto; background: linear-gradient(180deg, #f4f1ff 0%, #fff 320px); }\n    .page { max-width: 680px; margin: 0 auto; padding: 32px 16px 64px; box-sizing: border-box; }\n    header h1 { font-size: 28px; margin: 0 0 6px; }\n    header p { margin: 0 0 4px; color: #5b5873; line-height: 1.5; }\n    section { background: #fff; border: 1px solid #e6e2f3; border-radius: 14px; padding: 20px; margin-top: 16px; box-shadow: 0 2px 10px rgba(80, 60, 160, .05); }\n    h2 { font-size: 17px; margin: 0 0 4px; }\n    .sub { margin: 0 0 8px; color: #6d6a84; font-size: 13px; line-height: 1.5; }\n    .q { display: block; margin-top: 16px; }\n    .lbl { display: block; font-weight: 600; font-size: 14px; margin-bottom: 6px; }\n    .req { color: #7c4dff; }\n    .help { font-size: 12px; color: #77748c; margin: -2px 0 6px; }\n    input, textarea, select { width: 100%; box-sizing: border-box; padding: 10px 12px; border: 1px solid #d6d1ea; border-radius: 10px; font: inherit; font-size: 14px; background: #fff; }\n    input:focus, textarea:focus, select:focus { outline: 2px solid #b9a5ff; border-color: #7c4dff; }\n    .chips { display: flex; flex-wrap: wrap; gap: 8px; }\n    .chip { border: 1px solid #d6d1ea; background: #fff; border-radius: 999px; padding: 8px 14px; font: inherit; font-size: 13px; cursor: pointer; color: #1f1d2b; }\n    .chip.on { background: #7c4dff; border-color: #7c4dff; color: #fff; }\n    .actions { margin-top: 20px; }\n    .send { width: 100%; padding: 14px; border: 0; border-radius: 12px; background: #7c4dff; color: #fff; font: inherit; font-weight: 700; font-size: 16px; cursor: pointer; }\n    .send[disabled] { opacity: .6; cursor: default; }\n    .err { margin-top: 12px; color: #c62828; font-size: 13px; line-height: 1.5; }\n    .done { text-align: center; padding: 48px 20px; }\n    .done h2 { font-size: 22px; }\n    .link { background: none; border: 0; color: #7c4dff; font: inherit; text-decoration: underline; cursor: pointer; margin-top: 12px; }\n  `,\n\n  render(d2) {\n    const f = form(d2)\n    const st = d2.state\n    void st.tick\n    if (st.sent) {\n      return `<div class=\"wrap\"><div class=\"page\"><section class=\"done\">\n        <h2>Valeu! 🎉</h2>\n        <p class=\"sub\">${f.participa === 'sim' ? 'A Ju ou a Bia vão falar com você sobre hospedagem e transporte. Nos vemos em SP! 🚀' : 'Que pena! Se mudar de ideia, é só responder de novo.'}</p>\n        <button class=\"link\" data-action=\"again\">Corrigir minha resposta</button>\n      </section></div></div>`\n    }\n    const vai = f.participa === 'sim'\n    const t = f.transporte\n    let transporte = ''\n    if (t === 'aviao') transporte = text(f, 'aeroporto', 'Aeroporto de saída', { required: true })\n      + radios(f, 'periodoIda', 'Período preferido na ida', PERIODOS)\n      + radios(f, 'periodoVolta', 'Período preferido na volta', PERIODOS)\n      + radios(f, 'bagagem', 'Precisa despachar bagagem?', ['Sim', 'Não'])\n    if (t === 'onibus') transporte = text(f, 'rodoviaria', 'Rodoviária / cidade de saída', { required: true })\n    if (t === 'carro') transporte = text(f, 'km', 'Distância aproximada ida e volta (km)', { type: 'number', help: 'A gente reembolsa a gasolina.' })\n      + radios(f, 'estacionamento', 'Vai precisar de estacionamento perto da hospedagem?', ['Sim', 'Não', 'Não sei ainda'])\n    if (t === 'alugado') transporte = text(f, 'retirada', 'Cidade de retirada do carro')\n    if (t === 'diario') transporte = radios(f, 'diarioComo', 'Como?', ['Transporte público', 'Carro', 'Moro em SP'])\n\n    const errs = st.showErrors ? missing(f) : []\n    return `<div class=\"wrap\"><div class=\"page\">\n      <header>\n        <h1>🎉 Semana Data2 em SP · 7 a 11/12</h1>\n        <p>Preenche pra gente organizar datas, transporte, hospedagem e mais umas coisinhas. Leva 3 minutinhos! 💛</p>\n        <p class=\"sub\">Hospedagem, transporte e voos: depois de responder, alinhe tudo com a Ju ou a Bia.</p>\n      </header>\n      ${section('Você',\n        text(f, 'nome', 'Nome completo', { required: true, help: 'Igual ao documento (é o que vai na passagem)' })\n        + text(f, 'email', 'E-mail', { required: true, type: 'email', placeholder: 'voce@data2.app' })\n        + radios(f, 'participa', 'Você vai participar da semana?', [['sim', 'Sim! 🎉'], ['nao', 'Infelizmente não']], { required: true }))}\n      ${vai ? section('Contato e datas',\n        text(f, 'celular', 'Celular com WhatsApp', { required: true, type: 'tel' })\n        + text(f, 'cidade', 'Cidade de onde você sai', { required: true })\n        + select(f, 'chegada', 'Dia de chegada em SP', CHEGADA, { required: true })\n        + select(f, 'volta', 'Dia de volta', VOLTA, { required: true })\n        + checks(f, 'dias', 'Em quais dias você vai estar com a gente?', DIAS, { required: true }),\n        'Você escolhe! A janela vai de domingo 6/12 a domingo 13/12.') : ''}\n      ${vai ? section('Como você vem', radios(f, 'transporte', 'Como você vem?', TRANSPORTE, { required: true }) + transporte) : ''}\n      ${vai ? section('Hospedagem 🏨',\n        checks(f, 'noites', 'Em quais noites você precisa de hospedagem?', NOITES)\n        + radios(f, 'divide', 'Vai dividir hospedagem (ex.: Airbnb) com alguém do time?', DIVIDE)\n        + (f.divide === DIVIDE[0] ? text(f, 'divideCom', 'Com quem?', { help: 'Todo mundo do grupo marca os mesmos nomes 😉' }) : ''),\n        'Referência: até R$ 1.500 por pessoa na semana. Recomendamos pegar pelo menos a noite de sexta pra sábado: a confra vai até tarde! 🥂') : ''}\n      ${vai ? section('Confra 🥂',\n        radios(f, 'acompanhante', 'Vai levar acompanhante na confra de sexta?', [['sim', 'Sim'], ['nao', 'Não']], { required: true })\n        + (f.acompanhante === 'sim' ? text(f, 'acompanhanteNome', 'Nome do(a) acompanhante') : '')\n        + text(f, 'restricaoAlimentar', 'Restrição alimentar ou alergia (sua ou do acompanhante)', { long: true })) : ''}\n      ${vai ? section('Kit 🎁',\n        radios(f, 'camiseta', 'Tamanho de camiseta', MOLETOM, { required: true })\n        + radios(f, 'moletom', 'Tamanho de moletom', MOLETOM, { required: true })\n        + select(f, 'calca', 'Tamanho de calça', CALCA, { required: true })\n        + select(f, 'calcado', 'Número do calçado', CALCADO, { required: true })) : ''}\n      ${vai ? section('Pra fechar',\n        text(f, 'acessibilidade', 'Alguma necessidade de acessibilidade?', { long: true })\n        + text(f, 'emergencia', 'Contato de emergência (nome e telefone)', { required: true })\n        + text(f, 'ideiaHackathon', 'Ideia pro Hackathon 💡', { long: true })\n        + text(f, 'observacoes', 'Algo mais que a gente deva saber?', { long: true })) : ''}\n      <div class=\"actions\">\n        <button class=\"send\" data-action=\"send\" ${st.busy ? 'disabled' : ''}>${st.busy ? 'Enviando…' : 'Enviar'}</button>\n        ${errs.length ? `<div class=\"err\">Falta preencher: ${errs.join(', ')}.</div>` : ''}\n        ${st.error ? `<div class=\"err\">${esc(st.error)}</div>` : ''}\n      </div>\n    </div></div>`\n  },\n\n  mounted(d2) {\n    const bump = () => { d2.state.tick = (d2.state.tick || 0) + 1 }\n    d2.on('[data-k]', 'input', (e, el) => { form(d2)[el.dataset.k] = el.value; if (d2.state.showErrors) bump() })\n    d2.on('select[data-k]', 'change', (e, el) => { form(d2)[el.dataset.k] = el.value; bump() })\n    d2.on('[data-radio]', 'click', (e, el) => { form(d2)[el.dataset.radio] = el.dataset.v; bump() })\n    d2.on('[data-check]', 'click', (e, el) => {\n      const arr = form(d2)[el.dataset.check]\n      const i = arr.indexOf(el.dataset.v)\n      if (i >= 0) arr.splice(i, 1); else arr.push(el.dataset.v)\n      bump()\n    })\n    d2.on('[data-action=\"again\"]', 'click', () => { d2.state.sent = false })\n    d2.on('[data-action=\"send\"]', 'click', async () => {\n      const f = form(d2)\n      d2.state.error = ''\n      if (missing(f).length) { d2.state.showErrors = true; bump(); return }\n      const vai = f.participa === 'sim'\n      const detalhes = {\n        aviao: { aeroporto: f.aeroporto, periodoIda: f.periodoIda, periodoVolta: f.periodoVolta, bagagem: f.bagagem },\n        onibus: { rodoviaria: f.rodoviaria },\n        carro: { km: f.km, estacionamento: f.estacionamento },\n        alugado: { retirada: f.retirada },\n        diario: { como: f.diarioComo },\n      }[f.transporte] || {}\n      const payload = {\n        email: f.email.trim().toLowerCase(), nome: f.nome, participa: vai,\n        ...(vai ? {\n          celular: f.celular, cidade: f.cidade, chegada: f.chegada, volta: f.volta, dias: f.dias,\n          transporte: f.transporte, transporteDetalhes: detalhes, noites: f.noites,\n          divide: f.divide, divideCom: f.divideCom, acompanhante: f.acompanhante === 'sim',\n          acompanhanteNome: f.acompanhanteNome, restricaoAlimentar: f.restricaoAlimentar,\n          camiseta: f.camiseta, moletom: f.moletom, calca: f.calca, calcado: f.calcado, acessibilidade: f.acessibilidade,\n          emergencia: f.emergencia, ideiaHackathon: f.ideiaHackathon, observacoes: f.observacoes,\n        } : {}),\n      }\n      d2.state.busy = true\n      try {\n        const res = await d2.rush(d2.params.api).invoke(payload)\n        if (res && res.data && res.data.ok === false) throw new Error(res.data.error || 'Não deu certo')\n        d2.state.sent = true\n      } catch (err) {\n        d2.state.error = 'Não conseguimos enviar agora. Tenta de novo em instantes ou chama a Ju/Bia. (' + (err && err.message || err) + ')'\n      } finally {\n        d2.state.busy = false\n      }\n    })\n  },\n}\n"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}}}}}}}},{"_id":"6aeb473076e3085b3e0d8791","component":"data2-core-types@Component","system":"60da379fda3861ca65e727b8","params":{"extends":"data2-core-primitives@Block","component":"confra2026-backoffice","package":"people","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const esc = (s) => String(s ?? '').replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;')\nconst TRANSP = { aviao: 'Avião', onibus: 'Ônibus', carro: 'Carro próprio', alugado: 'Carro alugado', diario: 'Vai e volta' }\nconst NOITES = ['Dom 6 → seg 7', 'Seg 7 → ter 8', 'Ter 8 → qua 9', 'Qua 9 → qui 10', 'Qui 10 → sex 11', 'Sex 11 → sáb 12', 'Sáb 12 → dom 13']\nconst TABS = [['resumo', 'Resumo'], ['pessoas', 'Respostas'], ['viagem', 'Viagem e hospedagem'], ['confra', 'Confra e kit']]\n\n// Last submission per e-mail wins.\nfunction latest(records) {\n  const by = {}\n  for (const r of records) {\n    const k = String(r.email || '').toLowerCase()\n    const t = new Date(r.enviadoEm || r.createdAt || 0).getTime()\n    if (!by[k] || t >= by[k]._t) by[k] = { ...r, _t: t }\n  }\n  return Object.values(by).sort((a, b) => String(a.nome).localeCompare(String(b.nome)))\n}\nconst count = (arr, fn) => arr.reduce((m, r) => { [].concat(fn(r) || []).forEach((v) => { if (v) m[v] = (m[v] || 0) + 1 }); return m }, {})\nconst det = (r) => {\n  const d = r.transporteDetalhes || {}\n  return Object.entries(d).filter(([, v]) => v).map(([k, v]) => `${k}: ${v}`).join(' · ')\n}\nconst table = (head, rows) => `<div class=\"tw\"><table><thead><tr>${head.map((h) => `<th>${h}</th>`).join('')}</tr></thead><tbody>${\n  rows.length ? rows.map((r) => `<tr>${r.map((c) => `<td>${c}</td>`).join('')}</tr>`).join('') : `<tr><td colspan=\"${head.length}\" class=\"muted\">Nada ainda.</td></tr>`}</tbody></table></div>`\nconst bars = (obj, order) => {\n  const keys = order || Object.keys(obj).sort((a, b) => obj[b] - obj[a])\n  const max = Math.max(1, ...keys.map((k) => obj[k] || 0))\n  return `<div class=\"bars\">${keys.map((k) => `<div class=\"bar\"><span class=\"bl\">${esc(k)}</span><span class=\"bt\"><span style=\"width:${((obj[k] || 0) / max) * 100}%\"></span></span><b>${obj[k] || 0}</b></div>`).join('')}</div>`\n}\nfunction csv(rows) {\n  const cols = ['nome', 'email', 'participa', 'celular', 'cidade', 'chegada', 'volta', 'dias', 'transporte', 'transporteDetalhes', 'noites', 'divide', 'divideCom', 'acompanhante', 'acompanhanteNome', 'restricaoAlimentar', 'camiseta', 'moletom', 'calca', 'calcado', 'acessibilidade', 'emergencia', 'ideiaHackathon', 'observacoes', 'enviadoEm']\n  const cell = (v) => { const s = Array.isArray(v) ? v.join(' | ') : (v && typeof v === 'object') ? JSON.stringify(v) : String(v ?? ''); return '\"' + s.replace(/\"/g, '\"\"') + '\"' }\n  return [cols.join(','), ...rows.map((r) => cols.map((c) => cell(r[c])).join(','))].join('\\n')\n}\n\nexport default {\n  css: `\n    :host, .wrap { font-family: Inter, system-ui, sans-serif; color: #1f1d2b; }\n    .wrap { height: 100%; overflow-y: auto; background: #f6f5fb; }\n    .page { max-width: 1180px; margin: 0 auto; padding: 24px 16px 48px; box-sizing: border-box; }\n    .top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }\n    h1 { font-size: 22px; margin: 0; }\n    .muted { color: #77748c; font-size: 13px; }\n    .btn { border: 1px solid #d6d1ea; background: #fff; border-radius: 10px; padding: 8px 14px; font: inherit; font-size: 13px; cursor: pointer; }\n    .btn.primary { background: #7c4dff; border-color: #7c4dff; color: #fff; font-weight: 600; }\n    .tabs { display: flex; gap: 6px; margin: 18px 0 14px; flex-wrap: wrap; }\n    .tab { border: 0; background: transparent; padding: 8px 12px; border-radius: 8px; font: inherit; font-size: 14px; cursor: pointer; color: #5b5873; }\n    .tab.on { background: #fff; color: #1f1d2b; font-weight: 600; box-shadow: 0 1px 4px rgba(0,0,0,.06); }\n    .stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }\n    .stat { background: #fff; border: 1px solid #e6e2f3; border-radius: 12px; padding: 14px; }\n    .stat b { display: block; font-size: 26px; }\n    .stat span { font-size: 12px; color: #6d6a84; }\n    .card { background: #fff; border: 1px solid #e6e2f3; border-radius: 12px; padding: 16px; margin-top: 12px; }\n    .card h3 { margin: 0 0 10px; font-size: 15px; }\n    .grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; }\n    .tw { overflow-x: auto; }\n    table { width: 100%; border-collapse: collapse; font-size: 13px; }\n    th { text-align: left; font-weight: 600; color: #6d6a84; padding: 8px; border-bottom: 1px solid #e6e2f3; white-space: nowrap; }\n    td { padding: 8px; border-bottom: 1px solid #f0edf8; vertical-align: top; }\n    .pill { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 12px; background: #efeafe; color: #5a37c9; margin: 1px 2px 1px 0; }\n    .pill.no { background: #f3f3f3; color: #777; }\n    .bars { display: grid; gap: 6px; }\n    .bar { display: grid; grid-template-columns: 150px 1fr 32px; align-items: center; gap: 8px; font-size: 13px; }\n    .bt { background: #f0edf8; border-radius: 6px; height: 10px; overflow: hidden; }\n    .bt span { display: block; height: 100%; background: #7c4dff; }\n    .login { max-width: 360px; margin: 12vh auto 0; background: #fff; border: 1px solid #e6e2f3; border-radius: 16px; padding: 28px; }\n    .login h1 { margin-bottom: 4px; }\n    .login input { width: 100%; box-sizing: border-box; padding: 11px 12px; border: 1px solid #d6d1ea; border-radius: 10px; font: inherit; margin: 16px 0 12px; }\n    .login .btn { width: 100%; padding: 12px; }\n    .err { color: #c62828; font-size: 13px; margin-top: 10px; }\n    input.search { padding: 8px 12px; border: 1px solid #d6d1ea; border-radius: 10px; font: inherit; font-size: 13px; min-width: 220px; }\n  `,\n\n  render(d2) {\n    const auth = d2.auth(d2.params.auth)\n    const st = d2.state\n    const email = (auth.user && auth.user.email) || (auth.session && auth.session.credentials && auth.session.credentials.email) || (st.authed && auth.isAuthed)\n    if (!email) {\n      return `<div class=\"wrap\"><div class=\"login\">\n        <h1>Confra 2026 · backoffice</h1>\n        <div class=\"muted\">Respostas do formulário da Semana Data2.</div>\n        <input type=\"password\" class=\"pw\" placeholder=\"Senha\" autocomplete=\"current-password\"/>\n        <button class=\"btn primary\" data-action=\"login\" ${st.busy ? 'disabled' : ''}>${st.busy ? 'Entrando…' : 'Entrar'}</button>\n        ${st.error ? `<div class=\"err\">${esc(st.error)}</div>` : ''}\n      </div></div>`\n    }\n    const ds = d2.data('dataset')\n    const all = ds ? latest(ds.records() || []) : []\n    const vao = all.filter((r) => r.participa)\n    const nao = all.filter((r) => !r.participa)\n    const tab = st.tab || 'resumo'\n    const q = String(st.q || '').toLowerCase()\n\n    let body = ''\n    if (tab === 'resumo') {\n      const acomp = vao.filter((r) => r.acompanhante).length\n      const transp = count(vao, (r) => TRANSP[r.transporte] || r.transporte)\n      const noites = count(vao, (r) => r.noites)\n      const dias = count(vao, (r) => r.dias)\n      body = `<div class=\"stats\">\n          <div class=\"stat\"><b>${all.length}</b><span>responderam</span></div>\n          <div class=\"stat\"><b>${vao.length}</b><span>vão</span></div>\n          <div class=\"stat\"><b>${nao.length}</b><span>não vão</span></div>\n          <div class=\"stat\"><b>${acomp}</b><span>acompanhantes</span></div>\n          <div class=\"stat\"><b>${vao.length + acomp}</b><span>pessoas na confra (time + acomp.)</span></div>\n          <div class=\"stat\"><b>${transp['Avião'] || 0}</b><span>de avião</span></div>\n        </div>\n        <div class=\"grid2\">\n          <div class=\"card\"><h3>Como vêm</h3>${bars(transp)}</div>\n          <div class=\"card\"><h3>Pessoas por noite de hospedagem</h3>${bars(noites, NOITES)}</div>\n          <div class=\"card\"><h3>Presença por dia</h3>${bars(dias)}</div>\n          <div class=\"card\"><h3>Não vão</h3>${nao.length ? nao.map((r) => `<span class=\"pill no\">${esc(r.nome)}</span>`).join('') : '<span class=\"muted\">Ninguém até agora.</span>'}</div>\n        </div>`\n    }\n    if (tab === 'pessoas') {\n      const rows = all.filter((r) => !q || JSON.stringify(r).toLowerCase().includes(q))\n      body = `<div class=\"card\"><div class=\"top\"><h3>${rows.length} respostas (última de cada pessoa)</h3><input class=\"search\" placeholder=\"Buscar…\" value=\"${esc(st.q || '')}\"/></div>${table(\n        ['Nome', 'Vai', 'Contato', 'Cidade', 'Chegada → volta', 'Transporte', 'Emergência', 'Obs.', 'Enviado'],\n        rows.map((r) => [\n          `<b>${esc(r.nome)}</b><div class=\"muted\">${esc(r.email)}</div>`,\n          r.participa ? '<span class=\"pill\">sim</span>' : '<span class=\"pill no\">não</span>',\n          esc(r.celular), esc(r.cidade),\n          r.participa ? `${esc(r.chegada)} → ${esc(r.volta)}` : '',\n          r.participa ? `${esc(TRANSP[r.transporte] || r.transporte || '')}<div class=\"muted\">${esc(det(r))}</div>` : '',\n          esc(r.emergencia),\n          esc([r.acessibilidade, r.observacoes].filter(Boolean).join(' · ')),\n          `<span class=\"muted\">${r.enviadoEm ? esc(d2.fmt.date(r.enviadoEm)) + ' ' + esc(d2.fmt.time(r.enviadoEm)) : ''}</span>`,\n        ]))}</div>`\n    }\n    if (tab === 'viagem') {\n      const voo = vao.filter((r) => r.transporte === 'aviao')\n      const outros = vao.filter((r) => r.transporte && r.transporte !== 'aviao')\n      body = `<div class=\"card\"><h3>✈️ Passagens (${voo.length})</h3>${table(\n          ['Nome (documento)', 'Aeroporto', 'Ida', 'Volta', 'Bagagem', 'Celular'],\n          voo.map((r) => { const d = r.transporteDetalhes || {}; return [esc(r.nome), esc(d.aeroporto), `${esc(r.chegada)} <span class=\"muted\">${esc(d.periodoIda || '')}</span>`, `${esc(r.volta)} <span class=\"muted\">${esc(d.periodoVolta || '')}</span>`, esc(d.bagagem), esc(r.celular)] }))}</div>\n        <div class=\"card\"><h3>🚗 Outros transportes (${outros.length})</h3>${table(\n          ['Nome', 'Como', 'Detalhes', 'Chegada → volta'],\n          outros.map((r) => [esc(r.nome), esc(TRANSP[r.transporte]), esc(det(r)), `${esc(r.chegada)} → ${esc(r.volta)}`]))}</div>\n        <div class=\"card\"><h3>🏨 Hospedagem</h3>${table(\n          ['Nome', 'Noites', 'Divide?', 'Com quem'],\n          vao.filter((r) => (r.noites || []).length || r.divide).map((r) => [esc(r.nome),\n            (r.noites || []).map((n) => `<span class=\"pill\">${esc(n)}</span>`).join(''), esc(r.divide), esc(r.divideCom)]))}</div>`\n    }\n    if (tab === 'confra') {\n      body = `<div class=\"grid2\">\n          <div class=\"card\"><h3>Camiseta</h3>${bars(count(vao, (r) => r.camiseta), ['PP', 'P', 'M', 'G', 'GG', 'XGG'])}</div>\n          <div class=\"card\"><h3>Moletom</h3>${bars(count(vao, (r) => r.moletom), ['PP', 'P', 'M', 'G', 'GG', 'XGG'])}</div>\n          <div class=\"card\"><h3>Calça</h3>${bars(count(vao, (r) => r.calca), Object.keys(count(vao, (r) => r.calca)).sort((a, b) => a - b))}</div>\n          <div class=\"card\"><h3>Calçado</h3>${bars(count(vao, (r) => r.calcado), Object.keys(count(vao, (r) => r.calcado)).sort((a, b) => a - b))}</div>\n        </div>\n        <div class=\"card\"><h3>💛 Acompanhantes</h3>${table(['Pessoa', 'Acompanhante'],\n          vao.filter((r) => r.acompanhante).map((r) => [esc(r.nome), esc(r.acompanhanteNome)]))}</div>\n        <div class=\"card\"><h3>🍽️ Restrições alimentares</h3>${table(['Pessoa', 'Restrição'],\n          vao.filter((r) => r.restricaoAlimentar).map((r) => [esc(r.nome), esc(r.restricaoAlimentar)]))}</div>\n        <div class=\"card\"><h3>🎒 Kit por pessoa</h3>${table(['Pessoa', 'Camiseta', 'Moletom', 'Calça', 'Calçado'],\n          vao.map((r) => [esc(r.nome), esc(r.camiseta), esc(r.moletom), esc(r.calca), esc(r.calcado)]))}</div>\n        <div class=\"card\"><h3>💡 Ideias pro hackathon</h3>${table(['Pessoa', 'Ideia'],\n          vao.filter((r) => r.ideiaHackathon).map((r) => [esc(r.nome), esc(r.ideiaHackathon)]))}</div>`\n    }\n\n    return `<div class=\"wrap\"><div class=\"page\">\n      <div class=\"top\">\n        <div><h1>Confra 2026 · respostas</h1><div class=\"muted\">${ds && ds.loading ? 'Carregando…' : `${all.length} respostas`}</div></div>\n        <div style=\"display:flex;gap:8px\"><button class=\"btn\" data-action=\"reload\">Atualizar</button><button class=\"btn\" data-action=\"csv\">Baixar CSV</button><button class=\"btn\" data-action=\"logout\">Sair</button></div>\n      </div>\n      <div class=\"tabs\">${TABS.map(([k, l]) => `<button class=\"tab ${tab === k ? 'on' : ''}\" data-tab=\"${k}\">${l}</button>`).join('')}</div>\n      ${body}\n    </div></div>`\n  },\n\n  mounted(d2) {\n    const load = () => { const ds = d2.data('dataset'); if (ds) ds.loadAll().catch(() => {}) }\n    if (d2.auth(d2.params.auth).user) load()\n    const login = async () => {\n      const pw = d2.$('.pw') && d2.$('.pw').value\n      if (!pw) return\n      d2.state.busy = true; d2.state.error = ''\n      try {\n        // Same path as the People login page: fill the strategy's credentials, then login() with no args.\n        const creds = { email: d2.param('loginEmail', 'confra@data2.app'), password: pw }\n        d2.field(d2.params.auth, 'credentials.email').set(creds.email)\n        d2.field(d2.params.auth, 'credentials.password').set(creds.password)\n        const a = d2.auth(d2.params.auth)\n        const res = a.raw && typeof a.raw.login === 'function' ? await a.raw.login() : await a.login(creds)\n        if (res && (res.error || res.isData2Error || res.name === 'Data2Error')) throw new Error(res.message || 'login')\n        d2.state.authed = true\n        load()\n      } catch (e) {\n        d2.log('confra backoffice login error', e)\n        d2.state.error = 'Senha incorreta.'\n      } finally { d2.state.busy = false }\n    }\n    d2.on('[data-action=\"login\"]', 'click', login)\n    d2.on('.pw', 'keydown', (e) => { if (e.key === 'Enter') login() })\n    d2.on('[data-action=\"logout\"]', 'click', () => { d2.state.authed = false; d2.auth(d2.params.auth).logout() })\n    d2.on('[data-action=\"reload\"]', 'click', load)\n    d2.on('[data-tab]', 'click', (e, el) => { d2.state.tab = el.dataset.tab })\n    d2.on('input.search', 'input', (e, el) => { d2.state.q = el.value })\n    d2.on('[data-action=\"csv\"]', 'click', () => {\n      const ds = d2.data('dataset')\n      const blob = new Blob(['﻿' + csv(latest(ds ? ds.records() : []))], { type: 'text/csv;charset=utf-8' })\n      const a = document.createElement('a')\n      a.href = URL.createObjectURL(blob); a.download = 'confra2026-respostas.csv'; a.click()\n      setTimeout(() => URL.revokeObjectURL(a.href), 1000)\n    })\n  },\n}\n"}},"auth":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"auth"}}}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}},"loginEmail":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"loginEmail"}}}}}}}}}},{"_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":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6aeb4745d5edd502491aba09","component":"data2-core-primitives@Artboard","system":"60da379fda3861ca65e727b8","displayName":"Confra 2026 · Backoffice","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Confra 2026 · Backoffice"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1280,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"INTiO5s6WvAvaUwEe0xgQ"},{"_id":"45f406875d5f2a983ef5893d","parent":"6aeb4745d5edd502491aba09","component":"people@confra2026-backoffice","system":"60da379fda3861ca65e727b8","displayName":"Backoffice","params":{"auth":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"confra-backoffice-auth"}},"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"fO821UyBDOB5NsdEf3GjcDataSet"}},"loginEmail":"confra@data2.app","super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1280,"height":900}}}},"reference":"RJpUZOlZj3AxLxJiSVWq2"}]}},{"_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":"6aeb474e2731ce6794c48518","displayName":"Confra 2026 · Backoffice","reference":"ZY1AaACA4KpbOOD4Q6SVQ","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"confra-backoffice"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"INTiO5s6WvAvaUwEe0xgQ"}}},"system":"60da379fda3861ca65e727b8","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6aeb44e71b33f7b90d151dfa","component":"data2-core@DataSet","system":"60da379fda3861ca65e727b8","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"fO821UyBDOB5NsdEf3Gjc"}}},"reference":"fO821UyBDOB5NsdEf3GjcDataSet"},{"_id":"6aeb46ed53625b193a17e9ef","component":"data2-core@AuthenticationStrategy","system":"60da379fda3861ca65e727b8","params":{"credentials":[{"key":"email"},{"key":"password"}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"confra-backoffice-usersDataSet"}},"email":"email","password":"password"},"reference":"confra-backoffice-auth"},{"_id":"6aeb44e72731ce6794c47da5","component":"data2-core@Data2TableDataSource","system":"60da379fda3861ca65e727b8","params":{"table":"fO821UyBDOB5NsdEf3Gjc","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":"nome","title":"Nome completo","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"celular","title":"Celular","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"cidade","title":"Cidade de saída","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"participa","title":"Vai participar","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"key":"chegada","title":"Chegada","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"volta","title":"Volta","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"dias","title":"Dias presentes","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"transporte","title":"Transporte","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"transporteDetalhes","title":"Detalhes do transporte","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"noites","title":"Noites de hospedagem","component":"data2-core-primitives@Array"}},{"component":"data2-core-types@Field","params":{"key":"divide","title":"Divide hospedagem","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"divideCom","title":"Divide com","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"acompanhante","title":"Leva acompanhante","component":"data2-core-primitives@Boolean"}},{"component":"data2-core-types@Field","params":{"key":"acompanhanteNome","title":"Nome do acompanhante","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"restricaoAlimentar","title":"Restrição alimentar","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"moletom","title":"Tamanho de moletom","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"calcado","title":"Número do calçado","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"acessibilidade","title":"Acessibilidade","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"emergencia","title":"Contato de emergência","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"ideiaHackathon","title":"Ideia pro hackathon","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"observacoes","title":"Observações","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"enviadoEm","title":"Enviado em","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"camiseta","title":"Tamanho de camiseta","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"calca","title":"Tamanho de calça","component":"data2-core-primitives@String"}}]},"reference":"fO821UyBDOB5NsdEf3Gjc"},{"_id":"6aeb46e5f86ee2783726ea67","component":"data2-core@DataSet","system":"60da379fda3861ca65e727b8","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"confra-backoffice-users"}}},"reference":"confra-backoffice-usersDataSet"},{"_id":"6aeb46e51b33f7b90d152404","component":"data2-core@Data2TableDataSource","system":"60da379fda3861ca65e727b8","params":{"table":"confra-backoffice-users","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","required":true}},{"component":"data2-core-types@Field","params":{"key":"role","title":"Papel","component":"data2-core-primitives@String"}}]},"reference":"confra-backoffice-users"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}