{"context":{"domain":"people-gabi-carmo"},"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":"69a704a047c6ef5f14b2dd47","name":"Gabriela Carmo","domain":"people-gabi-carmo","visibility":"private","settings":{"defaultAccessPolicy":"public"},"updatedAt":"2026-07-27T14:19:36.810Z","createdAt":"2026-03-03T15:56:16.236Z"}]}},{"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":"6a3ea760b36fbedbb243ad2b","component":"data2-core-types@Component","system":"69a704a047c6ef5f14b2dd47","params":{"extends":"data2-core-primitives@Block","component":"loginScreen","package":"people-gabi-carmo","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"export default {\n  css: `\n  .wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0f172a,#1e293b);font-family:Inter,system-ui,sans-serif;padding:20px}\n  .card{width:min(400px,94vw);background:#fff;border-radius:18px;padding:32px;box-shadow:0 24px 70px rgba(0,0,0,.4)}\n  .logo{width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#16c784,#0ea5e9);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:16px}\n  .h{font-size:21px;font-weight:800;color:#0f172a}\n  .sub{font-size:13px;color:#64748b;margin:4px 0 20px}\n  .lbl{font-size:12px;font-weight:700;color:#334155;margin-bottom:5px;display:block}\n  .in{width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:10px;padding:12px;font:14px sans-serif;color:#0f172a;margin-bottom:14px}\n  .in:focus{outline:2px solid #16c784;border-color:#16c784}\n  .btn{width:100%;background:linear-gradient(135deg,#16c784,#0ea5e9);color:#fff;border:0;border-radius:10px;padding:13px;font-weight:700;font-size:15px;cursor:pointer}\n  .btn:disabled{opacity:.6;cursor:default}\n  .err{background:#fee2e2;color:#b91c1c;border-radius:9px;padding:10px;font-size:13px;margin-bottom:14px}\n  .toggle{text-align:center;font-size:13px;color:#64748b;margin-top:16px}\n  .toggle a{color:#0ea5e9;font-weight:700;cursor:pointer}\n  `,\n  render(d2) {\n    const mode = d2.state.mode || 'login';\n    const busy = d2.state.busy;\n    const err = d2.state.error;\n    return `<div class=\"wrap\"><div class=\"card\">\n      <div class=\"logo\">d2</div>\n      <div class=\"h\">${mode === 'login' ? 'Entrar no CRM' : 'Criar sua conta'}</div>\n      <div class=\"sub\">CRM de Prospects da data2 — acesso restrito.</div>\n      ${err ? `<div class=\"err\">${err.replace(/</g, '&lt;')}</div>` : ''}\n      <label class=\"lbl\">E-mail</label>\n      <input class=\"in email\" type=\"email\" placeholder=\"voce@data2.app\" autocomplete=\"username\"/>\n      <label class=\"lbl\">Senha</label>\n      <input class=\"in pass\" type=\"password\" placeholder=\"••••••••\" autocomplete=\"${mode === 'login' ? 'current-password' : 'new-password'}\"/>\n      <button class=\"btn submit\" ${busy ? 'disabled' : ''}>${busy ? 'Aguarde…' : (mode === 'login' ? 'Entrar' : 'Criar conta e entrar')}</button>\n      <div class=\"toggle\">${mode === 'login' ? 'Primeiro acesso? <a class=\"sw\">Criar conta</a>' : 'Já tem conta? <a class=\"sw\">Entrar</a>'}</div>\n    </div></div>`;\n  },\n  mounted(d2) {\n    const submit = async () => {\n      const email = (d2.$('.email')?.value || '').trim();\n      const pass = d2.$('.pass')?.value || '';\n      if (!email || !pass) { d2.state.error = 'Preencha e-mail e senha.'; return; }\n      d2.state.error = ''; d2.state.busy = true;\n      const auth = d2.auth('crmAuth');\n      try {\n        if ((d2.state.mode || 'login') === 'register') {\n          await auth.register({ email, password: pass });\n          await auth.login({ email, password: pass });\n        } else {\n          await auth.login({ email, password: pass });\n        }\n        d2.router('MainRouter').goTo('/');\n      } catch (err) {\n        const msg = (err && err.message ? err.message : String(err)) || 'Falha na autenticação.';\n        d2.state.error = /invalid|credential|password|not found|unauthor/i.test(msg)\n          ? 'E-mail ou senha incorretos.' : msg;\n      } finally {\n        d2.state.busy = false;\n      }\n    };\n    d2.on('.submit', 'click', submit);\n    d2.on('.in', 'keydown', (e) => { if (e.key === 'Enter') submit(); });\n    d2.on('.sw', 'click', () => { d2.state.mode = (d2.state.mode || 'login') === 'login' ? 'register' : 'login'; d2.state.error = ''; });\n  },\n};"}}}}}}}},{"_id":"6a3ea7469936088eede46993","component":"data2-core-types@Component","system":"69a704a047c6ef5f14b2dd47","params":{"extends":"data2-core-primitives@Block","component":"crmApp","package":"people-gabi-carmo","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 STAGES = [\n  { key: 'prospeccao', label: 'Prospecção', color: '#64748b' },\n  { key: 'mensagem',   label: 'Mensagem enviada', color: '#0ea5e9' },\n  { key: 'respondido', label: 'Respondeu', color: '#6366f1' },\n  { key: 'reuniao',    label: 'Reunião feita', color: '#8b5cf6' },\n  { key: 'fup',        label: 'Follow-up (7d)', color: '#f59e0b' },\n  { key: 'demo',       label: 'Demo', color: '#ec4899' },\n  { key: 'fechamento', label: 'Fechamento', color: '#14b8a6' },\n  { key: 'ganho',      label: 'Ganho', color: '#22c55e' },\n  { key: 'perdido',    label: 'Perdido', color: '#ef4444' },\n];\nconst STAGE_MAP = Object.fromEntries(STAGES.map(s => [s.key, s]));\nconst STATUS = [\n  { key: 'sem_resposta', label: 'Sem resposta' },\n  { key: 'positiva', label: 'Resposta positiva' },\n  { key: 'negativa', label: 'Resposta negativa' },\n];\n\nfunction esc(s) { return (s == null ? '' : String(s)).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;'); }\nfunction todayStr() { return new Date().toISOString().slice(0, 10); }\nfunction dval(s) { return s ? String(s).slice(0, 10) : ''; }\nfunction addDays(s, n) { const d = new Date(dval(s) + 'T00:00:00'); d.setDate(d.getDate() + n); return d.toISOString().slice(0, 10); }\nfunction diffDays(aStr, bStr) { const a = new Date(dval(aStr) + 'T00:00:00'); const b = new Date(dval(bStr) + 'T00:00:00'); return Math.round((a - b) / 86400000); }\nfunction fmtDate(s) { if (!s) return '—'; const d = new Date(dval(s) + 'T00:00:00'); return d.toLocaleDateString('pt-BR'); }\n\nfunction extractProspects(res) {\n  try {\n    let p = res;\n    if (p && p.data !== undefined && (p.result === undefined && !Array.isArray(p))) p = p.data;\n    let r = (p && p.result !== undefined) ? p.result : p;\n    if (typeof r === 'string') r = JSON.parse(r);\n    let list = r && r.prospects ? r.prospects : (Array.isArray(r) ? r : []);\n    return Array.isArray(list) ? list : [];\n  } catch (e) { return []; }\n}\n\nfunction kpis(d2, rows) {\n  const today = todayStr();\n  const total = rows.length;\n  const ativos = rows.filter(r => r.stage !== 'ganho' && r.stage !== 'perdido').length;\n  const fupDue = rows.filter(r => (r.stage === 'reuniao' || r.stage === 'fup') && r.dataFup && diffDays(r.dataFup, today) <= 0).length;\n  const ganhos = rows.filter(r => r.stage === 'ganho');\n  const valorGanho = ganhos.reduce((a, r) => a + (Number(r.valorDeal) || 0), 0);\n  const valorPipe = rows.filter(r => r.stage !== 'ganho' && r.stage !== 'perdido').reduce((a, r) => a + (Number(r.valorDeal) || 0), 0);\n  const card = (g, l, v, c) => `<div class=\"kpi\"><div class=\"kt\"><span class=\"kg\">${g}</span><span class=\"kl\">${l}</span></div><div class=\"kv\" style=\"color:${c}\">${v}</div></div>`;\n  return `<div class=\"kpis\">\n    ${card('👥', 'Total de prospects', total, '#0f172a')}\n    ${card('🔥', 'No pipeline', ativos, '#6366f1')}\n    ${card('⏰', 'Follow-ups a fazer', fupDue, fupDue > 0 ? '#ef4444' : '#16a34a')}\n    ${card('🏆', 'Ganhos', ganhos.length + ' · ' + d2.fmt.currency(valorGanho, 'BRL'), '#16a34a')}\n    ${card('💰', 'Valor no pipeline', d2.fmt.currency(valorPipe, 'BRL'), '#14b8a6')}\n  </div>`;\n}\n\nfunction header(d2, rows) {\n  return `<div class=\"hdr\">\n    <div class=\"brand\"><div class=\"logo\">d2</div><div><div class=\"btitle\">data2 · CRM de Prospects</div><div class=\"bsub\">Da prospecção ao fechamento</div></div></div>\n    <button class=\"logoutbtn\">Sair</button>\n  </div>${kpis(d2, rows)}`;\n}\n\nfunction tabsBar(d2) {\n  const tab = d2.state.tab || 'funil';\n  return `<div class=\"tabsrow\">\n    <div class=\"tabs\">\n      <button class=\"tab ${tab === 'funil' ? 'on' : ''}\" data-tab=\"funil\">📋 Funil</button>\n      <button class=\"tab ${tab === 'prospec' ? 'on' : ''}\" data-tab=\"prospec\">✨ Prospecção IA</button>\n    </div>\n    ${tab === 'funil' ? `<button class=\"newbtn\">+ Novo prospect</button>` : ''}\n  </div>`;\n}\n\nfunction cardHtml(d2, r) {\n  const today = todayStr();\n  let fup = '';\n  if ((r.stage === 'reuniao' || r.stage === 'fup') && r.dataFup) {\n    const d = diffDays(r.dataFup, today);\n    if (d < 0) fup = `<span class=\"badge red\">⏰ FUP atrasado ${-d}d</span>`;\n    else if (d === 0) fup = `<span class=\"badge red\">⏰ FUP hoje</span>`;\n    else fup = `<span class=\"badge amber\">⏰ FUP em ${d}d</span>`;\n  }\n  let st = '';\n  if (r.statusResposta === 'positiva') st = `<span class=\"badge green\">＋ Resposta</span>`;\n  else if (r.statusResposta === 'negativa') st = `<span class=\"badge gray\">－ Resposta</span>`;\n  const val = (Number(r.valorDeal) > 0) ? `<span class=\"badge teal\">${d2.fmt.compact(Number(r.valorDeal))}</span>` : '';\n  return `<div class=\"card\" draggable=\"true\" data-key=\"${r._id}\" data-id=\"${r._id}\">\n    <div class=\"cname\">${esc(r.nome)}</div>\n    <div class=\"cmeta\">${esc(r.empresa || '')}${r.cargo ? ' · ' + esc(r.cargo) : ''}</div>\n    <div class=\"cbadges\">${r.setor ? `<span class=\"tag\">${esc(r.setor)}</span>` : ''}${st}${fup}${val}</div>\n  </div>`;\n}\n\nfunction board(d2, rows) {\n  const cols = STAGES.map(s => {\n    const items = rows.filter(r => (r.stage || 'prospeccao') === s.key);\n    return `<div class=\"col\" data-lane=\"${s.key}\">\n      <div class=\"colhead\"><span class=\"dot\" style=\"background:${s.color}\"></span>${s.label}<span class=\"cnt\">${items.length}</span></div>\n      <div class=\"colbody\">${items.map(r => cardHtml(d2, r)).join('') || `<div class=\"empty\">—</div>`}</div>\n    </div>`;\n  }).join('');\n  return `<div class=\"board\">${cols}</div>`;\n}\n\nfunction prospec(d2) {\n  const icp = d2.state.icp || '';\n  const q = d2.state.query || '';\n  const searching = d2.state.searching;\n  const sugg = d2.state.suggestions || [];\n  const added = d2.state.added || {};\n  const err = d2.state.searchError;\n  const list = sugg.map((s, i) => `<div class=\"scard\">\n      <div class=\"srow\"><div class=\"sname\">${esc(s.nome)}</div><div class=\"scompany\">${esc(s.empresa || '')}</div></div>\n      <div class=\"scargo\">${esc(s.cargo || '')}${s.setor ? ' · ' + esc(s.setor) : ''}</div>\n      <div class=\"smotivo\">${esc(s.motivoAbordagem || '')}</div>\n      ${s.mensagemRascunho ? `<div class=\"smsg\">💬 ${esc(s.mensagemRascunho)}</div>` : ''}\n      <div class=\"sfoot\">\n        ${s.linkedinUrl ? `<a class=\"slink\" href=\"${esc(s.linkedinUrl)}\" target=\"_blank\">LinkedIn ↗</a>` : '<span></span>'}\n        <button class=\"addbtn ${added[i] ? 'done' : ''}\" data-idx=\"${i}\" ${added[i] ? 'disabled' : ''}>${added[i] ? '✓ Adicionado' : '+ Adicionar ao funil'}</button>\n      </div>\n    </div>`).join('');\n  return `<div class=\"prospec\">\n    <div class=\"pform\">\n      <div class=\"plabel\">Perfil de Cliente Ideal (ICP)</div>\n      <textarea class=\"icp\" placeholder=\"Ex.: Empresas de varejo de moda no Brasil, médio porte, que querem digitalizar a experiência de compra. Cargos: Head de Marketing, Diretor de E-commerce, CTO.\">${esc(icp)}</textarea>\n      <div class=\"plabel\">Termo de busca (opcional)</div>\n      <input class=\"query\" placeholder=\"Deixe vazio para usar o ICP\" value=\"${esc(q)}\"/>\n      <button class=\"searchbtn\" ${searching ? 'disabled' : ''}>${searching ? '⏳ Buscando na web + IA…' : '🔎 Buscar prospects com IA'}</button>\n      ${err ? `<div class=\"serr\">${esc(err)}</div>` : ''}\n      <div class=\"phint\">A IA busca empresas reais na web e sugere quem abordar, por quê, e um rascunho de mensagem.</div>\n    </div>\n    <div class=\"results\">${searching ? `<div class=\"loading\">Consultando a web e gerando sugestões…</div>` : (list || `<div class=\"loading\">Descreva o ICP e clique em buscar.</div>`)}</div>\n  </div>`;\n}\n\nfunction field(label, name, val, type) {\n  return `<label class=\"fl\"><span>${label}</span><input class=\"f\" data-field=\"${name}\" type=\"${type || 'text'}\" value=\"${esc(dval(val) && type === 'date' ? dval(val) : (val == null ? '' : val))}\"/></label>`;\n}\nfunction area(label, name, val) {\n  return `<label class=\"fl full\"><span>${label}</span><textarea class=\"f\" data-field=\"${name}\">${esc(val || '')}</textarea></label>`;\n}\nfunction select(label, name, val, opts) {\n  return `<label class=\"fl\"><span>${label}</span><select class=\"f\" data-field=\"${name}\">${opts.map(o => `<option value=\"${o.key}\" ${o.key === val ? 'selected' : ''}>${o.label}</option>`).join('')}</select></label>`;\n}\n\nfunction modal(d2) {\n  const f = d2.state.form || {};\n  const isNew = !f._id;\n  let fupLine = '';\n  if (f.dataReuniao) fupLine = `<div class=\"fuphint\">Follow-up sugerido (7d após reunião): <b>${fmtDate(addDays(f.dataReuniao, 7))}</b></div>`;\n  return `<div class=\"scrim\">\n    <div class=\"modal\">\n      <div class=\"mhead\"><div class=\"mtitle\">${isNew ? 'Novo prospect' : esc(f.nome || 'Prospect')}</div><button class=\"closebtn\">✕</button></div>\n      <div class=\"mbody\">\n        <div class=\"grid2\">\n          ${field('Nome', 'nome', f.nome)}\n          ${field('Empresa', 'empresa', f.empresa)}\n          ${field('Cargo', 'cargo', f.cargo)}\n          ${field('Setor', 'setor', f.setor)}\n          ${field('E-mail', 'email', f.email)}\n          ${field('LinkedIn', 'linkedinUrl', f.linkedinUrl)}\n          ${select('Etapa', 'stage', f.stage || 'prospeccao', STAGES)}\n          ${select('Status da resposta', 'statusResposta', f.statusResposta || 'sem_resposta', STATUS)}\n          ${field('Origem', 'origem', f.origem)}\n          ${field('Valor do deal (R$)', 'valorDeal', f.valorDeal, 'number')}\n          ${field('Data mensagem', 'dataMensagem', f.dataMensagem, 'date')}\n          ${field('Data reunião', 'dataReuniao', f.dataReuniao, 'date')}\n          ${field('Data follow-up', 'dataFup', f.dataFup, 'date')}\n          ${field('Data demo', 'dataDemo', f.dataDemo, 'date')}\n          ${field('Data fechamento', 'dataFechamento', f.dataFechamento, 'date')}\n        </div>\n        ${fupLine}\n        <button class=\"mtgnow\">📅 Marcar reunião feita hoje (agenda FUP +7d)</button>\n        ${area('Acordado pós-reunião', 'acordadoPosReuniao', f.acordadoPosReuniao)}\n        ${area('Motivo da abordagem', 'motivoAbordagem', f.motivoAbordagem)}\n        ${area('Rascunho de mensagem', 'mensagemRascunho', f.mensagemRascunho)}\n        ${area('Notas', 'notas', f.notas)}\n      </div>\n      <div class=\"mfoot\">\n        ${!isNew ? `<button class=\"delbtn\">🗑 Excluir</button>` : '<span></span>'}\n        <div class=\"mfr\"><button class=\"closebtn ghost\">Cancelar</button><button class=\"savebtn\" ${d2.state.saving ? 'disabled' : ''}>${d2.state.saving ? 'Salvando…' : 'Salvar'}</button></div>\n      </div>\n    </div>\n  </div>`;\n}\n\nexport default {\n  css: `\n  .app{position:absolute;inset:0;display:flex;flex-direction:column;background:#f1f5f9;font-family:Inter,system-ui,sans-serif;color:#0f172a;overflow:hidden}\n  .boot{padding:40px;font:15px sans-serif;color:#64748b}\n  .hdr{display:flex;align-items:center;justify-content:space-between;padding:16px 22px 0}\n  .brand{display:flex;align-items:center;gap:12px}\n  .logo{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#16c784,#0ea5e9);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:17px}\n  .btitle{font-size:17px;font-weight:800}\n  .bsub{font-size:12px;color:#64748b}\n  .logoutbtn{background:#fff;border:1px solid #e2e8f0;border-radius:9px;padding:8px 14px;cursor:pointer;font-size:13px;color:#475569}\n  .logoutbtn:hover{background:#f8fafc}\n  .kpis{display:flex;gap:12px;padding:14px 22px 4px;flex-wrap:wrap}\n  .kpi{flex:1;min-width:150px;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:13px 15px}\n  .kt{display:flex;align-items:center;gap:7px}\n  .kg{font-size:16px}.kl{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.03em;font-weight:600}\n  .kv{font-size:22px;font-weight:800;margin-top:4px}\n  .tabsrow{display:flex;align-items:center;justify-content:space-between;padding:10px 22px 6px}\n  .tabs{display:flex;gap:6px}\n  .tab{background:transparent;border:0;border-radius:9px;padding:9px 15px;cursor:pointer;font-size:14px;font-weight:600;color:#64748b}\n  .tab.on{background:#0f172a;color:#fff}\n  .newbtn{background:#16c784;color:#fff;border:0;border-radius:9px;padding:9px 15px;cursor:pointer;font-weight:700;font-size:13px}\n  .newbtn:hover{filter:brightness(.95)}\n  .board{flex:1;display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;padding:8px 22px 22px;align-items:flex-start}\n  .col{flex:0 0 236px;width:236px;background:#e9eef5;border-radius:14px;display:flex;flex-direction:column;max-height:100%}\n  .colhead{display:flex;align-items:center;gap:7px;padding:12px 13px;font-size:12.5px;font-weight:700;color:#334155}\n  .dot{width:9px;height:9px;border-radius:50%}\n  .cnt{margin-left:auto;background:#cbd5e1;color:#334155;border-radius:20px;padding:1px 8px;font-size:11px}\n  .colbody{padding:0 9px 10px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:40px}\n  .col[data-over]{outline:2px dashed #16c784;outline-offset:-2px}\n  .card{background:#fff;border:1px solid #e2e8f0;border-radius:11px;padding:11px;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.04)}\n  .card:hover{border-color:#16c784}\n  .cname{font-weight:700;font-size:13.5px}\n  .cmeta{font-size:12px;color:#64748b;margin-top:2px}\n  .cbadges{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}\n  .tag{background:#eef2f7;color:#475569;border-radius:6px;padding:2px 7px;font-size:10.5px;font-weight:600}\n  .badge{border-radius:6px;padding:2px 7px;font-size:10.5px;font-weight:700}\n  .badge.red{background:#fee2e2;color:#b91c1c}.badge.amber{background:#fef3c7;color:#b45309}\n  .badge.green{background:#dcfce7;color:#15803d}.badge.gray{background:#e2e8f0;color:#475569}.badge.teal{background:#ccfbf1;color:#0f766e}\n  .empty{color:#94a3b8;font-size:12px;text-align:center;padding:8px}\n  .prospec{flex:1;display:flex;gap:18px;padding:10px 22px 22px;overflow:hidden}\n  .pform{flex:0 0 340px;display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:16px;height:fit-content}\n  .plabel{font-size:12px;font-weight:700;color:#334155}\n  .icp{height:120px;resize:vertical}\n  .icp,.query{border:1px solid #cbd5e1;border-radius:9px;padding:10px;font:13px sans-serif;color:#0f172a;width:100%;box-sizing:border-box}\n  .searchbtn{background:linear-gradient(135deg,#16c784,#0ea5e9);color:#fff;border:0;border-radius:10px;padding:12px;cursor:pointer;font-weight:700;font-size:14px;margin-top:4px}\n  .searchbtn:disabled{opacity:.6;cursor:default}\n  .phint{font-size:11.5px;color:#94a3b8;margin-top:2px}\n  .serr{background:#fee2e2;color:#b91c1c;border-radius:8px;padding:8px;font-size:12px}\n  .results{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding-right:4px}\n  .loading{color:#64748b;font-size:14px;padding:24px;text-align:center}\n  .scard{background:#fff;border:1px solid #e2e8f0;border-radius:13px;padding:14px}\n  .srow{display:flex;align-items:baseline;justify-content:space-between;gap:8px}\n  .sname{font-weight:800;font-size:15px}.scompany{font-size:13px;color:#16a34a;font-weight:700}\n  .scargo{font-size:12.5px;color:#64748b;margin-top:1px}\n  .smotivo{font-size:13px;margin-top:8px;line-height:1.45}\n  .smsg{font-size:12.5px;background:#f8fafc;border-left:3px solid #16c784;border-radius:0 8px 8px 0;padding:8px 10px;margin-top:8px;color:#334155}\n  .sfoot{display:flex;align-items:center;justify-content:space-between;margin-top:10px}\n  .slink{font-size:12px;color:#0ea5e9;text-decoration:none;font-weight:600}\n  .addbtn{background:#0f172a;color:#fff;border:0;border-radius:8px;padding:8px 13px;cursor:pointer;font-weight:700;font-size:12.5px}\n  .addbtn.done{background:#dcfce7;color:#15803d}\n  .scrim{position:fixed;inset:0;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}\n  .modal{background:#fff;border-radius:16px;width:min(720px,96vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.35)}\n  .mhead{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #eef2f7}\n  .mtitle{font-size:17px;font-weight:800}\n  .closebtn{background:transparent;border:0;font-size:18px;cursor:pointer;color:#64748b}\n  .mbody{padding:18px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}\n  .grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}\n  .fl{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#475569;font-weight:600}\n  .fl.full{grid-column:1/-1}\n  .fl input,.fl select,.fl textarea{border:1px solid #cbd5e1;border-radius:8px;padding:8px 9px;font:13px sans-serif;color:#0f172a}\n  .fl textarea{min-height:60px;resize:vertical}\n  .fuphint{font-size:12px;background:#fef3c7;color:#92400e;border-radius:8px;padding:8px 10px}\n  .mtgnow{background:#ede9fe;color:#6d28d9;border:0;border-radius:9px;padding:10px;cursor:pointer;font-weight:700;font-size:13px}\n  .mfoot{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-top:1px solid #eef2f7}\n  .mfr{display:flex;gap:8px}\n  .delbtn{background:#fff;border:1px solid #fecaca;color:#b91c1c;border-radius:9px;padding:9px 14px;cursor:pointer;font-weight:600;font-size:13px}\n  .savebtn{background:#16c784;color:#fff;border:0;border-radius:9px;padding:9px 20px;cursor:pointer;font-weight:700;font-size:14px}\n  .ghost{background:#f1f5f9;border:0;border-radius:9px;padding:9px 14px;color:#475569;font-size:13px;font-weight:600}\n  `,\n  render(d2) {\n    const ds = d2.data();\n    if (!ds) return `<div class=\"boot\">Conectando à base de dados…</div>`;\n    if (ds.loading) return `<div class=\"boot\">Carregando prospects…</div>`;\n    const rows = ds.records() || [];\n    const tab = d2.state.tab || 'funil';\n    return `<div class=\"app\">\n      ${header(d2, rows)}\n      ${tabsBar(d2)}\n      ${tab === 'funil' ? board(d2, rows) : prospec(d2)}\n      ${d2.state.modalOpen ? modal(d2) : ''}\n    </div>`;\n  },\n  mounted(d2) {\n    const openModal = (rec) => { d2.state.form = rec ? { ...rec } : {}; d2.state.saving = false; d2.state.modalOpen = true; };\n\n    d2.on('.tab', 'click', (e, el) => { d2.state.tab = el.dataset.tab; });\n    d2.on('.logoutbtn', 'click', async () => { try { await d2.auth('crmAuth').logout(); } catch (e) {} d2.router('MainRouter').goTo('/login'); });\n    d2.on('.newbtn', 'click', () => openModal(null));\n\n    d2.on('.card', 'click', (e, el) => {\n      const rec = (d2.data().records() || []).find(r => r._id === el.dataset.id);\n      if (rec) openModal(rec);\n    });\n    d2.on('.card', 'dragstart', (e, el) => { e.dataTransfer.setData('text/plain', el.dataset.id); });\n    d2.on('.col', 'dragover', (e, el) => { e.preventDefault(); el.setAttribute('data-over', ''); });\n    d2.on('.col', 'dragleave', (e, el) => el.removeAttribute('data-over'));\n    d2.on('.col', 'drop', async (e, el) => {\n      e.preventDefault(); el.removeAttribute('data-over');\n      const id = e.dataTransfer.getData('text/plain');\n      const lane = el.dataset.lane;\n      const rec = (d2.data().records() || []).find(r => r._id === id);\n      if (!rec || (rec.stage || 'prospeccao') === lane) return;\n      const upd = { ...rec, stage: lane };\n      const today = todayStr();\n      if (lane === 'reuniao' && !rec.dataReuniao) { upd.dataReuniao = today; upd.dataFup = addDays(today, 7); }\n      if (lane === 'fup' && rec.dataReuniao && !rec.dataFup) { upd.dataFup = addDays(rec.dataReuniao, 7); }\n      if (lane === 'ganho' && !rec.dataFechamento) { upd.dataFechamento = today; }\n      await d2.data().update(upd);\n    });\n\n    // Prospecção IA\n    d2.on('.icp', 'input', (e, el) => { d2.state.icp = el.value; });\n    d2.on('.query', 'input', (e, el) => { d2.state.query = el.value; });\n    d2.on('.searchbtn', 'click', async () => {\n      const icp = (d2.state.icp || '').trim();\n      if (!icp) { d2.state.searchError = 'Descreva o perfil de cliente ideal primeiro.'; return; }\n      d2.state.searchError = ''; d2.state.searching = true; d2.state.suggestions = []; d2.state.added = {};\n      try {\n        const resp = await fetch('https://people-gabi-carmo.data2apis.com/rush/prospect-search', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ icp, query: (d2.state.query || '').trim() }) });\n        if (!resp.ok) throw new Error('HTTP ' + resp.status);\n        const res = await resp.json();\n        const list = extractProspects(res);\n        d2.state.suggestions = list;\n        if (!list.length) d2.state.searchError = 'Nenhuma sugestão retornada. Tente refinar o ICP.';\n      } catch (err) {\n        d2.state.searchError = 'Erro ao buscar: ' + (err && err.message ? err.message : err);\n      } finally {\n        d2.state.searching = false;\n      }\n    });\n    d2.on('.addbtn', 'click', async (e, el) => {\n      const i = Number(el.dataset.idx);\n      const s = (d2.state.suggestions || [])[i];\n      if (!s) return;\n      await d2.data().create({\n        nome: s.nome, empresa: s.empresa, cargo: s.cargo, setor: s.setor,\n        linkedinUrl: s.linkedinUrl, motivoAbordagem: s.motivoAbordagem, mensagemRascunho: s.mensagemRascunho,\n        stage: 'prospeccao', statusResposta: 'sem_resposta', origem: 'IA', createdAt: todayStr()\n      });\n      d2.state.added = { ...(d2.state.added || {}), [i]: true };\n    });\n\n    // Modal form\n    d2.on('.f', 'input', (e, el) => { d2.state.form = { ...(d2.state.form || {}), [el.dataset.field]: el.value }; });\n    d2.on('.f', 'change', (e, el) => { d2.state.form = { ...(d2.state.form || {}), [el.dataset.field]: el.value }; });\n    d2.on('.mtgnow', 'click', () => {\n      const t = todayStr();\n      d2.state.form = { ...(d2.state.form || {}), stage: 'reuniao', dataReuniao: t, dataFup: addDays(t, 7) };\n    });\n    d2.on('.closebtn', 'click', () => { d2.state.modalOpen = false; });\n    d2.on('.scrim', 'click', (e, el) => { if (e.target === el) d2.state.modalOpen = false; });\n    d2.on('.savebtn', 'click', async () => {\n      const f = { ...(d2.state.form || {}) };\n      if (!f.nome || !String(f.nome).trim()) { await d2.dialog.alert('Informe ao menos o nome.'); return; }\n      if (f.valorDeal === '' || f.valorDeal == null) delete f.valorDeal; else f.valorDeal = Number(f.valorDeal) || 0;\n      if ((f.stage === 'reuniao' || f.stage === 'fup') && f.dataReuniao && !f.dataFup) f.dataFup = addDays(f.dataReuniao, 7);\n      d2.state.saving = true;\n      try {\n        if (f._id) {\n          const rec = (d2.data().records() || []).find(r => r._id === f._id) || {};\n          await d2.data().update({ ...rec, ...f });\n        } else {\n          f.stage = f.stage || 'prospeccao';\n          f.statusResposta = f.statusResposta || 'sem_resposta';\n          f.origem = f.origem || 'Manual';\n          f.createdAt = todayStr();\n          await d2.data().create(f);\n        }\n        d2.state.modalOpen = false; d2.state.form = {};\n      } catch (err) {\n        await d2.dialog.alert('Erro ao salvar: ' + (err && err.message ? err.message : err));\n      } finally {\n        d2.state.saving = false;\n      }\n    });\n    d2.on('.delbtn', 'click', async () => {\n      const f = d2.state.form || {};\n      if (!f._id) return;\n      const ok = await d2.dialog.confirm('Excluir este prospect?');\n      if (!ok) return;\n      await d2.data().remove(f._id);\n      d2.state.modalOpen = false; d2.state.form = {};\n    });\n  },\n};"}},"dataset":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"dataset"}}}}}}}}}},{"_id":"5ed9bed7b9e0891ce913e884","component":"data2-core-types@Component","params":{"package":"data2-core","component":"DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}},{"_id":"5f472ae463c680de4ff296e9","component":"data2-core-types@Component","params":{"package":"data2-core","component":"Data2TableDataSource","extends":"data2-core@DataSource","renderable":{"dimensions":{"disabled":false,"component":"data2-core-types@Dimensions","params":{"width":1366,"exactWidth":false,"exactHeight":false,"height":768}}}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a3ea780dbb7889ef4de91c1","component":"data2-core-primitives@Router","system":"69a704a047c6ef5f14b2dd47","displayName":"CRM Router","params":{"routerType":{"component":"data2-core-primitives@String","params":{"content":"browser"}},"routes":[{"component":"data2-core-primitives@Route","params":{"path":"","name":"CRM de Prospects","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"m2DxuebWBaf2YK8cDiKZ8"}},"policies":[{"component":"data2-core-types@PolicyReference","params":{"authenticationStrategy":{"reference":"crmAuth"}}}]}},{"component":"data2-core-primitives@Route","params":{"path":"/login","name":"Entrar","content":{"component":"data2-core-types@ArtboardReference","params":{"reference":"ZxVuW25CFl0HRNZScF7UU"}}}}],"login":{"component":"data2-core-types@ArtboardReference","params":{"reference":"ZxVuW25CFl0HRNZScF7UU"}}},"reference":"MainRouter"},{"_id":"6a3ea76b9936088eede46a6d","component":"data2-core-primitives@Artboard","system":"69a704a047c6ef5f14b2dd47","displayName":"Login CRM","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Login CRM"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"ZxVuW25CFl0HRNZScF7UU"},{"_id":"6a3ea76aa989393a6a12e4c9","component":"data2-core-primitives@Artboard","system":"69a704a047c6ef5f14b2dd47","displayName":"Painel CRM","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Painel CRM"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"m2DxuebWBaf2YK8cDiKZ8"},{"_id":"9ad34e5d5b2204ea41c6cfa7","parent":"6a3ea76b9936088eede46a6d","component":"people-gabi-carmo@loginScreen","system":"69a704a047c6ef5f14b2dd47","displayName":"Login Screen","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"cBTpwwFe0XbHmLNZAugiu"},{"_id":"349c7dc902905da89a98912e","parent":"6a3ea76aa989393a6a12e4c9","component":"people-gabi-carmo@crmApp","system":"69a704a047c6ef5f14b2dd47","displayName":"CRM App","params":{"dataset":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"prospectsDataSet"}},"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"top":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"6l2rvRT7NzBfjHKH5dC6r"}]}},{"_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":"6a3ea78600bec6568fcd4967","displayName":"CRM Prospects Data2","reference":"jaLH3HhkfYiXS1WYD1y2g","params":{"name":{"component":"data2-core-primitives@String","params":{"content":"data2 CRM"}},"shortName":{"component":"data2-core-primitives@String","params":{"content":"CRM"}},"domain":{"component":"data2-core-primitives@String","params":{"content":"crm"}},"serverSideRendering":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Router","reference":"MainRouter"}},"responseHeaders":{"X-Frame-Options":{"component":"data2-core-primitives@String","params":{"content":""}},"Content-Security-Policy":{"component":"data2-core-primitives@String","params":{"content":""}},"X-XSS-Protection":{"component":"data2-core-primitives@String","params":{"content":""}}}},"system":"69a704a047c6ef5f14b2dd47","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a3ea602913fdfe1432d744e","component":"data2-core@DataSet","system":"69a704a047c6ef5f14b2dd47","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"prospects"}}},"reference":"prospectsDataSet"},{"_id":"6a3ea602e44ca0e8495cbc61","component":"data2-core@Data2TableDataSource","system":"69a704a047c6ef5f14b2dd47","params":{"table":"prospects","schema":[{"component":"data2-core-types@Field","params":{"key":"nome","title":"Nome","component":"data2-core-primitives@String","required":true}},{"component":"data2-core-types@Field","params":{"key":"empresa","title":"Empresa","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"cargo","title":"Cargo","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"setor","title":"Setor","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"linkedinUrl","title":"LinkedIn","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"email","title":"E-mail","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"origem","title":"Origem","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"motivoAbordagem","title":"Motivo da abordagem","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"mensagemRascunho","title":"Rascunho mensagem","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"stage","title":"Etapa","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"statusResposta","title":"Status resposta","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"dataMensagem","title":"Data mensagem","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"dataReuniao","title":"Data reunião","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"acordadoPosReuniao","title":"Acordado pós-reunião","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"dataFup","title":"Data follow-up","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"dataDemo","title":"Data demo","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"dataFechamento","title":"Data fechamento","component":"data2-core-primitives@Date"}},{"component":"data2-core-types@Field","params":{"key":"valorDeal","title":"Valor do deal","component":"data2-core-primitives@Number"}},{"component":"data2-core-types@Field","params":{"key":"notas","title":"Notas","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"ownerId","title":"Owner","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"createdAt","title":"Criado em","component":"data2-core-primitives@Date"}}]},"reference":"prospects"}]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}