From aa1c67de29fcd6fb0dcbc6b7302c652d33026734 Mon Sep 17 00:00:00 2001 From: Xuwznln <18435084+Xuwznln@users.noreply.github.com> Date: Thu, 12 Jun 2025 21:01:04 +0800 Subject: [PATCH] =?UTF-8?q?Device=20Visualization=20&=20Mock=20Devices=20(?= =?UTF-8?q?#44)=20[37-biomek-i5i7=20(#40),=20Device=20visualization=20(#39?= =?UTF-8?q?),=20Add=20Mock=20Device=20for=20Organic=20Synthesis\=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=9C=89=E6=9C=BA=E5=90=88=E6=88=90=E7=9A=84=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E4=BB=AA=E5=99=A8=E5=92=8CProtocol=20(#43)]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * 37-biomek-i5i7 (#40) * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * Refine biomek * Refine copy issue * Refine --------- Co-authored-by: Junhan Chang Co-authored-by: Guangxin Zhang Co-authored-by: qxw138 * Device visualization (#39) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit 498c997ad764263366f6d6207e0722fbc7a909a8. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit 3a60d2ae8125a7b24506bb681e3baaf69f2ebf6b. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commit fa727220afa8546b84f1763730818d6360c26251, reversing changes made to 498c997ad764263366f6d6207e0722fbc7a909a8. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 56d45b94f55d1339d54d9725ffe3c8cca7cbb73a. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 07d9db20c3b43bc8af048b9e2c4af210ec16d446. * 添加缺少物料:"plate_well_G12", * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit 5d9953c3e58d9f33818f21232c3fdcc30a4f766c. * Reapply "change to debug level" This reverts commit 2487bb6ffc6590b2da13a3dd5226825e0a164993. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link --------- Co-authored-by: Harvey Que Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: Junhan Chang Co-authored-by: Guangxin Zhang Co-authored-by: qxw138 * Device visualization (#41) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit 498c997ad764263366f6d6207e0722fbc7a909a8. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit 3a60d2ae8125a7b24506bb681e3baaf69f2ebf6b. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commit fa727220afa8546b84f1763730818d6360c26251, reversing changes made to 498c997ad764263366f6d6207e0722fbc7a909a8. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * add biomek.py demo implementation * 更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。 * Test * fix biomek success type * Convert LH action to biomek. * Update biomek.py * 注册表上报handle和schema (param input) * 修复biomek缺少的字段 * delete 's' * Remove warnings * Update biomek.py * Biomek test * Update biomek.py * 新增transfer_biomek的msg * New transfer_biomek * Updated transfer_biomek * 更新transfer_biomek的msg * 更新transfer_biomek的msg * 支持Biomek创建 * new action * fix key name typo * New parameter for biomek to run. * Refine * Update * new actions * new actions * 1 * registry * fix biomek startup add action handles * fix handles not as default entry * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * biomek_test.py biomek_test.py是最新的版本,运行它会生成complete_biomek_protocol.json * Update biomek.py * biomek_test.py * fix liquid_handler.biomek handles * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 56d45b94f55d1339d54d9725ffe3c8cca7cbb73a. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 07d9db20c3b43bc8af048b9e2c4af210ec16d446. * 添加缺少物料:"plate_well_G12", * host node新增resource add时间统计 create_resource新增handle bump version to 0.9.2 * 修正物料上传时间 改用biomek_test 增加ResultInfoEncoder 支持返回结果上传 * 正确发送return_info结果 * 同步执行状态信息 * 取消raiseValueError提示 * Update biomek_test.py * 0608 DONE * 同步了Biomek.py 现在应可用 * biomek switch back to non-test * temp disable initialize resource * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit 5d9953c3e58d9f33818f21232c3fdcc30a4f766c. * Reapply "change to debug level" This reverts commit 2487bb6ffc6590b2da13a3dd5226825e0a164993. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name --------- Co-authored-by: Harvey Que Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Junhan Chang Co-authored-by: Guangxin Zhang Co-authored-by: qxw138 * fix move it * fix move it * create_resource * bump ver modify slot type * 增加modbus支持 调整protocol node以更好支持多种类型的read和write * 调整protocol node以更好支持多种类型的read和write * 补充日志 * Device visualization (#42) * Update README and MQTTClient for installation instructions and code improvements * feat: 支持local_config启动 add: 增加对crt path的说明,为传入config.py的相对路径 move: web component * add: registry description * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * feat: node_info_update srv fix: OTDeck cant create * close #12 feat: slave node registry * feat: show machine name fix: host node registry not uploaded * feat: add hplc registry * feat: add hplc registry * fix: hplc status typo * fix: devices/ * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * fix: device.class possible null * fix: HPLC additions with online service * fix: slave mode spin not working * fix: slave mode spin not working * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * feat: 多ProtocolNode 允许子设备ID相同 feat: 上报发现的ActionClient feat: Host重启动,通过discover机制要求slaveNode重新注册,实现信息及时上报 * feat: 支持env设置config * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * Device visualization (#14) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: missing hostname in devices_names fix: upload_file for model file * fix: missing paho-mqtt package bump version to 0.9.0 * fix startup add ResourceCreateFromOuter.action * fix type hint * update actions * update actions * host node add_resource_from_outer fix cmake list * pass device config to device class * add: bind_parent_ids to resource create action fix: message convert string * fix: host node should not be re_discovered * feat: resource tracker support dict * feat: add more necessary params * feat: fix boolean null in registry action data * feat: add outer resource * 编写mesh添加action * feat: append resource * add action * feat: vis 2d for plr * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate * Device visualization (#22) * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * add 3d visualization * 完成在main中启动设备可视化 完成在main中启动设备可视化,并输出物料ID:mesh的对应关系resource_model 添加物料模型管理类,遍历物料与resource_model,完成TF数据收集 * 完成TF发布 * 修改模型方向,在yaml中添加变换属性 * 添加物料tf变化时,发送topic到前端 另外修改了物料初始化的方法,防止在tf还未发布时提前建立物料模型与发布话题 * 添加关节发布节点与物料可视化节点进入unilab * 使用json启动plr与3D模型仿真 * 完成启动OT并联动rviz * 修复rviz位置问题, 修复rviz位置问题, 在无tf变动时减缓发送频率 在backend中添加物料跟随方法 * fix: running logic * fix: running logic * fix: missing ot * 在main中直接初始化republisher和物料的mesh节点 * 将joint_republisher和resource_mesh_manager添加进 main_slave_run.py中 * 编写mesh添加action * add action * fix * fix: browser on rviz * fix: cloud bridge error fallback to local * fix: salve auto run rviz * 初始化两个plate --------- Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: wznln <18435084+Xuwznln@users.noreply.github.com> * fix: multi channel * fix: aspirate * fix: aspirate * fix: aspirate * fix: aspirate * 提交 * fix: jobadd * fix: jobadd * fix: msg converter * tijiao * add resource creat easy action * identify debug msg * mq client id * 提取lh的joint发布 * unify liquid_handler definition * 修改物料跟随与物料添加逻辑 修改物料跟随与物料添加逻辑 将joint_publisher类移出lh的backends,但仍需要对lh的backends进行一些改写 * Revert "修改物料跟随与物料添加逻辑" This reverts commit 498c997ad764263366f6d6207e0722fbc7a909a8. * Reapply "修改物料跟随与物料添加逻辑" This reverts commit 3a60d2ae8125a7b24506bb681e3baaf69f2ebf6b. * Revert "Merge remote-tracking branch 'upstream/dev' into device_visualization" This reverts commit fa727220afa8546b84f1763730818d6360c26251, reversing changes made to 498c997ad764263366f6d6207e0722fbc7a909a8. * 修改物料放下时的方法,如果选择 修改物料放下时的方法, 如果选择drop_trash,则删除物料显示 如果选择drop,则让其解除连接 * unilab添加moveit启动 1,整合所有moveit节点到一个move_group中,并整合所有的controller依次激活 2,添加pymoveit2的节点,使用json可直接启动 3,修改机械臂规划方式,添加约束,让冗余关节不会进行过多移动 * 修改物体attach时,多次赋值当前时间导致卡顿问题, * Revert "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 56d45b94f55d1339d54d9725ffe3c8cca7cbb73a. * Reapply "修改物体attach时,多次赋值当前时间导致卡顿问题," This reverts commit 07d9db20c3b43bc8af048b9e2c4af210ec16d446. * 添加缺少物料:"plate_well_G12", * add * fix tip resource data * liquid states * change to debug level * Revert "change to debug level" This reverts commit 5d9953c3e58d9f33818f21232c3fdcc30a4f766c. * Reapply "change to debug level" This reverts commit 2487bb6ffc6590b2da13a3dd5226825e0a164993. * fix tip resource data * add full device * add moveit yaml * 修复moveit 增加post_init阶段,给予ros_node反向 * remove necessary node * fix moveit action client * remove necessary imports * Update moveit_interface.py * fix handler_key uppercase * json add liquids * fix setup * add * change to "sources" and "targets" for lh * bump version * remove parent's parent link * change arm's name * change name * fix ik error --------- Co-authored-by: Harvey Que Co-authored-by: zhangshixiang <@zhangshixiang> Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Junhan Chang * Add Mock Device for Organic Synthesis\添加有机合成的虚拟仪器和Protocol (#43) * Add Device MockChiller Add device MockChiller * Add Device MockFilter * Add Device MockPump * Add Device MockRotavap * Add Device MockSeparator * Add Device MockStirrer * Add Device MockHeater * Add Device MockVacuum * Add Device MockSolenoidValve * Add Device Mock \_init_.py * 规范模拟设备代码与注册表信息 * 更改Mock大写文件夹名 * 删除大写目录 * Edited Mock device json * Match mock device with action * Edit mock device yaml * Add new action * Add Virtual Device, Action, YAML, Protocol for Organic Syn * 单独分类测试的protocol文件夹 * 更名Action --------- Co-authored-by: Xuwznln <18435084+Xuwznln@users.noreply.github.com> --------- Co-authored-by: Junhan Chang Co-authored-by: Guangxin Zhang Co-authored-by: qxw138 Co-authored-by: q434343 <73513873+q434343@users.noreply.github.com> Co-authored-by: Harvey Que Co-authored-by: Kongchang Feng <2100011801@stu.pku.edu.cn> --- .gitignore | 3 +- README.md | 2 +- README_zh.md | 2 +- recipes/ros-humble-unilabos-msgs/recipe.yaml | 2 +- recipes/unilabos/recipe.yaml | 2 +- setup.cfg | 2 - setup.py | 2 +- test/experiments/biomek.json | 22 + test/experiments/mock_devices/mock_all.json | 296 + .../mock_devices/mock_chiller.json | 30 + .../experiments/mock_devices/mock_filter.json | 36 + .../experiments/mock_devices/mock_heater.json | 33 + test/experiments/mock_devices/mock_pump.json | 44 + .../mock_devices/mock_rotavap.json | 33 + .../mock_devices/mock_separator.json | 43 + .../mock_devices/mock_solenoid_valve.json | 25 + .../mock_devices/mock_stirrer.json | 33 + .../mock_devices/mock_stirrer_new.json | 33 + .../experiments/mock_devices/mock_vacuum.json | 31 + .../mock_protocol/addteststation.json | 250 + .../mock_protocol/centrifugeteststation.json | 271 + .../mock_protocol/cleanvesselteststation.json | 362 + .../mock_protocol/dissolveteststation.json | 343 + .../mock_protocol/evaporateteststation.json | 0 .../mock_protocol/filterteststation.json | 270 + .../filterthroughteststation.json | 388 + .../mock_protocol/heatchillteststation.json | 262 + .../mock_protocol/runcolumnteststation.json | 412 + .../mock_protocol/stirteststation.json | 250 + .../mock_protocol/transferteststation.json | 249 + .../mock_protocol/washsolidteststation.json | 494 + test/experiments/plr_test_converted.json | 4562 ++++---- test/experiments/plr_test_converted_slim.json | 1710 +++ test/experiments/test_moveit.json | 35 + unilabos/app/main.py | 14 +- unilabos/app/mq.py | 9 +- unilabos/app/web/client.py | 10 +- unilabos/compile/__init__.py | 27 +- unilabos/compile/add_protocol.py | 74 + unilabos/compile/centrifuge_protocol.py | 123 + unilabos/compile/clean_vessel_protocol.py | 126 + unilabos/compile/dissolve_protocol.py | 162 + .../compile/evacuateandrefill_protocol.py | 10 +- unilabos/compile/filter_protocol.py | 70 + unilabos/compile/filter_through_protocol.py | 150 + unilabos/compile/heatchill_protocol.py | 117 + unilabos/compile/pump_protocol.py | 305 +- unilabos/compile/run_column_protocol.py | 102 + unilabos/compile/stir_protocol.py | 137 + unilabos/compile/transfer_protocol.py | 79 + unilabos/compile/wash_solid_protocol.py | 216 + .../arm_slider/config/initial_positions.yaml | 9 + .../arm_slider/config/joint_limits.yaml | 40 + .../devices/arm_slider/config/kinematics.yaml | 4 + .../config/macro.ros2_control.xacro | 56 + .../arm_slider/config/macro.srdf.xacro | 46 + .../devices/arm_slider/config/move_group.json | 14 + .../arm_slider/config/moveit_controllers.yaml | 29 + .../arm_slider/config/moveit_planners.yaml | 2 + .../config/pilz_cartesian_limits.yaml | 6 + .../arm_slider/config/ros2_controllers.yaml | 39 + .../devices/arm_slider/joint_limit.yaml | 44 + .../devices/arm_slider/macro_device.xacro | 293 + .../devices/arm_slider/meshes/arm_base.STL | Bin 0 -> 269384 bytes .../devices/arm_slider/meshes/arm_link_1.STL | Bin 0 -> 6184 bytes .../devices/arm_slider/meshes/arm_link_2.STL | Bin 0 -> 12584 bytes .../devices/arm_slider/meshes/arm_link_3.STL | Bin 0 -> 10884 bytes .../arm_slider/meshes/arm_slideway.STL | Bin 0 -> 666884 bytes .../arm_slider/meshes/gripper_base.STL | Bin 0 -> 278384 bytes .../arm_slider/meshes/gripper_left.STL | Bin 0 -> 99884 bytes .../arm_slider/meshes/gripper_right.STL | Bin 0 -> 99284 bytes .../benyao_arm/config/initial_positions.yaml | 9 + .../benyao_arm/config/joint_limits.yaml | 40 + .../devices/benyao_arm/config/kinematics.yaml | 4 + .../config/macro.ros2_control.xacro | 56 + .../benyao_arm/config/macro.srdf.xacro | 46 + .../devices/benyao_arm/config/move_group.json | 14 + .../benyao_arm/config/moveit_controllers.yaml | 29 + .../benyao_arm/config/moveit_planners.yaml | 2 + .../config/pilz_cartesian_limits.yaml | 6 + .../benyao_arm/config/ros2_controllers.yaml | 39 + .../devices/benyao_arm/joint_limit.yaml | 44 + .../devices/benyao_arm/macro_device.xacro | 293 + .../devices/benyao_arm/meshes/arm_base.STL | Bin 0 -> 269384 bytes .../devices/benyao_arm/meshes/arm_link_1.STL | Bin 0 -> 6184 bytes .../devices/benyao_arm/meshes/arm_link_2.STL | Bin 0 -> 12584 bytes .../devices/benyao_arm/meshes/arm_link_3.STL | Bin 0 -> 10884 bytes .../benyao_arm/meshes/arm_slideway.STL | Bin 0 -> 666884 bytes .../benyao_arm/meshes/gripper_base.STL | Bin 0 -> 278384 bytes .../benyao_arm/meshes/gripper_left.STL | Bin 0 -> 99884 bytes .../benyao_arm/meshes/gripper_right.STL | Bin 0 -> 99284 bytes .../macro_device.xacro | 5 +- .../devices/slide_w140/macro_device.xacro | 4 +- .../thermo_orbitor_rs2_hotel/hotel.png | Bin 0 -> 59962 bytes .../macro_device.xacro | 59 + .../thermo_orbitor_rs2_hotel/meshes/hotel.glb | Bin 0 -> 63564 bytes .../thermo_orbitor_rs2_hotel/meshes/hotel.stl | Bin 0 -> 495584 bytes .../thermo_orbitor_rs2_hotel/meta.json | 10 + .../toyo_xyz/config/full_dev.urdf.xacro | 10 + .../toyo_xyz/config/initial_positions.yaml | 6 + .../devices/toyo_xyz/config/joint_limits.yaml | 25 + .../devices/toyo_xyz/config/kinematics.yaml | 4 + .../toyo_xyz/config/macro.ros2_control.xacro | 35 + .../devices/toyo_xyz/config/macro.srdf.xacro | 109 + .../devices/toyo_xyz/config/move_group.json | 12 + .../toyo_xyz/config/moveit_controllers.yaml | 16 + .../config/pilz_cartesian_limits.yaml | 6 + .../toyo_xyz/config/ros2_controllers.yaml | 34 + .../devices/toyo_xyz/joint_config.json | 14 + .../devices/toyo_xyz/macro_device.xacro | 465 + .../devices/toyo_xyz/meshes/base2_link.STL | Bin 0 -> 345384 bytes .../devices/toyo_xyz/meshes/base2_link.fbx | Bin 0 -> 1092880 bytes .../devices/toyo_xyz/meshes/base3_link.STL | Bin 0 -> 218884 bytes .../devices/toyo_xyz/meshes/base3_link.fbx | Bin 0 -> 698208 bytes .../devices/toyo_xyz/meshes/base_link.STL | Bin 0 -> 286884 bytes .../devices/toyo_xyz/meshes/base_link.fbx | Bin 0 -> 910368 bytes .../devices/toyo_xyz/meshes/chain_link.STL | Bin 0 -> 17584 bytes .../devices/toyo_xyz/meshes/chain_link.fbx | Bin 0 -> 70144 bytes .../devices/toyo_xyz/meshes/end2_link.STL | Bin 0 -> 141684 bytes .../devices/toyo_xyz/meshes/end2_link.fbx | Bin 0 -> 457344 bytes .../devices/toyo_xyz/meshes/end3_link.STL | Bin 0 -> 121684 bytes .../devices/toyo_xyz/meshes/end3_link.fbx | Bin 0 -> 394944 bytes .../devices/toyo_xyz/meshes/end_link.STL | Bin 0 -> 111884 bytes .../devices/toyo_xyz/meshes/end_link.fbx | Bin 0 -> 364368 bytes .../devices/toyo_xyz/meshes/fixed_link.STL | Bin 0 -> 84884 bytes .../devices/toyo_xyz/meshes/fixed_link.fbx | Bin 0 -> 280128 bytes .../devices/toyo_xyz/meshes/length1_link.STL | Bin 0 -> 22884 bytes .../devices/toyo_xyz/meshes/length1_link.fbx | Bin 0 -> 86688 bytes .../devices/toyo_xyz/meshes/length2_link.STL | Bin 0 -> 21684 bytes .../devices/toyo_xyz/meshes/length2_link.fbx | Bin 0 -> 82944 bytes .../devices/toyo_xyz/meshes/length3_link.STL | Bin 0 -> 22084 bytes .../devices/toyo_xyz/meshes/length3_link.fbx | Bin 0 -> 84192 bytes .../devices/toyo_xyz/meshes/slider1_link.STL | Bin 0 -> 78384 bytes .../devices/toyo_xyz/meshes/slider1_link.fbx | Bin 0 -> 259840 bytes .../devices/toyo_xyz/meshes/slider2_link.STL | Bin 0 -> 70284 bytes .../devices/toyo_xyz/meshes/slider2_link.fbx | Bin 0 -> 234576 bytes .../devices/toyo_xyz/meshes/slider3_link.STL | Bin 0 -> 107784 bytes .../devices/toyo_xyz/meshes/slider3_link.fbx | Bin 0 -> 351568 bytes .../devices/toyo_xyz/param_config.json | 20 + unilabos/device_mesh/resource_visalization.py | 266 +- unilabos/device_mesh/ros2_controllers.yaml | 31 + unilabos/device_mesh/view_robot.rviz | 332 +- unilabos/devices/liquid_handling/biomek.py | 1098 ++ unilabos/devices/liquid_handling/biomek.txt | 642 ++ .../biomek_temporary_protocol.json | 2697 +++++ .../devices/liquid_handling/biomek_test.py | 1006 ++ .../complete_biomek_protocol.json | 3760 +++++++ .../complete_biomek_protocol_0608.json | 4201 ++++++++ ...i-lucif-assay4_plr_background_tested.ipynb | 9417 ++++++++++++++++- .../liquid_handler_abstract.py | 99 +- .../test liquid handler/convert_biomek.py | 154 + .../test liquid handler/sci-lucif-assay4.json | 4033 +++++++ unilabos/devices/mock/__init__.py | 0 unilabos/devices/mock/mock_chiller.py | 177 + unilabos/devices/mock/mock_filter.py | 235 + unilabos/devices/mock/mock_heater.py | 247 + unilabos/devices/mock/mock_pump.py | 360 + unilabos/devices/mock/mock_rotavap.py | 390 + unilabos/devices/mock/mock_separator.py | 399 + unilabos/devices/mock/mock_solenoid_valve.py | 89 + unilabos/devices/mock/mock_stirrer.py | 307 + unilabos/devices/mock/mock_stirrer_new.py | 229 + unilabos/devices/mock/mock_vacuum.py | 410 + .../pump_and_valve/solenoid_valve_mock.py | 8 +- .../pump_and_valve/vacuum_pump_mock.py | 10 +- .../devices/resource_container/__init__.py | 0 .../devices/resource_container/container.py | 9 + unilabos/devices/ros_dev/lh_joint_config.json | 38 + .../ros_dev/liquid_handler_joint_publisher.py | 346 +- unilabos/devices/ros_dev/moveit2.py | 2442 +++++ unilabos/devices/ros_dev/moveit_interface.py | 384 + unilabos/devices/virtual/__init__.py | 0 .../devices/virtual/virtual_centrifuge.py | 158 + unilabos/devices/virtual/virtual_column.py | 132 + unilabos/devices/virtual/virtual_filter.py | 151 + unilabos/devices/virtual/virtual_heatchill.py | 107 + unilabos/devices/virtual/virtual_pump.py | 197 + unilabos/devices/virtual/virtual_stirrer.py | 104 + .../devices/virtual/virtual_transferpump.py | 149 + unilabos/devices/virtual/virtual_valve.py | 105 + unilabos/messages/__init__.py | 110 +- .../registry/device_comms/modbus_ioboard.yaml | 2 +- unilabos/registry/devices/hotel.yaml | 9 + unilabos/registry/devices/liquid_handler.yaml | 207 +- unilabos/registry/devices/mock_devices.yaml | 892 ++ unilabos/registry/devices/moveit_config.yaml | 56 + unilabos/registry/devices/pump_and_valve.yaml | 41 +- unilabos/registry/devices/temperature.yaml | 2 +- .../registry/devices/vacuum_and_purge.yaml | 67 + unilabos/registry/devices/virtual_device.yaml | 388 + unilabos/registry/devices/work_station.yaml | 2 +- unilabos/registry/registry.py | 27 +- unilabos/resources/graphio.py | 23 +- unilabos/ros/main_slave_run.py | 13 +- unilabos/ros/msgs/message_converter.py | 4 +- unilabos/ros/nodes/base_device_node.py | 186 +- unilabos/ros/nodes/presets/host_node.py | 28 +- unilabos/ros/nodes/presets/protocol_node.py | 25 +- .../nodes/presets/resource_mesh_manager.py | 128 +- unilabos/ros/nodes/resource_tracker.py | 21 +- unilabos/ros/utils/driver_creator.py | 50 +- unilabos/utils/async_util.py | 7 +- unilabos/utils/type_check.py | 45 +- unilabos_msgs/CMakeLists.txt | 24 + unilabos_msgs/action/AGVTransfer.action | 1 + unilabos_msgs/action/Clean.action | 1 + unilabos_msgs/action/EmptyIn.action | 2 +- unilabos_msgs/action/EvacuateAndRefill.action | 1 + unilabos_msgs/action/Evaporate.action | 1 + unilabos_msgs/action/FloatSingleInput.action | 1 + unilabos_msgs/action/HeatChill.action | 1 + unilabos_msgs/action/HeatChillStart.action | 1 + unilabos_msgs/action/HeatChillStop.action | 1 + unilabos_msgs/action/IntSingleInput.action | 1 + unilabos_msgs/action/LiquidHandlerAdd.action | 1 + .../action/LiquidHandlerAspirate.action | 1 + .../action/LiquidHandlerDiscardTips.action | 1 + .../action/LiquidHandlerDispense.action | 1 + .../action/LiquidHandlerDropTips.action | 1 + .../action/LiquidHandlerDropTips96.action | 1 + .../action/LiquidHandlerIncubateBiomek.action | 6 + unilabos_msgs/action/LiquidHandlerMix.action | 1 + .../action/LiquidHandlerMoveBiomek.action | 7 + .../action/LiquidHandlerMoveLid.action | 1 + .../action/LiquidHandlerMovePlate.action | 1 + .../action/LiquidHandlerMoveResource.action | 1 + .../action/LiquidHandlerMoveTo.action | 1 + .../LiquidHandlerOscillateBiomek.action | 7 + .../action/LiquidHandlerPickUpTips.action | 1 + .../action/LiquidHandlerPickUpTips96.action | 1 + .../LiquidHandlerProtocolCreation.action | 10 + .../action/LiquidHandlerRemove.action | 1 + .../action/LiquidHandlerReturnTips.action | 1 + .../action/LiquidHandlerReturnTips96.action | 1 + .../action/LiquidHandlerStamp.action | 1 + .../action/LiquidHandlerTransfer.action | 1 + .../action/LiquidHandlerTransferBiomek.action | 11 + .../action/Point3DSeparateInput.action | 1 + unilabos_msgs/action/ProtocolAdd.action | 20 + .../action/ProtocolCentrifuge.action | 16 + .../action/ProtocolCleanVessel.action | 12 + .../action/ProtocolCrystallize.action | 14 + unilabos_msgs/action/ProtocolDissolve.action | 14 + unilabos_msgs/action/ProtocolDry.action | 17 + unilabos_msgs/action/ProtocolFilter.action | 19 + .../action/ProtocolFilterThrough.action | 14 + unilabos_msgs/action/ProtocolPurge.action | 17 + unilabos_msgs/action/ProtocolRunColumn.action | 10 + .../action/ProtocolStartPurge.action | 16 + unilabos_msgs/action/ProtocolStartStir.action | 14 + unilabos_msgs/action/ProtocolStopPurge.action | 11 + unilabos_msgs/action/ProtocolStopStir.action | 11 + unilabos_msgs/action/ProtocolTransfer.action | 20 + unilabos_msgs/action/ProtocolWait.action | 9 + unilabos_msgs/action/ProtocolWashSolid.action | 16 + unilabos_msgs/action/PumpTransfer.action | 1 + .../action/ResourceCreateFromOuter.action | 1 + .../action/ResourceCreateFromOuterEasy.action | 3 +- unilabos_msgs/action/SendCmd.action | 1 + unilabos_msgs/action/Separate.action | 1 + .../action/SolidDispenseAddPowderTube.action | 1 + unilabos_msgs/action/Stir.action | 1 + unilabos_msgs/action/StrSingleInput.action | 1 + unilabos_msgs/action/WorkStationRun.action | 1 + 264 files changed, 48914 insertions(+), 2955 deletions(-) create mode 100644 test/experiments/biomek.json create mode 100644 test/experiments/mock_devices/mock_all.json create mode 100644 test/experiments/mock_devices/mock_chiller.json create mode 100644 test/experiments/mock_devices/mock_filter.json create mode 100644 test/experiments/mock_devices/mock_heater.json create mode 100644 test/experiments/mock_devices/mock_pump.json create mode 100644 test/experiments/mock_devices/mock_rotavap.json create mode 100644 test/experiments/mock_devices/mock_separator.json create mode 100644 test/experiments/mock_devices/mock_solenoid_valve.json create mode 100644 test/experiments/mock_devices/mock_stirrer.json create mode 100644 test/experiments/mock_devices/mock_stirrer_new.json create mode 100644 test/experiments/mock_devices/mock_vacuum.json create mode 100644 test/experiments/mock_protocol/addteststation.json create mode 100644 test/experiments/mock_protocol/centrifugeteststation.json create mode 100644 test/experiments/mock_protocol/cleanvesselteststation.json create mode 100644 test/experiments/mock_protocol/dissolveteststation.json create mode 100644 test/experiments/mock_protocol/evaporateteststation.json create mode 100644 test/experiments/mock_protocol/filterteststation.json create mode 100644 test/experiments/mock_protocol/filterthroughteststation.json create mode 100644 test/experiments/mock_protocol/heatchillteststation.json create mode 100644 test/experiments/mock_protocol/runcolumnteststation.json create mode 100644 test/experiments/mock_protocol/stirteststation.json create mode 100644 test/experiments/mock_protocol/transferteststation.json create mode 100644 test/experiments/mock_protocol/washsolidteststation.json create mode 100644 test/experiments/plr_test_converted_slim.json create mode 100644 test/experiments/test_moveit.json create mode 100644 unilabos/compile/add_protocol.py create mode 100644 unilabos/compile/centrifuge_protocol.py create mode 100644 unilabos/compile/clean_vessel_protocol.py create mode 100644 unilabos/compile/dissolve_protocol.py create mode 100644 unilabos/compile/filter_protocol.py create mode 100644 unilabos/compile/filter_through_protocol.py create mode 100644 unilabos/compile/heatchill_protocol.py create mode 100644 unilabos/compile/run_column_protocol.py create mode 100644 unilabos/compile/stir_protocol.py create mode 100644 unilabos/compile/transfer_protocol.py create mode 100644 unilabos/compile/wash_solid_protocol.py create mode 100644 unilabos/device_mesh/devices/arm_slider/config/initial_positions.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/joint_limits.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/kinematics.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/macro.ros2_control.xacro create mode 100644 unilabos/device_mesh/devices/arm_slider/config/macro.srdf.xacro create mode 100644 unilabos/device_mesh/devices/arm_slider/config/move_group.json create mode 100644 unilabos/device_mesh/devices/arm_slider/config/moveit_controllers.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/moveit_planners.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/pilz_cartesian_limits.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/config/ros2_controllers.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/joint_limit.yaml create mode 100644 unilabos/device_mesh/devices/arm_slider/macro_device.xacro create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/arm_base.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/arm_link_1.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/arm_link_2.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/arm_link_3.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/arm_slideway.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/gripper_base.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/gripper_left.STL create mode 100644 unilabos/device_mesh/devices/arm_slider/meshes/gripper_right.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/initial_positions.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/joint_limits.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/kinematics.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/macro.ros2_control.xacro create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/macro.srdf.xacro create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/move_group.json create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/moveit_controllers.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/moveit_planners.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/pilz_cartesian_limits.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/config/ros2_controllers.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/joint_limit.yaml create mode 100644 unilabos/device_mesh/devices/benyao_arm/macro_device.xacro create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/arm_base.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_1.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_2.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_3.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/arm_slideway.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/gripper_base.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/gripper_left.STL create mode 100644 unilabos/device_mesh/devices/benyao_arm/meshes/gripper_right.STL create mode 100644 unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/hotel.png create mode 100644 unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/macro_device.xacro create mode 100644 unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.glb create mode 100644 unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.stl create mode 100644 unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meta.json create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/full_dev.urdf.xacro create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/initial_positions.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/joint_limits.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/kinematics.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/macro.ros2_control.xacro create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/macro.srdf.xacro create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/move_group.json create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/moveit_controllers.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/pilz_cartesian_limits.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/config/ros2_controllers.yaml create mode 100644 unilabos/device_mesh/devices/toyo_xyz/joint_config.json create mode 100644 unilabos/device_mesh/devices/toyo_xyz/macro_device.xacro create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/base3_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/base3_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/base_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/base_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/chain_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/chain_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/end3_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/end3_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/length2_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/length2_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/slider1_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/slider1_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/slider2_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/slider2_link.fbx create mode 100755 unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.STL create mode 100644 unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.fbx create mode 100644 unilabos/device_mesh/devices/toyo_xyz/param_config.json create mode 100644 unilabos/device_mesh/ros2_controllers.yaml create mode 100644 unilabos/devices/liquid_handling/biomek.py create mode 100644 unilabos/devices/liquid_handling/biomek.txt create mode 100644 unilabos/devices/liquid_handling/biomek_temporary_protocol.json create mode 100644 unilabos/devices/liquid_handling/biomek_test.py create mode 100644 unilabos/devices/liquid_handling/complete_biomek_protocol.json create mode 100644 unilabos/devices/liquid_handling/complete_biomek_protocol_0608.json create mode 100644 unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py create mode 100644 unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json create mode 100644 unilabos/devices/mock/__init__.py create mode 100644 unilabos/devices/mock/mock_chiller.py create mode 100644 unilabos/devices/mock/mock_filter.py create mode 100644 unilabos/devices/mock/mock_heater.py create mode 100644 unilabos/devices/mock/mock_pump.py create mode 100644 unilabos/devices/mock/mock_rotavap.py create mode 100644 unilabos/devices/mock/mock_separator.py create mode 100644 unilabos/devices/mock/mock_solenoid_valve.py create mode 100644 unilabos/devices/mock/mock_stirrer.py create mode 100644 unilabos/devices/mock/mock_stirrer_new.py create mode 100644 unilabos/devices/mock/mock_vacuum.py create mode 100644 unilabos/devices/resource_container/__init__.py create mode 100644 unilabos/devices/resource_container/container.py create mode 100644 unilabos/devices/ros_dev/lh_joint_config.json create mode 100644 unilabos/devices/ros_dev/moveit2.py create mode 100644 unilabos/devices/ros_dev/moveit_interface.py create mode 100644 unilabos/devices/virtual/__init__.py create mode 100644 unilabos/devices/virtual/virtual_centrifuge.py create mode 100644 unilabos/devices/virtual/virtual_column.py create mode 100644 unilabos/devices/virtual/virtual_filter.py create mode 100644 unilabos/devices/virtual/virtual_heatchill.py create mode 100644 unilabos/devices/virtual/virtual_pump.py create mode 100644 unilabos/devices/virtual/virtual_stirrer.py create mode 100644 unilabos/devices/virtual/virtual_transferpump.py create mode 100644 unilabos/devices/virtual/virtual_valve.py create mode 100644 unilabos/registry/devices/hotel.yaml create mode 100644 unilabos/registry/devices/mock_devices.yaml create mode 100644 unilabos/registry/devices/moveit_config.yaml create mode 100644 unilabos/registry/devices/virtual_device.yaml create mode 100644 unilabos_msgs/action/LiquidHandlerIncubateBiomek.action create mode 100644 unilabos_msgs/action/LiquidHandlerMoveBiomek.action create mode 100644 unilabos_msgs/action/LiquidHandlerOscillateBiomek.action create mode 100644 unilabos_msgs/action/LiquidHandlerProtocolCreation.action create mode 100644 unilabos_msgs/action/LiquidHandlerTransferBiomek.action create mode 100644 unilabos_msgs/action/ProtocolAdd.action create mode 100644 unilabos_msgs/action/ProtocolCentrifuge.action create mode 100644 unilabos_msgs/action/ProtocolCleanVessel.action create mode 100644 unilabos_msgs/action/ProtocolCrystallize.action create mode 100644 unilabos_msgs/action/ProtocolDissolve.action create mode 100644 unilabos_msgs/action/ProtocolDry.action create mode 100644 unilabos_msgs/action/ProtocolFilter.action create mode 100644 unilabos_msgs/action/ProtocolFilterThrough.action create mode 100644 unilabos_msgs/action/ProtocolPurge.action create mode 100644 unilabos_msgs/action/ProtocolRunColumn.action create mode 100644 unilabos_msgs/action/ProtocolStartPurge.action create mode 100644 unilabos_msgs/action/ProtocolStartStir.action create mode 100644 unilabos_msgs/action/ProtocolStopPurge.action create mode 100644 unilabos_msgs/action/ProtocolStopStir.action create mode 100644 unilabos_msgs/action/ProtocolTransfer.action create mode 100644 unilabos_msgs/action/ProtocolWait.action create mode 100644 unilabos_msgs/action/ProtocolWashSolid.action diff --git a/.gitignore b/.gitignore index e2c20639..f915811b 100644 --- a/.gitignore +++ b/.gitignore @@ -232,4 +232,5 @@ CATKIN_IGNORE /**/local_config.py -*.graphml \ No newline at end of file +*.graphml +unilabos/device_mesh/view_robot.rviz diff --git a/README.md b/README.md index 9d63eb84..34352760 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n environment_name # Currently, you need to install the `unilabos_msgs` package # You can download the system-specific package from the Release page -conda install ros-humble-unilabos-msgs-0.9.1-xxxxx.tar.bz2 +conda install ros-humble-unilabos-msgs-0.9.4-xxxxx.tar.bz2 # Install PyLabRobot and other prerequisites git clone https://github.com/PyLabRobot/pylabrobot plr_repo diff --git a/README_zh.md b/README_zh.md index 28671ebd..4f3607d7 100644 --- a/README_zh.md +++ b/README_zh.md @@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n 环境名 # 现阶段,需要安装 `unilabos_msgs` 包 # 可以前往 Release 页面下载系统对应的包进行安装 -conda install ros-humble-unilabos-msgs-0.9.1-xxxxx.tar.bz2 +conda install ros-humble-unilabos-msgs-0.9.4-xxxxx.tar.bz2 # 安装PyLabRobot等前置 git clone https://github.com/PyLabRobot/pylabrobot plr_repo diff --git a/recipes/ros-humble-unilabos-msgs/recipe.yaml b/recipes/ros-humble-unilabos-msgs/recipe.yaml index 2ee7f1f8..febca425 100644 --- a/recipes/ros-humble-unilabos-msgs/recipe.yaml +++ b/recipes/ros-humble-unilabos-msgs/recipe.yaml @@ -1,6 +1,6 @@ package: name: ros-humble-unilabos-msgs - version: 0.9.1 + version: 0.9.4 source: path: ../../unilabos_msgs folder: ros-humble-unilabos-msgs/src/work diff --git a/recipes/unilabos/recipe.yaml b/recipes/unilabos/recipe.yaml index 5b036306..51ddea1f 100644 --- a/recipes/unilabos/recipe.yaml +++ b/recipes/unilabos/recipe.yaml @@ -1,6 +1,6 @@ package: name: unilabos - version: "0.9.1" + version: "0.9.4" source: path: ../.. diff --git a/setup.cfg b/setup.cfg index e152926a..5197889b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,2 @@ -[develop] -script_dir=$base/lib/unilabos [install] install_scripts=$base/lib/unilabos diff --git a/setup.py b/setup.py index 847098a5..038d820d 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ package_name = 'unilabos' setup( name=package_name, - version='0.9.1', + version='0.9.4', packages=find_packages(), include_package_data=True, install_requires=['setuptools'], diff --git a/test/experiments/biomek.json b/test/experiments/biomek.json new file mode 100644 index 00000000..604adccc --- /dev/null +++ b/test/experiments/biomek.json @@ -0,0 +1,22 @@ +{ + "nodes": [ + { + "id": "BIOMEK", + "name": "BIOMEK", + "parent": null, + "type": "device", + "class": "liquid_handler.biomek", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + }, + "data": {}, + "children": [ + ] + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_all.json b/test/experiments/mock_devices/mock_all.json new file mode 100644 index 00000000..f263b471 --- /dev/null +++ b/test/experiments/mock_devices/mock_all.json @@ -0,0 +1,296 @@ +{ + "nodes": [ + { + "id": "MockChiller1", + "name": "模拟冷却器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_chiller", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "current_temperature": 25.0, + "target_temperature": 25.0, + "status": "Idle", + "is_cooling": false, + "is_heating": false, + "vessel": "", + "purpose": "" + } + }, + { + "id": "MockFilter1", + "name": "模拟过滤器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_filter", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "is_filtering": false, + "flow_rate": 0.0, + "filter_life": 100.0, + "vessel": "", + "filtrate_vessel": "", + "filtered_volume": 0.0, + "target_volume": 0.0, + "progress": 0.0, + "stir": false, + "stir_speed": 0.0, + "temperature": 25.0, + "continue_heatchill": false + } + }, + { + "id": "MockHeater1", + "name": "模拟加热器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_heater", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "current_temperature": 25.0, + "target_temperature": 25.0, + "status": "Idle", + "is_heating": false, + "heating_power": 0.0, + "max_temperature": 300.0, + "vessel": "Unknown", + "purpose": "Unknown", + "stir": false, + "stir_speed": 0.0 + } + }, + { + "id": "MockPump1", + "name": "模拟泵设备", + "children": [], + "parent": null, + "type": "device", + "class": "mock_pump", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "current_device": "MockPump1", + "pump_state": "Stopped", + "flow_rate": 0.0, + "target_flow_rate": 0.0, + "pressure": 0.0, + "total_volume": 0.0, + "max_flow_rate": 100.0, + "max_pressure": 10.0, + "from_vessel": "", + "to_vessel": "", + "transfer_volume": 0.0, + "amount": "", + "transfer_time": 0.0, + "is_viscous": false, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "is_solid": false, + "time_spent": 0.0, + "time_remaining": 0.0 + } + }, + { + "id": "MockRotavap1", + "name": "模拟旋转蒸发器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_rotavap", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "rotate_state": "Stopped", + "rotate_time": 0.0, + "rotate_speed": 0.0, + "pump_state": "Stopped", + "pump_time": 0.0, + "vacuum_level": 1013.25, + "temperature": 25.0, + "target_temperature": 25.0, + "success": "True" + } + }, + { + "id": "MockSeparator1", + "name": "模拟分离器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_separator", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "settling_time": 0.0, + "valve_state": "Closed", + "shake_time": 0.0, + "shake_status": "Not Shaking", + "current_device": "MockSeparator1", + "purpose": "", + "product_phase": "", + "from_vessel": "", + "separation_vessel": "", + "to_vessel": "", + "waste_phase_to_vessel": "", + "solvent": "", + "solvent_volume": 0.0, + "through": "", + "repeats": 1, + "stir_time": 0.0, + "stir_speed": 0.0, + "time_spent": 0.0, + "time_remaining": 0.0 + } + }, + { + "id": "MockSolenoidValve1", + "name": "模拟电磁阀", + "children": [], + "parent": null, + "type": "device", + "class": "mock_solenoid_valve", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "valve_status": "Closed" + } + }, + { + "id": "MockStirrer1NEW", + "name": "模拟搅拌器(new)", + "children": [], + "parent": null, + "type": "device", + "class": "mock_stirrer_new", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "vessel": "", + "purpose": "", + "stir_speed": 0.0, + "target_stir_speed": 0.0, + "stir_state": "Stopped", + "stir_time": 0.0, + "settling_time": 0.0, + "progress": 0.0, + "max_stir_speed": 2000.0 + } + }, + { + "id": "MockStirrer1", + "name": "模拟搅拌器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_stirrer", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "stir_speed": 0.0, + "target_stir_speed": 0.0, + "stir_state": "Stopped", + "temperature": 25.0, + "target_temperature": 25.0, + "heating_state": "Off", + "heating_power": 0.0, + "max_stir_speed": 2000.0, + "max_temperature": 300.0 + } + }, + { + "id": "MockVacuum1", + "name": "模拟真空泵", + "children": [], + "parent": null, + "type": "device", + "class": "mock_vacuum", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "power_state": "Off", + "pump_state": "Stopped", + "vacuum_level": 1013.25, + "target_vacuum": 50.0, + "pump_speed": 0.0, + "pump_efficiency": 95.0, + "max_pump_speed": 100.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_chiller.json b/test/experiments/mock_devices/mock_chiller.json new file mode 100644 index 00000000..fc0e2f4c --- /dev/null +++ b/test/experiments/mock_devices/mock_chiller.json @@ -0,0 +1,30 @@ +{ + "nodes": [ + { + "id": "MockChiller1", + "name": "模拟冷却器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_chiller", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "current_temperature": 25.0, + "target_temperature": 25.0, + "status": "Idle", + "is_cooling": false, + "is_heating": false, + "vessel": "", + "purpose": "" + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_filter.json b/test/experiments/mock_devices/mock_filter.json new file mode 100644 index 00000000..d8d80299 --- /dev/null +++ b/test/experiments/mock_devices/mock_filter.json @@ -0,0 +1,36 @@ +{ + "nodes": [ + { + "id": "MockFilter1", + "name": "模拟过滤器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_filter", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "is_filtering": false, + "flow_rate": 0.0, + "filter_life": 100.0, + "vessel": "", + "filtrate_vessel": "", + "filtered_volume": 0.0, + "target_volume": 0.0, + "progress": 0.0, + "stir": false, + "stir_speed": 0.0, + "temperature": 25.0, + "continue_heatchill": false + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_heater.json b/test/experiments/mock_devices/mock_heater.json new file mode 100644 index 00000000..1aca9688 --- /dev/null +++ b/test/experiments/mock_devices/mock_heater.json @@ -0,0 +1,33 @@ +{ + "nodes": [ + { + "id": "MockHeater1", + "name": "模拟加热器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_heater", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "current_temperature": 25.0, + "target_temperature": 25.0, + "status": "Idle", + "is_heating": false, + "heating_power": 0.0, + "max_temperature": 300.0, + "vessel": "Unknown", + "purpose": "Unknown", + "stir": false, + "stir_speed": 0.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_pump.json b/test/experiments/mock_devices/mock_pump.json new file mode 100644 index 00000000..d1c13945 --- /dev/null +++ b/test/experiments/mock_devices/mock_pump.json @@ -0,0 +1,44 @@ +{ + "nodes": [ + { + "id": "MockPump1", + "name": "模拟泵设备", + "children": [], + "parent": null, + "type": "device", + "class": "mock_pump", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "current_device": "MockPump1", + "pump_state": "Stopped", + "flow_rate": 0.0, + "target_flow_rate": 0.0, + "pressure": 0.0, + "total_volume": 0.0, + "max_flow_rate": 100.0, + "max_pressure": 10.0, + "from_vessel": "", + "to_vessel": "", + "transfer_volume": 0.0, + "amount": "", + "transfer_time": 0.0, + "is_viscous": false, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "is_solid": false, + "time_spent": 0.0, + "time_remaining": 0.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_rotavap.json b/test/experiments/mock_devices/mock_rotavap.json new file mode 100644 index 00000000..b28cfe2a --- /dev/null +++ b/test/experiments/mock_devices/mock_rotavap.json @@ -0,0 +1,33 @@ +{ + "nodes": [ + { + "id": "MockRotavap1", + "name": "模拟旋转蒸发器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_rotavap", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "rotate_state": "Stopped", + "rotate_time": 0.0, + "rotate_speed": 0.0, + "pump_state": "Stopped", + "pump_time": 0.0, + "vacuum_level": 1013.25, + "temperature": 25.0, + "target_temperature": 25.0, + "success": "True" + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_separator.json b/test/experiments/mock_devices/mock_separator.json new file mode 100644 index 00000000..20f26718 --- /dev/null +++ b/test/experiments/mock_devices/mock_separator.json @@ -0,0 +1,43 @@ +{ + "nodes": [ + { + "id": "MockSeparator1", + "name": "模拟分离器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_separator", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "settling_time": 0.0, + "valve_state": "Closed", + "shake_time": 0.0, + "shake_status": "Not Shaking", + "current_device": "MockSeparator1", + "purpose": "", + "product_phase": "", + "from_vessel": "", + "separation_vessel": "", + "to_vessel": "", + "waste_phase_to_vessel": "", + "solvent": "", + "solvent_volume": 0.0, + "through": "", + "repeats": 1, + "stir_time": 0.0, + "stir_speed": 0.0, + "time_spent": 0.0, + "time_remaining": 0.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_solenoid_valve.json b/test/experiments/mock_devices/mock_solenoid_valve.json new file mode 100644 index 00000000..e4e23cc1 --- /dev/null +++ b/test/experiments/mock_devices/mock_solenoid_valve.json @@ -0,0 +1,25 @@ +{ + "nodes": [ + { + "id": "MockSolenoidValve1", + "name": "模拟电磁阀", + "children": [], + "parent": null, + "type": "device", + "class": "mock_solenoid_valve", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "valve_status": "Closed" + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_stirrer.json b/test/experiments/mock_devices/mock_stirrer.json new file mode 100644 index 00000000..9dfc59c7 --- /dev/null +++ b/test/experiments/mock_devices/mock_stirrer.json @@ -0,0 +1,33 @@ +{ + "nodes": [ + { + "id": "MockStirrer1", + "name": "模拟搅拌器", + "children": [], + "parent": null, + "type": "device", + "class": "mock_stirrer", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "stir_speed": 0.0, + "target_stir_speed": 0.0, + "stir_state": "Stopped", + "temperature": 25.0, + "target_temperature": 25.0, + "heating_state": "Off", + "heating_power": 0.0, + "max_stir_speed": 2000.0, + "max_temperature": 300.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_stirrer_new.json b/test/experiments/mock_devices/mock_stirrer_new.json new file mode 100644 index 00000000..837b2fec --- /dev/null +++ b/test/experiments/mock_devices/mock_stirrer_new.json @@ -0,0 +1,33 @@ +{ + "nodes": [ + { + "id": "MockStirrer1COPY", + "name": "模拟搅拌器(Copy)", + "children": [], + "parent": null, + "type": "device", + "class": "mock_stirrer_new", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "vessel": "", + "purpose": "", + "stir_speed": 0.0, + "target_stir_speed": 0.0, + "stir_state": "Stopped", + "stir_time": 0.0, + "settling_time": 0.0, + "progress": 0.0, + "max_stir_speed": 2000.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_devices/mock_vacuum.json b/test/experiments/mock_devices/mock_vacuum.json new file mode 100644 index 00000000..31406aea --- /dev/null +++ b/test/experiments/mock_devices/mock_vacuum.json @@ -0,0 +1,31 @@ +{ + "nodes": [ + { + "id": "MockVacuum1", + "name": "模拟真空泵", + "children": [], + "parent": null, + "type": "device", + "class": "mock_vacuum", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "port": "MOCK" + }, + "data": { + "status": "Idle", + "power_state": "Off", + "pump_state": "Stopped", + "vacuum_level": 1013.25, + "target_vacuum": 50.0, + "pump_speed": 0.0, + "pump_efficiency": 95.0, + "max_pump_speed": 100.0 + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/addteststation.json b/test/experiments/mock_protocol/addteststation.json new file mode 100644 index 00000000..dd16a1fe --- /dev/null +++ b/test/experiments/mock_protocol/addteststation.json @@ -0,0 +1,250 @@ +{ + "nodes": [ + { + "id": "AddTestStation", + "name": "添加试剂测试工作站", + "children": [ + "pump_add", + "flask_1", + "flask_2", + "flask_3", + "flask_4", + "reactor", + "stirrer", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["AddProtocol", "PumpTransferProtocol", "CleanProtocol"] + }, + "data": {} + }, + { + "id": "pump_add", + "name": "pump_add", + "children": [], + "parent": "AddTestStation", + "type": "device", + "class": "virtual_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 25.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "stirrer", + "name": "stirrer", + "children": [], + "parent": "AddTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 698.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_1", + "name": "通用试剂瓶1", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_2", + "name": "通用试剂瓶2", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_3", + "name": "通用试剂瓶3", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_4", + "name": "通用试剂瓶4", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "reactor", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "flask_air", + "children": [], + "parent": "AddTestStation", + "type": "container", + "class": null, + "position": { + "x": 800, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "stirrer", + "target": "reactor", + "type": "physical", + "port": { + "stirrer": "top", + "reactor": "bottom" + } + }, + { + "source": "pump_add", + "target": "flask_1", + "type": "physical", + "port": { + "pump_add": "outlet", + "flask_1": "top" + } + }, + { + "source": "pump_add", + "target": "flask_2", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_2": "top" + } + }, + { + "source": "pump_add", + "target": "flask_3", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_3": "top" + } + }, + { + "source": "pump_add", + "target": "flask_4", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_4": "top" + } + }, + { + "source": "pump_add", + "target": "reactor", + "type": "physical", + "port": { + "pump_add": "outlet", + "reactor": "top" + } + }, + { + "source": "pump_add", + "target": "flask_air", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_air": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/centrifugeteststation.json b/test/experiments/mock_protocol/centrifugeteststation.json new file mode 100644 index 00000000..e6918349 --- /dev/null +++ b/test/experiments/mock_protocol/centrifugeteststation.json @@ -0,0 +1,271 @@ +{ + "nodes": [ + { + "id": "CentrifugeTestStation", + "name": "离心机测试工作站", + "children": [ + "pump_add", + "flask_1", + "flask_2", + "flask_3", + "reactor", + "stirrer", + "centrifuge_1", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["AddProtocol", "PumpTransferProtocol", "CleanProtocol", "CentrifugeProtocol"] + }, + "data": {} + }, + { + "id": "pump_add", + "name": "pump_add", + "children": [], + "parent": "CentrifugeTestStation", + "type": "device", + "class": "virtual_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 25.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "stirrer", + "name": "stirrer", + "children": [], + "parent": "CentrifugeTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "centrifuge_1", + "name": "离心机", + "children": [], + "parent": "CentrifugeTestStation", + "type": "device", + "class": "virtual_centrifuge", + "position": { + "x": 800, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_speed": 15000.0, + "max_temp": 40.0, + "min_temp": 4.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_1", + "name": "样品瓶1", + "children": [], + "parent": "CentrifugeTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1500.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_2", + "name": "样品瓶2", + "children": [], + "parent": "CentrifugeTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1500.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_3", + "name": "缓冲液瓶", + "children": [], + "parent": "CentrifugeTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "CentrifugeTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "空气瓶", + "children": [], + "parent": "CentrifugeTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "stirrer", + "target": "reactor", + "type": "physical", + "port": { + "stirrer": "top", + "reactor": "bottom" + } + }, + { + "source": "pump_add", + "target": "flask_1", + "type": "physical", + "port": { + "pump_add": "outlet", + "flask_1": "top" + } + }, + { + "source": "pump_add", + "target": "flask_2", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_2": "top" + } + }, + { + "source": "pump_add", + "target": "flask_3", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_3": "top" + } + }, + { + "source": "pump_add", + "target": "reactor", + "type": "physical", + "port": { + "pump_add": "outlet", + "reactor": "top" + } + }, + { + "source": "pump_add", + "target": "flask_air", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_air": "top" + } + }, + { + "source": "centrifuge_1", + "target": "reactor", + "type": "logical", + "port": { + "centrifuge_1": "chamber", + "reactor": "vessel" + } + }, + { + "source": "centrifuge_1", + "target": "flask_1", + "type": "logical", + "port": { + "centrifuge_1": "chamber", + "flask_1": "vessel" + } + }, + { + "source": "centrifuge_1", + "target": "flask_2", + "type": "logical", + "port": { + "centrifuge_1": "chamber", + "flask_2": "vessel" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/cleanvesselteststation.json b/test/experiments/mock_protocol/cleanvesselteststation.json new file mode 100644 index 00000000..c5d30868 --- /dev/null +++ b/test/experiments/mock_protocol/cleanvesselteststation.json @@ -0,0 +1,362 @@ +{ + "nodes": [ + { + "id": "CleanVesselTestStation", + "name": "容器清洗测试工作站", + "children": [ + "transfer_pump_cleaner", + "heatchill_1", + "flask_water", + "flask_ethanol", + "flask_acetone", + "flask_waste", + "reactor", + "flask_buffer", + "flask_sample", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["CleanVesselProtocol", "TransferProtocol", "AddProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump_cleaner", + "name": "清洗转移泵", + "children": [], + "parent": "CleanVesselTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 10.0 + }, + "data": { + "status": "Idle", + "current_volume": 0.0, + "max_volume": 50.0, + "transfer_rate": 10.0, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + } + }, + { + "id": "heatchill_1", + "name": "加热冷却器", + "children": [], + "parent": "CleanVesselTestStation", + "type": "device", + "class": "virtual_heatchill", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 150.0, + "min_temp": -20.0 + }, + "data": { + "status": "Idle", + "current_temp": 25.0, + "target_temp": 25.0, + "vessel": "", + "purpose": "", + "progress": 0.0, + "current_status": "Ready" + } + }, + { + "id": "flask_water", + "name": "水溶剂瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "water", + "volume": 1500.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_ethanol", + "name": "乙醇溶剂瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "ethanol", + "volume": 1500.0, + "concentration": 99.5 + } + ] + } + }, + { + "id": "flask_acetone", + "name": "丙酮溶剂瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "acetone", + "volume": 1800.0, + "concentration": 99.9 + } + ] + } + }, + { + "id": "flask_waste", + "name": "废液瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "residue", + "volume": 50.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_buffer", + "name": "缓冲液瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "buffer", + "volume": 1000.0, + "concentration": 10.0 + } + ] + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 1000, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "空气瓶", + "children": [], + "parent": "CleanVesselTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "transfer_pump_cleaner", + "target": "flask_water", + "type": "physical", + "port": { + "transfer_pump_cleaner": "1", + "flask_water": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_ethanol", + "type": "physical", + "port": { + "transfer_pump_cleaner": "2", + "flask_ethanol": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_acetone", + "type": "physical", + "port": { + "transfer_pump_cleaner": "3", + "flask_acetone": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_waste", + "type": "physical", + "port": { + "transfer_pump_cleaner": "4", + "flask_waste": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump_cleaner": "5", + "reactor": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_buffer", + "type": "physical", + "port": { + "transfer_pump_cleaner": "6", + "flask_buffer": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_sample", + "type": "physical", + "port": { + "transfer_pump_cleaner": "7", + "flask_sample": "top" + } + }, + { + "source": "transfer_pump_cleaner", + "target": "flask_air", + "type": "physical", + "port": { + "transfer_pump_cleaner": "8", + "flask_air": "top" + } + }, + { + "source": "heatchill_1", + "target": "reactor", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "reactor": "bottom" + } + }, + { + "source": "heatchill_1", + "target": "flask_sample", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "flask_sample": "bottom" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/dissolveteststation.json b/test/experiments/mock_protocol/dissolveteststation.json new file mode 100644 index 00000000..8b7ad28f --- /dev/null +++ b/test/experiments/mock_protocol/dissolveteststation.json @@ -0,0 +1,343 @@ +{ + "nodes": [ + { + "id": "DissolveTestStation", + "name": "溶解测试工作站", + "children": [ + "transfer_pump_1", + "heatchill_1", + "stirrer_1", + "flask_water", + "flask_ethanol", + "flask_dmso", + "reactor", + "flask_sample", + "flask_buffer" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["DissolveProtocol", "TransferProtocol", "HeatChillProtocol", "StirProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump_1", + "name": "转移泵", + "children": [], + "parent": "DissolveTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 10.0 + }, + "data": { + "status": "Idle", + "current_volume": 0.0, + "max_volume": 50.0, + "transfer_rate": 10.0, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + } + }, + { + "id": "heatchill_1", + "name": "加热冷却器", + "children": [], + "parent": "DissolveTestStation", + "type": "device", + "class": "virtual_heatchill", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 150.0, + "min_temp": -20.0 + }, + "data": { + "status": "Idle", + "current_temp": 25.0, + "target_temp": 25.0, + "vessel": "", + "purpose": "", + "progress": 0.0, + "current_status": "Ready" + } + }, + { + "id": "stirrer_1", + "name": "搅拌器", + "children": [], + "parent": "DissolveTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 750.1111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_water", + "name": "水溶剂瓶", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "water", + "volume": 1500.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_ethanol", + "name": "乙醇溶剂瓶", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "ethanol", + "volume": 1500.0, + "concentration": 99.5 + } + ] + } + }, + { + "id": "flask_dmso", + "name": "DMSO溶剂瓶", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "dmso", + "volume": 800.0, + "concentration": 99.9 + } + ] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "solid_sample", + "volume": 10.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 1000, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer", + "name": "缓冲液瓶", + "children": [], + "parent": "DissolveTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "buffer", + "volume": 1000.0, + "concentration": 10.0 + } + ] + } + } + ], + "links": [ + { + "source": "transfer_pump_1", + "target": "flask_water", + "type": "physical", + "port": { + "transfer_pump_1": "1", + "flask_water": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_ethanol", + "type": "physical", + "port": { + "transfer_pump_1": "2", + "flask_ethanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_dmso", + "type": "physical", + "port": { + "transfer_pump_1": "3", + "flask_dmso": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump_1": "4", + "reactor": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_sample", + "type": "physical", + "port": { + "transfer_pump_1": "5", + "flask_sample": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_buffer", + "type": "physical", + "port": { + "transfer_pump_1": "6", + "flask_buffer": "top" + } + }, + { + "source": "heatchill_1", + "target": "reactor", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "reactor": "bottom" + } + }, + { + "source": "heatchill_1", + "target": "flask_sample", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "flask_sample": "bottom" + } + }, + { + "source": "stirrer_1", + "target": "reactor", + "type": "physical", + "port": { + "stirrer_1": "stir_rod", + "reactor": "center" + } + }, + { + "source": "stirrer_1", + "target": "flask_sample", + "type": "physical", + "port": { + "stirrer_1": "stir_rod", + "flask_sample": "center" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/evaporateteststation.json b/test/experiments/mock_protocol/evaporateteststation.json new file mode 100644 index 00000000..e69de29b diff --git a/test/experiments/mock_protocol/filterteststation.json b/test/experiments/mock_protocol/filterteststation.json new file mode 100644 index 00000000..a816def8 --- /dev/null +++ b/test/experiments/mock_protocol/filterteststation.json @@ -0,0 +1,270 @@ +{ + "nodes": [ + { + "id": "FilterTestStation", + "name": "过滤器测试工作站", + "children": [ + "pump_add", + "flask_sample", + "flask_filtrate", + "flask_buffer", + "reactor", + "stirrer", + "filter_1", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["AddProtocol", "PumpTransferProtocol", "CleanProtocol", "FilterProtocol"] + }, + "data": {} + }, + { + "id": "pump_add", + "name": "pump_add", + "children": [], + "parent": "FilterTestStation", + "type": "device", + "class": "virtual_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 25.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "stirrer", + "name": "stirrer", + "children": [], + "parent": "FilterTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "filter_1", + "name": "过滤器", + "children": [], + "parent": "FilterTestStation", + "type": "device", + "class": "virtual_filter", + "position": { + "x": 800, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_stir_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "FilterTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_filtrate", + "name": "滤液瓶", + "children": [], + "parent": "FilterTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer", + "name": "缓冲液瓶", + "children": [], + "parent": "FilterTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "FilterTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "空气瓶", + "children": [], + "parent": "FilterTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "stirrer", + "target": "reactor", + "type": "physical", + "port": { + "stirrer": "top", + "reactor": "bottom" + } + }, + { + "source": "pump_add", + "target": "flask_sample", + "type": "physical", + "port": { + "pump_add": "outlet", + "flask_sample": "top" + } + }, + { + "source": "pump_add", + "target": "flask_filtrate", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_filtrate": "top" + } + }, + { + "source": "pump_add", + "target": "flask_buffer", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_buffer": "top" + } + }, + { + "source": "pump_add", + "target": "reactor", + "type": "physical", + "port": { + "pump_add": "outlet", + "reactor": "top" + } + }, + { + "source": "pump_add", + "target": "flask_air", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_air": "top" + } + }, + { + "source": "filter_1", + "target": "reactor", + "type": "logical", + "port": { + "filter_1": "input", + "reactor": "vessel" + } + }, + { + "source": "filter_1", + "target": "flask_sample", + "type": "logical", + "port": { + "filter_1": "input", + "flask_sample": "vessel" + } + }, + { + "source": "filter_1", + "target": "flask_filtrate", + "type": "logical", + "port": { + "filter_1": "output", + "flask_filtrate": "vessel" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/filterthroughteststation.json b/test/experiments/mock_protocol/filterthroughteststation.json new file mode 100644 index 00000000..b250df5d --- /dev/null +++ b/test/experiments/mock_protocol/filterthroughteststation.json @@ -0,0 +1,388 @@ +{ + "nodes": [ + { + "id": "FilterThroughTestStation", + "name": "过滤通过测试工作站", + "children": [ + "transfer_pump_1", + "filter_1", + "flask_ethanol", + "flask_water", + "flask_methanol", + "reactor", + "collection_flask", + "waste_flask", + "flask_sample", + "flask_celite", + "flask_silica" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["FilterThroughProtocol", "TransferProtocol", "FilterProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump_1", + "name": "转移泵", + "children": [], + "parent": "FilterThroughTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 10.0 + }, + "data": { + "status": "Idle", + "current_volume": 0.0, + "max_volume": 50.0, + "transfer_rate": 10.0, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + } + }, + { + "id": "filter_1", + "name": "过滤器", + "children": [], + "parent": "FilterThroughTestStation", + "type": "device", + "class": "virtual_filter", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_stir_speed": 1000.0 + }, + "data": { + "status": "Idle", + "filter_state": "Ready", + "current_temp": 25.0, + "target_temp": 25.0, + "max_temp": 100.0, + "stir_speed": 0.0, + "max_stir_speed": 1000.0, + "filtered_volume": 0.0, + "progress": 0.0, + "message": "" + } + }, + { + "id": "flask_ethanol", + "name": "乙醇溶剂瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "ethanol", + "volume": 1500.0, + "concentration": 99.5 + } + ] + } + }, + { + "id": "flask_water", + "name": "水溶剂瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "water", + "volume": 1800.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_methanol", + "name": "甲醇溶剂瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "methanol", + "volume": 800.0, + "concentration": 99.9 + } + ] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "crude_product", + "volume": 200.0, + "concentration": 80.0 + } + ] + } + }, + { + "id": "collection_flask", + "name": "收集瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "waste_flask", + "name": "废液瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 1000, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [ + { + "name": "sample_mixture", + "volume": 100.0, + "concentration": 50.0 + } + ] + } + }, + { + "id": "flask_celite", + "name": "硅藻土容器", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 150, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [ + { + "name": "celite", + "volume": 50.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_silica", + "name": "硅胶容器", + "children": [], + "parent": "FilterThroughTestStation", + "type": "container", + "class": null, + "position": { + "x": 300, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [ + { + "name": "silica", + "volume": 30.0, + "concentration": 100.0 + } + ] + } + } + ], + "links": [ + { + "source": "transfer_pump_1", + "target": "flask_ethanol", + "type": "physical", + "port": { + "transfer_pump_1": "1", + "flask_ethanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_water", + "type": "physical", + "port": { + "transfer_pump_1": "2", + "flask_water": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_methanol", + "type": "physical", + "port": { + "transfer_pump_1": "3", + "flask_methanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump_1": "4", + "reactor": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "collection_flask", + "type": "physical", + "port": { + "transfer_pump_1": "5", + "collection_flask": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "waste_flask", + "type": "physical", + "port": { + "transfer_pump_1": "6", + "waste_flask": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_sample", + "type": "physical", + "port": { + "transfer_pump_1": "7", + "flask_sample": "top" + } + }, + { + "source": "filter_1", + "target": "collection_flask", + "type": "physical", + "port": { + "filter_1": "filter_element", + "collection_flask": "top" + } + }, + { + "source": "filter_1", + "target": "reactor", + "type": "physical", + "port": { + "filter_1": "filter_element", + "reactor": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/heatchillteststation.json b/test/experiments/mock_protocol/heatchillteststation.json new file mode 100644 index 00000000..9d243b84 --- /dev/null +++ b/test/experiments/mock_protocol/heatchillteststation.json @@ -0,0 +1,262 @@ +{ + "nodes": [ + { + "id": "HeatChillTestStation", + "name": "加热冷却测试工作站", + "children": [ + "pump_add", + "flask_sample", + "flask_buffer1", + "flask_buffer2", + "reactor", + "stirrer", + "heatchill_1", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["AddProtocol", "PumpTransferProtocol", "CleanProtocol", "HeatChillProtocol", "HeatChillStartProtocol", "HeatChillStopProtocol"] + }, + "data": {} + }, + { + "id": "pump_add", + "name": "pump_add", + "children": [], + "parent": "HeatChillTestStation", + "type": "device", + "class": "virtual_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 25.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "stirrer", + "name": "stirrer", + "children": [], + "parent": "HeatChillTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "heatchill_1", + "name": "加热冷却器", + "children": [], + "parent": "HeatChillTestStation", + "type": "device", + "class": "virtual_heatchill", + "position": { + "x": 800, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 200.0, + "min_temp": -80.0, + "max_stir_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "HeatChillTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer1", + "name": "缓冲液瓶1", + "children": [], + "parent": "HeatChillTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer2", + "name": "缓冲液瓶2", + "children": [], + "parent": "HeatChillTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "HeatChillTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "空气瓶", + "children": [], + "parent": "HeatChillTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "stirrer", + "target": "reactor", + "type": "physical", + "port": { + "stirrer": "top", + "reactor": "bottom" + } + }, + { + "source": "pump_add", + "target": "flask_sample", + "type": "physical", + "port": { + "pump_add": "outlet", + "flask_sample": "top" + } + }, + { + "source": "pump_add", + "target": "flask_buffer1", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_buffer1": "top" + } + }, + { + "source": "pump_add", + "target": "flask_buffer2", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_buffer2": "top" + } + }, + { + "source": "pump_add", + "target": "reactor", + "type": "physical", + "port": { + "pump_add": "outlet", + "reactor": "top" + } + }, + { + "source": "pump_add", + "target": "flask_air", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_air": "top" + } + }, + { + "source": "heatchill_1", + "target": "reactor", + "type": "logical", + "port": { + "heatchill_1": "heating_element", + "reactor": "vessel" + } + }, + { + "source": "heatchill_1", + "target": "flask_sample", + "type": "logical", + "port": { + "heatchill_1": "heating_element", + "flask_sample": "vessel" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/runcolumnteststation.json b/test/experiments/mock_protocol/runcolumnteststation.json new file mode 100644 index 00000000..51741f1c --- /dev/null +++ b/test/experiments/mock_protocol/runcolumnteststation.json @@ -0,0 +1,412 @@ +{ + "nodes": [ + { + "id": "RunColumnTestStation", + "name": "柱层析测试工作站", + "children": [ + "transfer_pump_1", + "column_1", + "flask_sample", + "flask_hexane", + "flask_ethyl_acetate", + "flask_methanol", + "collection_flask_1", + "collection_flask_2", + "collection_flask_3", + "waste_flask", + "reactor" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["RunColumnProtocol", "TransferProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump_1", + "name": "转移泵", + "children": [], + "parent": "RunColumnTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 10.0 + }, + "data": { + "status": "Idle", + "current_volume": 0.0, + "max_volume": 50.0, + "transfer_rate": 10.0, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + } + }, + { + "id": "column_1", + "name": "柱层析设备", + "children": [], + "parent": "RunColumnTestStation", + "type": "device", + "class": "virtual_column", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_flow_rate": 5.0, + "column_length": 30.0, + "column_diameter": 2.5 + }, + "data": { + "status": "Idle", + "column_state": "Ready", + "current_flow_rate": 0.0, + "max_flow_rate": 5.0, + "column_length": 30.0, + "column_diameter": 2.5, + "processed_volume": 0.0, + "progress": 0.0, + "current_status": "Ready" + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [ + { + "name": "crude_mixture", + "volume": 200.0, + "concentration": 70.0 + } + ] + } + }, + { + "id": "flask_hexane", + "name": "正己烷洗脱剂", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "hexane", + "volume": 1500.0, + "concentration": 99.8 + } + ] + } + }, + { + "id": "flask_ethyl_acetate", + "name": "乙酸乙酯洗脱剂", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "ethyl_acetate", + "volume": 1500.0, + "concentration": 99.5 + } + ] + } + }, + { + "id": "flask_methanol", + "name": "甲醇洗脱剂", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "methanol", + "volume": 800.0, + "concentration": 99.9 + } + ] + } + }, + { + "id": "collection_flask_1", + "name": "收集瓶1", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 750, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "collection_flask_2", + "name": "收集瓶2", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 900, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "collection_flask_3", + "name": "收集瓶3", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 1050, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "waste_flask", + "name": "废液瓶", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 1200, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "RunColumnTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "reaction_mixture", + "volume": 300.0, + "concentration": 85.0 + } + ] + } + } + ], + "links": [ + { + "source": "transfer_pump_1", + "target": "flask_sample", + "type": "physical", + "port": { + "transfer_pump_1": "1", + "flask_sample": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_hexane", + "type": "physical", + "port": { + "transfer_pump_1": "2", + "flask_hexane": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_ethyl_acetate", + "type": "physical", + "port": { + "transfer_pump_1": "3", + "flask_ethyl_acetate": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_methanol", + "type": "physical", + "port": { + "transfer_pump_1": "4", + "flask_methanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "column_1", + "type": "physical", + "port": { + "transfer_pump_1": "5", + "column_1": "inlet" + } + }, + { + "source": "transfer_pump_1", + "target": "collection_flask_1", + "type": "physical", + "port": { + "transfer_pump_1": "6", + "collection_flask_1": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "collection_flask_2", + "type": "physical", + "port": { + "transfer_pump_1": "7", + "collection_flask_2": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "collection_flask_3", + "type": "physical", + "port": { + "transfer_pump_1": "8", + "collection_flask_3": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "waste_flask", + "type": "physical", + "port": { + "transfer_pump_1": "9", + "waste_flask": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump_1": "10", + "reactor": "top" + } + }, + { + "source": "column_1", + "target": "collection_flask_1", + "type": "physical", + "port": { + "column_1": "outlet", + "collection_flask_1": "top" + } + }, + { + "source": "column_1", + "target": "collection_flask_2", + "type": "physical", + "port": { + "column_1": "outlet", + "collection_flask_2": "top" + } + }, + { + "source": "column_1", + "target": "collection_flask_3", + "type": "physical", + "port": { + "column_1": "outlet", + "collection_flask_3": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/stirteststation.json b/test/experiments/mock_protocol/stirteststation.json new file mode 100644 index 00000000..20694d1b --- /dev/null +++ b/test/experiments/mock_protocol/stirteststation.json @@ -0,0 +1,250 @@ +{ + "nodes": [ + { + "id": "StirTestStation", + "name": "搅拌测试工作站", + "children": [ + "pump_add", + "flask_sample", + "flask_buffer1", + "flask_buffer2", + "reactor", + "stirrer", + "flask_waste", + "flask_air" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["AddProtocol", "PumpTransferProtocol", "CleanProtocol", "StirProtocol", "StartStirProtocol", "StopStirProtocol"] + }, + "data": {} + }, + { + "id": "pump_add", + "name": "添加泵", + "children": [], + "parent": "StirTestStation", + "type": "device", + "class": "virtual_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 25.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "stirrer", + "name": "搅拌器", + "children": [], + "parent": "StirTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer1", + "name": "缓冲液瓶1", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_buffer2", + "name": "缓冲液瓶2", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 5000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_waste", + "name": "废液瓶", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 3000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_air", + "name": "空气瓶", + "children": [], + "parent": "StirTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "stirrer", + "target": "reactor", + "type": "physical", + "port": { + "stirrer": "top", + "reactor": "bottom" + } + }, + { + "source": "pump_add", + "target": "flask_sample", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_sample": "top" + } + }, + { + "source": "pump_add", + "target": "flask_buffer1", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_buffer1": "top" + } + }, + { + "source": "pump_add", + "target": "flask_buffer2", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_buffer2": "top" + } + }, + { + "source": "pump_add", + "target": "reactor", + "type": "physical", + "port": { + "pump_add": "outlet", + "reactor": "top" + } + }, + { + "source": "pump_add", + "target": "flask_waste", + "type": "physical", + "port": { + "pump_add": "outlet", + "flask_waste": "top" + } + }, + { + "source": "pump_add", + "target": "flask_air", + "type": "physical", + "port": { + "pump_add": "inlet", + "flask_air": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/transferteststation.json b/test/experiments/mock_protocol/transferteststation.json new file mode 100644 index 00000000..cbe485b7 --- /dev/null +++ b/test/experiments/mock_protocol/transferteststation.json @@ -0,0 +1,249 @@ +{ + "nodes": [ + { + "id": "TransferTestStation", + "name": "液体转移测试工作站", + "children": [ + "transfer_pump", + "flask_source1", + "flask_source2", + "flask_target1", + "flask_target2", + "reactor", + "flask_waste", + "flask_rinsing" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["TransferProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump", + "name": "转移泵", + "children": [], + "parent": "TransferTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 5.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "flask_source1", + "name": "源容器1", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_source2", + "name": "源容器2", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_target1", + "name": "目标容器1", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_target2", + "name": "目标容器2", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_waste", + "name": "废液瓶", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_rinsing", + "name": "冲洗液瓶", + "children": [], + "parent": "TransferTestStation", + "type": "container", + "class": null, + "position": { + "x": 950, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "transfer_pump", + "target": "flask_source1", + "type": "physical", + "port": { + "transfer_pump": "inlet", + "flask_source1": "top" + } + }, + { + "source": "transfer_pump", + "target": "flask_source2", + "type": "physical", + "port": { + "transfer_pump": "inlet", + "flask_source2": "top" + } + }, + { + "source": "transfer_pump", + "target": "flask_target1", + "type": "physical", + "port": { + "transfer_pump": "outlet", + "flask_target1": "top" + } + }, + { + "source": "transfer_pump", + "target": "flask_target2", + "type": "physical", + "port": { + "transfer_pump": "outlet", + "flask_target2": "top" + } + }, + { + "source": "transfer_pump", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump": "outlet", + "reactor": "top" + } + }, + { + "source": "transfer_pump", + "target": "flask_waste", + "type": "physical", + "port": { + "transfer_pump": "outlet", + "flask_waste": "top" + } + }, + { + "source": "transfer_pump", + "target": "flask_rinsing", + "type": "physical", + "port": { + "transfer_pump": "inlet", + "flask_rinsing": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/mock_protocol/washsolidteststation.json b/test/experiments/mock_protocol/washsolidteststation.json new file mode 100644 index 00000000..170c825c --- /dev/null +++ b/test/experiments/mock_protocol/washsolidteststation.json @@ -0,0 +1,494 @@ +{ + "nodes": [ + { + "id": "WashSolidTestStation", + "name": "固体清洗测试工作站", + "children": [ + "transfer_pump_1", + "heatchill_1", + "stirrer_1", + "filter_1", + "flask_ethanol", + "flask_water", + "flask_acetone", + "flask_methanol", + "reactor", + "collection_flask", + "waste_flask", + "flask_sample", + "filtrate_flask" + ], + "parent": null, + "type": "device", + "class": "workstation", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "protocol_type": ["WashSolidProtocol", "TransferProtocol", "FilterProtocol", "HeatChillProtocol", "StirProtocol"] + }, + "data": {} + }, + { + "id": "transfer_pump_1", + "name": "转移泵", + "children": [], + "parent": "WashSolidTestStation", + "type": "device", + "class": "virtual_transfer_pump", + "position": { + "x": 520.6111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_volume": 50.0, + "transfer_rate": 10.0 + }, + "data": { + "status": "Idle", + "current_volume": 0.0, + "max_volume": 50.0, + "transfer_rate": 10.0, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + } + }, + { + "id": "heatchill_1", + "name": "加热冷却器", + "children": [], + "parent": "WashSolidTestStation", + "type": "device", + "class": "virtual_heatchill", + "position": { + "x": 650.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 150.0, + "min_temp": -20.0 + }, + "data": { + "status": "Idle", + "current_temp": 25.0, + "target_temp": 25.0, + "vessel": "", + "purpose": "", + "progress": 0.0, + "current_status": "Ready" + } + }, + { + "id": "stirrer_1", + "name": "搅拌器", + "children": [], + "parent": "WashSolidTestStation", + "type": "device", + "class": "virtual_stirrer", + "position": { + "x": 750.1111111111111, + "y": 300, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_speed": 1000.0 + }, + "data": { + "status": "Idle" + } + }, + { + "id": "filter_1", + "name": "过滤器", + "children": [], + "parent": "WashSolidTestStation", + "type": "device", + "class": "virtual_filter", + "position": { + "x": 850.1111111111111, + "y": 478, + "z": 0 + }, + "config": { + "port": "VIRTUAL", + "max_temp": 100.0, + "max_stir_speed": 1000.0 + }, + "data": { + "status": "Idle", + "filter_state": "Ready", + "current_temp": 25.0, + "target_temp": 25.0, + "max_temp": 100.0, + "stir_speed": 0.0, + "max_stir_speed": 1000.0, + "filtered_volume": 0.0, + "progress": 0.0, + "message": "" + } + }, + { + "id": "flask_ethanol", + "name": "乙醇清洗剂", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 100, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "ethanol", + "volume": 1500.0, + "concentration": 99.5 + } + ] + } + }, + { + "id": "flask_water", + "name": "水清洗剂", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 250, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [ + { + "name": "water", + "volume": 1800.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "flask_acetone", + "name": "丙酮清洗剂", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 400, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "acetone", + "volume": 800.0, + "concentration": 99.8 + } + ] + } + }, + { + "id": "flask_methanol", + "name": "甲醇清洗剂", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 550, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "methanol", + "volume": 800.0, + "concentration": 99.9 + } + ] + } + }, + { + "id": "reactor", + "name": "反应器", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 698.1111111111111, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [ + { + "name": "solid_product", + "volume": 50.0, + "concentration": 100.0 + } + ] + } + }, + { + "id": "collection_flask", + "name": "收集瓶", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 850, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 1000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "waste_flask", + "name": "废液瓶", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 1000, + "y": 428, + "z": 0 + }, + "config": { + "max_volume": 2000.0 + }, + "data": { + "liquid": [] + } + }, + { + "id": "flask_sample", + "name": "样品瓶", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 1150, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 500.0 + }, + "data": { + "liquid": [ + { + "name": "crude_solid", + "volume": 30.0, + "concentration": 80.0 + } + ] + } + }, + { + "id": "filtrate_flask", + "name": "滤液收集瓶", + "children": [], + "parent": "WashSolidTestStation", + "type": "container", + "class": null, + "position": { + "x": 1000, + "y": 300, + "z": 0 + }, + "config": { + "max_volume": 1500.0 + }, + "data": { + "liquid": [] + } + } + ], + "links": [ + { + "source": "transfer_pump_1", + "target": "flask_ethanol", + "type": "physical", + "port": { + "transfer_pump_1": "1", + "flask_ethanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_water", + "type": "physical", + "port": { + "transfer_pump_1": "2", + "flask_water": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_acetone", + "type": "physical", + "port": { + "transfer_pump_1": "3", + "flask_acetone": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_methanol", + "type": "physical", + "port": { + "transfer_pump_1": "4", + "flask_methanol": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "reactor", + "type": "physical", + "port": { + "transfer_pump_1": "5", + "reactor": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "collection_flask", + "type": "physical", + "port": { + "transfer_pump_1": "6", + "collection_flask": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "waste_flask", + "type": "physical", + "port": { + "transfer_pump_1": "7", + "waste_flask": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "flask_sample", + "type": "physical", + "port": { + "transfer_pump_1": "8", + "flask_sample": "top" + } + }, + { + "source": "transfer_pump_1", + "target": "filtrate_flask", + "type": "physical", + "port": { + "transfer_pump_1": "9", + "filtrate_flask": "top" + } + }, + { + "source": "heatchill_1", + "target": "reactor", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "reactor": "bottom" + } + }, + { + "source": "heatchill_1", + "target": "flask_sample", + "type": "physical", + "port": { + "heatchill_1": "heating_element", + "flask_sample": "bottom" + } + }, + { + "source": "stirrer_1", + "target": "reactor", + "type": "physical", + "port": { + "stirrer_1": "stir_rod", + "reactor": "center" + } + }, + { + "source": "stirrer_1", + "target": "flask_sample", + "type": "physical", + "port": { + "stirrer_1": "stir_rod", + "flask_sample": "center" + } + }, + { + "source": "filter_1", + "target": "reactor", + "type": "physical", + "port": { + "filter_1": "filter_element", + "reactor": "top" + } + }, + { + "source": "filter_1", + "target": "flask_sample", + "type": "physical", + "port": { + "filter_1": "filter_element", + "flask_sample": "top" + } + }, + { + "source": "filter_1", + "target": "filtrate_flask", + "type": "physical", + "port": { + "filter_1": "filter_element", + "filtrate_flask": "top" + } + } + ] +} \ No newline at end of file diff --git a/test/experiments/plr_test_converted.json b/test/experiments/plr_test_converted.json index 533d99c3..6b5cae4e 100644 --- a/test/experiments/plr_test_converted.json +++ b/test/experiments/plr_test_converted.json @@ -47,6 +47,9 @@ }, "config": { "type": "OTDeck", + "size_x": 624.3, + "size_y": 565.2, + "size_z": 900, "with_trash": false, "rotation": { "x": 0, @@ -163,7 +166,7 @@ "type": "plate", "class": "opentrons_96_filtertiprack_1000ul", "position": { - "x": 0, + "x": 265.0, "y": 0, "z": 69 }, @@ -281,6 +284,10 @@ }, "data": {} }, + + + + { "id": "tip_rack_A1", "name": "tip_rack_A1", @@ -290,14 +297,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 68.3, + "x": 11.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -309,19 +316,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -330,10 +337,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -346,14 +353,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 59.3, + "x": 11.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -365,19 +372,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -386,10 +393,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -402,14 +409,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 50.3, + "x": 11.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -421,19 +428,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -442,10 +449,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -458,14 +465,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 41.3, + "x": 11.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -477,19 +484,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -498,10 +505,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -514,14 +521,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 32.3, + "x": 11.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -533,19 +540,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -554,10 +561,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -570,14 +577,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 23.3, + "x": 11.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -589,19 +596,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -610,10 +617,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -626,14 +633,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 14.3, + "x": 11.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -645,19 +652,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -666,10 +673,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -682,14 +689,14 @@ "type": "device", "class": "", "position": { - "x": 7.2, - "y": 5.3, + "x": 11.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -701,19 +708,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -722,10 +729,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -738,14 +745,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 68.3, + "x": 20.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -757,19 +764,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -778,10 +785,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -794,14 +801,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 59.3, + "x": 20.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -813,19 +820,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -834,10 +841,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -850,14 +857,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 50.3, + "x": 20.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -869,19 +876,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -890,10 +897,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -906,14 +913,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 41.3, + "x": 20.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -925,19 +932,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -946,10 +953,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -962,14 +969,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 32.3, + "x": 20.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -981,19 +988,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1002,10 +1009,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1018,14 +1025,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 23.3, + "x": 20.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1037,19 +1044,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1058,10 +1065,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1074,14 +1081,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 14.3, + "x": 20.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1093,19 +1100,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1114,10 +1121,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1130,14 +1137,14 @@ "type": "device", "class": "", "position": { - "x": 16.2, - "y": 5.3, + "x": 20.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1149,19 +1156,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1170,10 +1177,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1186,14 +1193,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 68.3, + "x": 29.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1205,19 +1212,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1226,10 +1233,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1242,14 +1249,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 59.3, + "x": 29.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1261,19 +1268,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1282,10 +1289,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1298,14 +1305,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 50.3, + "x": 29.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1317,19 +1324,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1338,10 +1345,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1354,14 +1361,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 41.3, + "x": 29.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1373,19 +1380,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1394,10 +1401,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1410,14 +1417,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 32.3, + "x": 29.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1429,19 +1436,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1450,10 +1457,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1466,14 +1473,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 23.3, + "x": 29.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1485,19 +1492,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1506,10 +1513,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1522,14 +1529,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 14.3, + "x": 29.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1541,19 +1548,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1562,10 +1569,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1578,14 +1585,14 @@ "type": "device", "class": "", "position": { - "x": 25.2, - "y": 5.3, + "x": 29.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1597,19 +1604,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1618,10 +1625,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1634,14 +1641,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 68.3, + "x": 38.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1653,19 +1660,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1674,10 +1681,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1690,14 +1697,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 59.3, + "x": 38.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1709,19 +1716,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1730,10 +1737,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1746,14 +1753,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 50.3, + "x": 38.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1765,19 +1772,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1786,10 +1793,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1802,14 +1809,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 41.3, + "x": 38.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1821,19 +1828,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1842,10 +1849,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1858,14 +1865,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 32.3, + "x": 38.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1877,19 +1884,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1898,10 +1905,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1914,14 +1921,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 23.3, + "x": 38.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1933,19 +1940,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -1954,10 +1961,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -1970,14 +1977,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 14.3, + "x": 38.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -1989,19 +1996,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2010,10 +2017,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2026,14 +2033,14 @@ "type": "device", "class": "", "position": { - "x": 34.2, - "y": 5.3, + "x": 38.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2045,19 +2052,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2066,10 +2073,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2082,14 +2089,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 68.3, + "x": 47.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2101,19 +2108,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2122,10 +2129,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2138,14 +2145,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 59.3, + "x": 47.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2157,19 +2164,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2178,10 +2185,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2194,14 +2201,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 50.3, + "x": 47.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2213,19 +2220,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2234,10 +2241,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2250,14 +2257,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 41.3, + "x": 47.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2269,19 +2276,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2290,10 +2297,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2306,14 +2313,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 32.3, + "x": 47.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2325,19 +2332,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2346,10 +2353,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2362,14 +2369,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 23.3, + "x": 47.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2381,19 +2388,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2402,10 +2409,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2418,14 +2425,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 14.3, + "x": 47.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2437,19 +2444,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2458,10 +2465,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2474,14 +2481,14 @@ "type": "device", "class": "", "position": { - "x": 43.2, - "y": 5.3, + "x": 47.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2493,19 +2500,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2514,10 +2521,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2530,14 +2537,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 68.3, + "x": 56.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2549,19 +2556,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2570,10 +2577,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2586,14 +2593,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 59.3, + "x": 56.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2605,19 +2612,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2626,10 +2633,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2642,14 +2649,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 50.3, + "x": 56.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2661,19 +2668,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2682,10 +2689,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2698,14 +2705,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 41.3, + "x": 56.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2717,19 +2724,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2738,10 +2745,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2754,14 +2761,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 32.3, + "x": 56.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2773,19 +2780,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2794,10 +2801,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2810,14 +2817,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 23.3, + "x": 56.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2829,19 +2836,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2850,10 +2857,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2866,14 +2873,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 14.3, + "x": 56.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2885,19 +2892,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2906,10 +2913,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2922,14 +2929,14 @@ "type": "device", "class": "", "position": { - "x": 52.2, - "y": 5.3, + "x": 56.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2941,19 +2948,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -2962,10 +2969,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -2978,14 +2985,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 68.3, + "x": 65.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -2997,19 +3004,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3018,10 +3025,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3034,14 +3041,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 59.3, + "x": 65.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3053,19 +3060,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3074,10 +3081,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3090,14 +3097,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 50.3, + "x": 65.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3109,19 +3116,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3130,10 +3137,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3146,14 +3153,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 41.3, + "x": 65.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3165,19 +3172,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3186,10 +3193,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3202,14 +3209,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 32.3, + "x": 65.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3221,19 +3228,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3242,10 +3249,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3258,14 +3265,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 23.3, + "x": 65.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3277,19 +3284,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3298,10 +3305,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3314,14 +3321,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 14.3, + "x": 65.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3333,19 +3340,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3354,10 +3361,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3370,14 +3377,14 @@ "type": "device", "class": "", "position": { - "x": 61.2, - "y": 5.3, + "x": 65.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3389,19 +3396,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3410,10 +3417,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3426,14 +3433,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 68.3, + "x": 74.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3445,19 +3452,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3466,10 +3473,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3482,14 +3489,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 59.3, + "x": 74.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3501,19 +3508,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3522,10 +3529,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3538,14 +3545,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 50.3, + "x": 74.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3557,19 +3564,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3578,10 +3585,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3594,14 +3601,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 41.3, + "x": 74.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3613,19 +3620,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3634,10 +3641,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3650,14 +3657,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 32.3, + "x": 74.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3669,19 +3676,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3690,10 +3697,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3706,14 +3713,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 23.3, + "x": 74.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3725,19 +3732,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3746,10 +3753,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3762,14 +3769,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 14.3, + "x": 74.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3781,19 +3788,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3802,10 +3809,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3818,14 +3825,14 @@ "type": "device", "class": "", "position": { - "x": 70.2, - "y": 5.3, + "x": 74.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3837,19 +3844,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3858,10 +3865,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3874,14 +3881,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 68.3, + "x": 83.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3893,19 +3900,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3914,10 +3921,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3930,14 +3937,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 59.3, + "x": 83.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -3949,19 +3956,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -3970,10 +3977,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -3986,14 +3993,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 50.3, + "x": 83.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4005,19 +4012,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4026,10 +4033,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4042,14 +4049,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 41.3, + "x": 83.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4061,19 +4068,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4082,10 +4089,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4098,14 +4105,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 32.3, + "x": 83.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4117,19 +4124,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4138,10 +4145,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4154,14 +4161,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 23.3, + "x": 83.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4173,19 +4180,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4194,10 +4201,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4210,14 +4217,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 14.3, + "x": 83.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4229,19 +4236,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4250,10 +4257,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4266,14 +4273,14 @@ "type": "device", "class": "", "position": { - "x": 79.2, - "y": 5.3, + "x": 83.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4285,19 +4292,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4306,10 +4313,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4322,14 +4329,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 68.3, + "x": 92.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4341,19 +4348,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4362,10 +4369,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4378,14 +4385,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 59.3, + "x": 92.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4397,19 +4404,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4418,10 +4425,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4434,14 +4441,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 50.3, + "x": 92.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4453,19 +4460,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4474,10 +4481,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4490,14 +4497,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 41.3, + "x": 92.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4509,19 +4516,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4530,10 +4537,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4546,14 +4553,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 32.3, + "x": 92.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4565,19 +4572,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4586,10 +4593,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4602,14 +4609,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 23.3, + "x": 92.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4621,19 +4628,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4642,10 +4649,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4658,14 +4665,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 14.3, + "x": 92.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4677,19 +4684,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4698,10 +4705,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4714,14 +4721,14 @@ "type": "device", "class": "", "position": { - "x": 88.2, - "y": 5.3, + "x": 92.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4733,19 +4740,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4754,10 +4761,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4770,14 +4777,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 68.3, + "x": 101.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4789,19 +4796,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4810,10 +4817,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4826,14 +4833,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 59.3, + "x": 101.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4845,19 +4852,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4866,10 +4873,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4882,14 +4889,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 50.3, + "x": 101.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4901,19 +4908,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4922,10 +4929,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4938,14 +4945,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 41.3, + "x": 101.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -4957,19 +4964,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -4978,10 +4985,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -4994,14 +5001,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 32.3, + "x": 101.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5013,19 +5020,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5034,10 +5041,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5050,14 +5057,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 23.3, + "x": 101.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5069,19 +5076,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5090,10 +5097,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5106,14 +5113,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 14.3, + "x": 101.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5125,19 +5132,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5146,10 +5153,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5162,14 +5169,14 @@ "type": "device", "class": "", "position": { - "x": 97.2, - "y": 5.3, + "x": 101.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5181,19 +5188,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5202,10 +5209,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5218,14 +5225,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 68.3, + "x": 110.804, + "y": 71.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5237,19 +5244,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5258,10 +5265,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5274,14 +5281,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 59.3, + "x": 110.804, + "y": 62.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5293,19 +5300,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5314,10 +5321,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5330,14 +5337,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 50.3, + "x": 110.804, + "y": 53.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5349,19 +5356,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5370,10 +5377,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5386,14 +5393,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 41.3, + "x": 110.804, + "y": 44.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5405,19 +5412,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5426,10 +5433,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5442,14 +5449,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 32.3, + "x": 110.804, + "y": 35.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5461,19 +5468,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5482,10 +5489,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5498,14 +5505,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 23.3, + "x": 110.804, + "y": 26.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5517,19 +5524,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5538,10 +5545,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5554,14 +5561,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 14.3, + "x": 110.804, + "y": 17.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5573,19 +5580,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5594,10 +5601,10 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, @@ -5610,14 +5617,14 @@ "type": "device", "class": "", "position": { - "x": 106.2, - "y": 5.3, + "x": 110.804, + "y": 8.704, "z": 9.47 }, "config": { "type": "TipSpot", - "size_x": 9.0, - "size_y": 9.0, + "size_x": 5.112, + "size_y": 5.112, "size_z": 0, "rotation": { "x": 0, @@ -5629,19 +5636,19 @@ "model": null, "prototype_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } }, "data": { "tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 }, "tip_state": { "liquids": [], @@ -5650,13 +5657,16 @@ }, "pending_tip": { "type": "Tip", - "total_tip_length": 39.2, + "total_tip_length": 88, "has_filter": true, - "maximal_volume": 20.0, - "fitting_depth": 3.29 + "maximal_volume": 1000.0, + "fitting_depth": 7.95 } } }, + + + { "id": "plate_well", "name": "plate_well", @@ -5677,7 +5687,7 @@ "plate_well_E2", "plate_well_F2", "plate_well_G2", - "plate_well_H2", + "plate_well_H2", "plate_well_A3", "plate_well_B3", "plate_well_C3", @@ -5756,14 +5766,15 @@ "plate_well_D12", "plate_well_E12", "plate_well_F12", - "plate_well_G12" + "plate_well_G12", + "plate_well_H12" ], "parent": "deck", "type": "plate", "class": "nest_96_wellplate_2ml_deep", "position": { - "x": 265.0, - "y": 0, + "x": 0, + "y": 90.5, "z": 69 }, "config": { @@ -5880,6 +5891,11 @@ }, "data": {} }, + + + + + { "id": "plate_well_A1", "name": "plate_well_A1", @@ -5889,15 +5905,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 70.77, - "z": 3.03 + "x": 10.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -5906,16 +5922,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -5928,15 +5944,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 61.77, - "z": 3.03 + "x": 10.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -5945,16 +5961,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -5967,15 +5983,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 52.77, - "z": 3.03 + "x": 10.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -5984,16 +6000,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6006,15 +6022,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 43.77, - "z": 3.03 + "x": 10.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6023,16 +6039,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6045,15 +6061,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 34.77, - "z": 3.03 + "x": 10.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6062,16 +6078,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6084,15 +6100,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 25.77, - "z": 3.03 + "x": 10.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6101,16 +6117,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6123,15 +6139,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 16.77, - "z": 3.03 + "x": 10.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6140,16 +6156,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6162,15 +6178,15 @@ "type": "device", "class": "", "position": { - "x": 10.87, - "y": 7.77, - "z": 3.03 + "x": 10.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6179,16 +6195,16 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { - "liquids": [], - "pending_liquids": [], + "liquids": [["water", 50.0]], + "pending_liquids": [["water", 50.0]], "liquid_history": [] } }, @@ -6201,15 +6217,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 70.77, - "z": 3.03 + "x": 19.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6218,12 +6234,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6240,15 +6256,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 61.77, - "z": 3.03 + "x": 19.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6257,12 +6273,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6279,15 +6295,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 52.77, - "z": 3.03 + "x": 19.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6296,12 +6312,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6318,15 +6334,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 43.77, - "z": 3.03 + "x": 19.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6335,12 +6351,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6357,15 +6373,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 34.77, - "z": 3.03 + "x": 19.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6374,12 +6390,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6396,15 +6412,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 25.77, - "z": 3.03 + "x": 19.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6413,12 +6429,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6435,15 +6451,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 16.77, - "z": 3.03 + "x": 19.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6452,12 +6468,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6474,15 +6490,15 @@ "type": "device", "class": "", "position": { - "x": 19.87, - "y": 7.77, - "z": 3.03 + "x": 19.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6491,12 +6507,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6513,15 +6529,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 70.77, - "z": 3.03 + "x": 28.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6530,12 +6546,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6552,15 +6568,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 61.77, - "z": 3.03 + "x": 28.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6569,12 +6585,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6591,15 +6607,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 52.77, - "z": 3.03 + "x": 28.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6608,12 +6624,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6630,15 +6646,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 43.77, - "z": 3.03 + "x": 28.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6647,12 +6663,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6669,15 +6685,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 34.77, - "z": 3.03 + "x": 28.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6686,12 +6702,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6708,15 +6724,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 25.77, - "z": 3.03 + "x": 28.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6725,12 +6741,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6747,15 +6763,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 16.77, - "z": 3.03 + "x": 28.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6764,12 +6780,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6786,15 +6802,15 @@ "type": "device", "class": "", "position": { - "x": 28.87, - "y": 7.77, - "z": 3.03 + "x": 28.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6803,12 +6819,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6825,15 +6841,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 70.77, - "z": 3.03 + "x": 37.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6842,12 +6858,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6864,15 +6880,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 61.77, - "z": 3.03 + "x": 37.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6881,12 +6897,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6903,15 +6919,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 52.77, - "z": 3.03 + "x": 37.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6920,12 +6936,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6942,15 +6958,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 43.77, - "z": 3.03 + "x": 37.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6959,12 +6975,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -6981,15 +6997,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 34.77, - "z": 3.03 + "x": 37.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -6998,12 +7014,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7020,15 +7036,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 25.77, - "z": 3.03 + "x": 37.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7037,12 +7053,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7059,15 +7075,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 16.77, - "z": 3.03 + "x": 37.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7076,12 +7092,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7098,15 +7114,15 @@ "type": "device", "class": "", "position": { - "x": 37.87, - "y": 7.77, - "z": 3.03 + "x": 37.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7115,12 +7131,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7137,15 +7153,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 70.77, - "z": 3.03 + "x": 46.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7154,12 +7170,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7176,15 +7192,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 61.77, - "z": 3.03 + "x": 46.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7193,12 +7209,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7215,15 +7231,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 52.77, - "z": 3.03 + "x": 46.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7232,12 +7248,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7254,15 +7270,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 43.77, - "z": 3.03 + "x": 46.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7271,12 +7287,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7293,15 +7309,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 34.77, - "z": 3.03 + "x": 46.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7310,12 +7326,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7332,15 +7348,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 25.77, - "z": 3.03 + "x": 46.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7349,12 +7365,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7371,15 +7387,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 16.77, - "z": 3.03 + "x": 46.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7388,12 +7404,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7410,15 +7426,15 @@ "type": "device", "class": "", "position": { - "x": 46.87, - "y": 7.77, - "z": 3.03 + "x": 46.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7427,12 +7443,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7449,15 +7465,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 70.77, - "z": 3.03 + "x": 55.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7466,12 +7482,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7488,15 +7504,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 61.77, - "z": 3.03 + "x": 55.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7505,12 +7521,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7527,15 +7543,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 52.77, - "z": 3.03 + "x": 55.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7544,12 +7560,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7566,15 +7582,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 43.77, - "z": 3.03 + "x": 55.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7583,12 +7599,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7605,15 +7621,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 34.77, - "z": 3.03 + "x": 55.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7622,12 +7638,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7644,15 +7660,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 25.77, - "z": 3.03 + "x": 55.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7661,12 +7677,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7683,15 +7699,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 16.77, - "z": 3.03 + "x": 55.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7700,12 +7716,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7722,15 +7738,15 @@ "type": "device", "class": "", "position": { - "x": 55.87, - "y": 7.77, - "z": 3.03 + "x": 55.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7739,12 +7755,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7761,15 +7777,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 70.77, - "z": 3.03 + "x": 64.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7778,12 +7794,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7800,15 +7816,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 61.77, - "z": 3.03 + "x": 64.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7817,12 +7833,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7839,15 +7855,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 52.77, - "z": 3.03 + "x": 64.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7856,12 +7872,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7878,15 +7894,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 43.77, - "z": 3.03 + "x": 64.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7895,12 +7911,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7917,15 +7933,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 34.77, - "z": 3.03 + "x": 64.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7934,12 +7950,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7956,15 +7972,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 25.77, - "z": 3.03 + "x": 64.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -7973,12 +7989,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -7995,15 +8011,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 16.77, - "z": 3.03 + "x": 64.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8012,12 +8028,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8034,15 +8050,15 @@ "type": "device", "class": "", "position": { - "x": 64.87, - "y": 7.77, - "z": 3.03 + "x": 64.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8051,12 +8067,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8073,15 +8089,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 70.77, - "z": 3.03 + "x": 73.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8090,12 +8106,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8112,15 +8128,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 61.77, - "z": 3.03 + "x": 73.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8129,12 +8145,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8151,15 +8167,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 52.77, - "z": 3.03 + "x": 73.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8168,12 +8184,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8190,15 +8206,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 43.77, - "z": 3.03 + "x": 73.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8207,12 +8223,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8229,15 +8245,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 34.77, - "z": 3.03 + "x": 73.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8246,12 +8262,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8268,15 +8284,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 25.77, - "z": 3.03 + "x": 73.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8285,12 +8301,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8307,15 +8323,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 16.77, - "z": 3.03 + "x": 73.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8324,12 +8340,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8346,15 +8362,15 @@ "type": "device", "class": "", "position": { - "x": 73.87, - "y": 7.77, - "z": 3.03 + "x": 73.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8363,12 +8379,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8385,15 +8401,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 70.77, - "z": 3.03 + "x": 82.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8402,12 +8418,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8424,15 +8440,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 61.77, - "z": 3.03 + "x": 82.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8441,12 +8457,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8463,15 +8479,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 52.77, - "z": 3.03 + "x": 82.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8480,12 +8496,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8502,15 +8518,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 43.77, - "z": 3.03 + "x": 82.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8519,12 +8535,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8541,15 +8557,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 34.77, - "z": 3.03 + "x": 82.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8558,12 +8574,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8580,15 +8596,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 25.77, - "z": 3.03 + "x": 82.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8597,12 +8613,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8619,15 +8635,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 16.77, - "z": 3.03 + "x": 82.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8636,12 +8652,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8658,15 +8674,15 @@ "type": "device", "class": "", "position": { - "x": 82.87, - "y": 7.77, - "z": 3.03 + "x": 82.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8675,12 +8691,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8697,15 +8713,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 70.77, - "z": 3.03 + "x": 91.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8714,12 +8730,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8736,15 +8752,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 61.77, - "z": 3.03 + "x": 91.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8753,12 +8769,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8775,15 +8791,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 52.77, - "z": 3.03 + "x": 91.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8792,12 +8808,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8814,15 +8830,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 43.77, - "z": 3.03 + "x": 91.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8831,12 +8847,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8853,15 +8869,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 34.77, - "z": 3.03 + "x": 91.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8870,12 +8886,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8892,15 +8908,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 25.77, - "z": 3.03 + "x": 91.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8909,12 +8925,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8931,15 +8947,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 16.77, - "z": 3.03 + "x": 91.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8948,12 +8964,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -8970,15 +8986,15 @@ "type": "device", "class": "", "position": { - "x": 91.87, - "y": 7.77, - "z": 3.03 + "x": 91.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -8987,12 +9003,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9009,15 +9025,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 70.77, - "z": 3.03 + "x": 100.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9026,12 +9042,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9048,15 +9064,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 61.77, - "z": 3.03 + "x": 100.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9065,12 +9081,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9087,15 +9103,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 52.77, - "z": 3.03 + "x": 100.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9104,12 +9120,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9126,15 +9142,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 43.77, - "z": 3.03 + "x": 100.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9143,12 +9159,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9165,15 +9181,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 34.77, - "z": 3.03 + "x": 100.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9182,12 +9198,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9204,15 +9220,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 25.77, - "z": 3.03 + "x": 100.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9221,12 +9237,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9243,15 +9259,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 16.77, - "z": 3.03 + "x": 100.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9260,12 +9276,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9282,15 +9298,15 @@ "type": "device", "class": "", "position": { - "x": 100.87, - "y": 7.77, - "z": 3.03 + "x": 100.2, + "y": 7.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9299,12 +9315,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9321,15 +9337,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 70.77, - "z": 3.03 + "x": 109.2, + "y": 70.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9338,12 +9354,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9360,15 +9376,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 61.77, - "z": 3.03 + "x": 109.2, + "y": 61.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9377,12 +9393,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9399,15 +9415,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 52.77, - "z": 3.03 + "x": 109.2, + "y": 52.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9416,12 +9432,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9438,15 +9454,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 43.77, - "z": 3.03 + "x": 109.2, + "y": 43.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9455,12 +9471,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9477,15 +9493,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 34.77, - "z": 3.03 + "x": 109.2, + "y": 34.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9494,12 +9510,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9516,15 +9532,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 25.77, - "z": 3.03 + "x": 109.2, + "y": 25.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9533,12 +9549,12 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], @@ -9555,15 +9571,15 @@ "type": "device", "class": "", "position": { - "x": 109.87, - "y": 16.77, - "z": 3.03 + "x": 109.2, + "y": 16.05, + "z": 3 }, "config": { "type": "Well", - "size_x": 6.86, - "size_y": 6.86, - "size_z": 10.67, + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, "rotation": { "x": 0, "y": 0, @@ -9572,18 +9588,126 @@ }, "category": "well", "model": null, - "max_volume": 360, - "material_z_thickness": 0.5, + "max_volume": 2000, + "material_z_thickness": null, "compute_volume_from_height": null, "compute_height_from_volume": null, - "bottom_type": "flat", - "cross_section_type": "circle" + "bottom_type": "unknown", + "cross_section_type": "rectangle" }, "data": { "liquids": [], "pending_liquids": [], "liquid_history": [] } + }, + { + "id": "plate_well_H12", + "name": "plate_well_H12", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 109.2, + "y": 7.05, + "z": 3 + }, + "config": { + "type": "Well", + "size_x": 8.2, + "size_y": 8.2, + "size_z": 38, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 2000, + "material_z_thickness": null, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "unknown", + "cross_section_type": "rectangle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + + + + + { + "id": "arm_slider", + "name": "arm_slider", + "children": [], + "parent": null, + "type": "device", + "class": "moveit.arm_slider", + "position": { + "x": -500, + "y": 1000, + "z": -100 + }, + "config": { + "moveit_type": "arm_slider", + "joint_poses": { + "arm": { + "hotel_1": [ + 1.05, + 0.568, + -1.0821, + 0.0, + 1.0821 + ], + "home": [ + 0.865, + 0.09, + 0.8727, + 0.0, + -0.8727 + ] + } + }, + "rotation": { + "x": 0, + "y": 0, + "z": -1.5708, + "type": "Rotation" + }, + "device_config": {} + }, + "data": {} + }, + { + "id": "hotel", + "name": "hotel", + "children": [], + "parent": null, + "type": "device", + "class": "hotel.thermo_orbitor_rs2_hotel", + "position": { + "x": 0, + "y": -700, + "z": -10 + }, + "config": { + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "device_config": {} + }, + "data": {} } ], "links": [] diff --git a/test/experiments/plr_test_converted_slim.json b/test/experiments/plr_test_converted_slim.json new file mode 100644 index 00000000..43e05e7c --- /dev/null +++ b/test/experiments/plr_test_converted_slim.json @@ -0,0 +1,1710 @@ +{ + "nodes": [ + { + "id": "PLR_STATION", + "name": "PLR_LH_TEST", + "parent": null, + "type": "device", + "class": "liquid_handler", + "position": { + "x": 620.6111111111111, + "y": 171, + "z": 0 + }, + "config": { + "data": { + "children": [ + { + "_resource_child_name": "deck", + "_resource_type": "pylabrobot.resources.opentrons.deck:OTDeck" + } + ], + "backend": { + "type": "LiquidHandlerChatterboxBackend" + } + } + }, + "data": {}, + "children": [ + "deck" + ] + }, + { + "id": "deck", + "name": "deck", + "sample_id": null, + "children": [ + "tip_rack", + "plate_well" + ], + "parent": "PLR_STATION", + "type": "deck", + "class": "OTDeck", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "config": { + "type": "OTDeck", + "with_trash": false, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + } + }, + "data": {} + }, + { + "id": "tip_rack", + "name": "tip_rack", + "sample_id": null, + "children": [ + "tip_rack_A1", + "tip_rack_B1", + "tip_rack_C1", + "tip_rack_D1", + "tip_rack_E1", + "tip_rack_F1", + "tip_rack_G1", + "tip_rack_H1", + "tip_rack_A2", + "tip_rack_B2", + "tip_rack_C2", + "tip_rack_D2", + "tip_rack_E2", + "tip_rack_F2", + "tip_rack_G2", + "tip_rack_H2" + ], + "parent": "deck", + "type": "plate", + "class": "opentrons_96_filtertiprack_1000ul", + "position": { + "x": 0, + "y": 0, + "z": 69 + }, + "config": { + "type": "TipRack", + "size_x": 122.4, + "size_y": 82.6, + "size_z": 20.0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_rack", + "model": "HTF", + "ordering": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A2", + "B2", + "C2", + "D2", + "E2", + "F2", + "G2", + "H2" + ] + }, + "data": {} + }, + { + "id": "tip_rack_A1", + "name": "tip_rack_A1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 68.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_B1", + "name": "tip_rack_B1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 59.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_C1", + "name": "tip_rack_C1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 50.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_D1", + "name": "tip_rack_D1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 41.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_E1", + "name": "tip_rack_E1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 32.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_F1", + "name": "tip_rack_F1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 23.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_G1", + "name": "tip_rack_G1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 14.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_H1", + "name": "tip_rack_H1", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 7.2, + "y": 5.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_A2", + "name": "tip_rack_A2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 68.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_B2", + "name": "tip_rack_B2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 59.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_C2", + "name": "tip_rack_C2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 50.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_D2", + "name": "tip_rack_D2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 41.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_E2", + "name": "tip_rack_E2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 32.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_F2", + "name": "tip_rack_F2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 23.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_G2", + "name": "tip_rack_G2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 14.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "tip_rack_H2", + "name": "tip_rack_H2", + "sample_id": null, + "children": [], + "parent": "tip_rack", + "type": "device", + "class": "", + "position": { + "x": 16.2, + "y": 5.3, + "z": 9.47 + }, + "config": { + "type": "TipSpot", + "size_x": 9.0, + "size_y": 9.0, + "size_z": 0, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "tip_spot", + "model": null, + "prototype_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + }, + "data": { + "tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + }, + "tip_state": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + }, + "pending_tip": { + "type": "Tip", + "total_tip_length": 39.2, + "has_filter": true, + "maximal_volume": 20.0, + "fitting_depth": 3.29 + } + } + }, + { + "id": "plate_well", + "name": "plate_well", + "sample_id": null, + "children": [ + "plate_well_A1", + "plate_well_B1", + "plate_well_C1", + "plate_well_D1", + "plate_well_E1", + "plate_well_F1", + "plate_well_G1", + "plate_well_H1", + "plate_well_A11", + "plate_well_B11", + "plate_well_C11", + "plate_well_D11", + "plate_well_E11", + "plate_well_F11", + "plate_well_G11", + "plate_well_H11" + ], + "parent": "deck", + "type": "plate", + "class": "nest_96_wellplate_2ml_deep", + "position": { + "x": 265.0, + "y": 0, + "z": 69 + }, + "config": { + "type": "Plate", + "size_x": 127.76, + "size_y": 85.48, + "size_z": 14.2, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "plate", + "model": "Cor_96_wellplate_360ul_Fb", + "ordering": [ + "A1", + "B1", + "C1", + "D1", + "E1", + "F1", + "G1", + "H1", + "A11", + "B11", + "C11", + "D11", + "E11", + "F11", + "G11", + "H11" + ] + }, + "data": {} + }, + { + "id": "plate_well_A1", + "name": "plate_well_A1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 70.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_B1", + "name": "plate_well_B1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 61.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_C1", + "name": "plate_well_C1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 52.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_D1", + "name": "plate_well_D1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 43.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_E1", + "name": "plate_well_E1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 34.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_F1", + "name": "plate_well_F1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 25.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_G1", + "name": "plate_well_G1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 16.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_H1", + "name": "plate_well_H1", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 10.87, + "y": 7.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_A11", + "name": "plate_well_A11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 70.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_B11", + "name": "plate_well_B11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 61.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_C11", + "name": "plate_well_C11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 52.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_D11", + "name": "plate_well_D11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 43.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_E11", + "name": "plate_well_E11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 34.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_F11", + "name": "plate_well_F11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 25.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_G11", + "name": "plate_well_G11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 16.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + }, + { + "id": "plate_well_H11", + "name": "plate_well_H11", + "sample_id": null, + "children": [], + "parent": "plate_well", + "type": "device", + "class": "", + "position": { + "x": 100.87, + "y": 7.77, + "z": 3.03 + }, + "config": { + "type": "Well", + "size_x": 6.86, + "size_y": 6.86, + "size_z": 10.67, + "rotation": { + "x": 0, + "y": 0, + "z": 0, + "type": "Rotation" + }, + "category": "well", + "model": null, + "max_volume": 360, + "material_z_thickness": 0.5, + "compute_volume_from_height": null, + "compute_height_from_volume": null, + "bottom_type": "flat", + "cross_section_type": "circle" + }, + "data": { + "liquids": [], + "pending_liquids": [], + "liquid_history": [] + } + } + ], + "links": [] +} \ No newline at end of file diff --git a/test/experiments/test_moveit.json b/test/experiments/test_moveit.json new file mode 100644 index 00000000..41b003b1 --- /dev/null +++ b/test/experiments/test_moveit.json @@ -0,0 +1,35 @@ +{ + "nodes": [ + + { + "id": "benyao", + "name": "benyao", + "children": [ + ], + "parent": null, + "type": "device", + "class": "moveit.arm_slider", + "position": { + "x": 0, + "y": 0, + "z": 0 + }, + "config": { + "moveit_type": "arm_slider", + "joint_poses": { + "arm": { + "home": [0.0, 0.2, 0.0, 0.0, 0.0], + "pick": [1.2, 0.0, 0.0, 0.0, 0.0] + } + }, + "device_config": { + } + }, + "data": { + } + } + ], + "links": [ + + ] +} \ No newline at end of file diff --git a/unilabos/app/main.py b/unilabos/app/main.py index 0db290a0..0f6b2f42 100644 --- a/unilabos/app/main.py +++ b/unilabos/app/main.py @@ -10,6 +10,8 @@ from copy import deepcopy import yaml +from unilabos.resources.graphio import tree_to_list + # 首先添加项目根目录到路径 current_dir = os.path.dirname(os.path.abspath(__file__)) unilabos_dir = os.path.dirname(os.path.dirname(current_dir)) @@ -144,19 +146,19 @@ def main(): else read_graphml(args_dict["graph"]) ) devices_and_resources = dict_from_graph(graph_res.physical_setup_graph) - args_dict["resources_config"] = initialize_resources(list(deepcopy(devices_and_resources).values())) + # args_dict["resources_config"] = initialize_resources(list(deepcopy(devices_and_resources).values())) + args_dict["resources_config"] = list(devices_and_resources.values()) args_dict["devices_config"] = dict_to_nested_dict(deepcopy(devices_and_resources), devices_only=False) - # args_dict["resources_config"] = dict_to_tree(devices_and_resources, devices_only=False) - args_dict["graph"] = graph_res.physical_setup_graph else: if args_dict["devices"] is None or args_dict["resources"] is None: print_status("Either graph or devices and resources must be provided.", "error") sys.exit(1) args_dict["devices_config"] = json.load(open(args_dict["devices"], encoding="utf-8")) - args_dict["resources_config"] = initialize_resources( - list(json.load(open(args_dict["resources"], encoding="utf-8")).values()) - ) + # args_dict["resources_config"] = initialize_resources( + # list(json.load(open(args_dict["resources"], encoding="utf-8")).values()) + # ) + args_dict["resources_config"] = list(json.load(open(args_dict["resources"], encoding="utf-8")).values()) print_status(f"{len(args_dict['resources_config'])} Resources loaded:", "info") for i in args_dict["resources_config"]: diff --git a/unilabos/app/mq.py b/unilabos/app/mq.py index 9f870691..fbd57b93 100644 --- a/unilabos/app/mq.py +++ b/unilabos/app/mq.py @@ -1,6 +1,7 @@ import json import time import traceback +from typing import Optional import uuid import paho.mqtt.client as mqtt @@ -161,12 +162,14 @@ class MQTTClient: status = {"data": device_status.get(device_id, {}), "device_id": device_id} address = f"labs/{MQConfig.lab_id}/devices/" self.client.publish(address, json.dumps(status), qos=2) - logger.critical(f"Device status published: address: {address}, {status}") + logger.debug(f"Device status published: address: {address}, {status}") - def publish_job_status(self, feedback_data: dict, job_id: str, status: str): + def publish_job_status(self, feedback_data: dict, job_id: str, status: str, return_info: Optional[str] = None): if self.mqtt_disable: return - jobdata = {"job_id": job_id, "data": feedback_data, "status": status} + if return_info is None: + return_info = "{}" + jobdata = {"job_id": job_id, "data": feedback_data, "status": status, "return_info": return_info} self.client.publish(f"labs/{MQConfig.lab_id}/job/list/", json.dumps(jobdata), qos=2) def publish_registry(self, device_id: str, device_info: dict): diff --git a/unilabos/app/web/client.py b/unilabos/app/web/client.py index da5d0696..69329489 100644 --- a/unilabos/app/web/client.py +++ b/unilabos/app/web/client.py @@ -30,18 +30,18 @@ class HTTPClient: self.auth = MQConfig.lab_id info(f"HTTPClient 初始化完成: remote_addr={self.remote_addr}") - def resource_add(self, resources: List[Dict[str, Any]]) -> requests.Response: + def resource_add(self, resources: List[Dict[str, Any]], database_process_later:bool) -> requests.Response: """ 添加资源 Args: resources: 要添加的资源列表 - + database_process_later: 后台处理资源 Returns: Response: API响应对象 """ response = requests.post( - f"{self.remote_addr}/lab/resource/", + f"{self.remote_addr}/lab/resource/?database_process_later={1 if database_process_later else 0}", json=resources, headers={"Authorization": f"lab {self.auth}"}, timeout=5, @@ -60,7 +60,7 @@ class HTTPClient: Dict: 返回的资源数据 """ response = requests.get( - f"{self.remote_addr}/lab/resource/", + f"{self.remote_addr}/lab/resource/?edge_format=1", params={"id": id, "with_children": with_children}, headers={"Authorization": f"lab {self.auth}"}, timeout=5, @@ -96,7 +96,7 @@ class HTTPClient: Response: API响应对象 """ response = requests.patch( - f"{self.remote_addr}/lab/resource/batch_update/", + f"{self.remote_addr}/lab/resource/batch_update/?edge_format=1", json=resources, headers={"Authorization": f"lab {self.auth}"}, timeout=5, diff --git a/unilabos/compile/__init__.py b/unilabos/compile/__init__.py index 820f43f1..fa61e12f 100644 --- a/unilabos/compile/__init__.py +++ b/unilabos/compile/__init__.py @@ -5,6 +5,17 @@ from .separate_protocol import generate_separate_protocol from .evaporate_protocol import generate_evaporate_protocol from .evacuateandrefill_protocol import generate_evacuateandrefill_protocol from .agv_transfer_protocol import generate_agv_transfer_protocol +from .add_protocol import generate_add_protocol +from .centrifuge_protocol import generate_centrifuge_protocol +from .filter_protocol import generate_filter_protocol +from .heatchill_protocol import generate_heat_chill_protocol, generate_heat_chill_start_protocol, generate_heat_chill_stop_protocol +from .stir_protocol import generate_stir_protocol, generate_start_stir_protocol, generate_stop_stir_protocol +from .transfer_protocol import generate_transfer_protocol +from .clean_vessel_protocol import generate_clean_vessel_protocol +from .dissolve_protocol import generate_dissolve_protocol +from .filter_through_protocol import generate_filter_through_protocol +from .run_column_protocol import generate_run_column_protocol +from .wash_solid_protocol import generate_wash_solid_protocol # Define a dictionary of protocol generators. @@ -15,5 +26,19 @@ action_protocol_generators = { EvaporateProtocol: generate_evaporate_protocol, EvacuateAndRefillProtocol: generate_evacuateandrefill_protocol, AGVTransferProtocol: generate_agv_transfer_protocol, + CentrifugeProtocol: generate_centrifuge_protocol, + AddProtocol: generate_add_protocol, + FilterProtocol: generate_filter_protocol, + HeatChillProtocol: generate_heat_chill_protocol, + HeatChillStartProtocol: generate_heat_chill_start_protocol, + HeatChillStopProtocol: generate_heat_chill_stop_protocol, + StirProtocol: generate_stir_protocol, + StartStirProtocol: generate_start_stir_protocol, + StopStirProtocol: generate_stop_stir_protocol, + TransferProtocol: generate_transfer_protocol, + CleanVesselProtocol: generate_clean_vessel_protocol, + DissolveProtocol: generate_dissolve_protocol, + FilterThroughProtocol: generate_filter_through_protocol, + RunColumnProtocol: generate_run_column_protocol, + WashSolidProtocol: generate_wash_solid_protocol, } -# End Protocols diff --git a/unilabos/compile/add_protocol.py b/unilabos/compile/add_protocol.py new file mode 100644 index 00000000..e2cdc3c2 --- /dev/null +++ b/unilabos/compile/add_protocol.py @@ -0,0 +1,74 @@ +import networkx as nx +from typing import List, Dict, Any + +def generate_add_protocol( + G: nx.DiGraph, + vessel: str, + reagent: str, + volume: float, + mass: float, + amount: str, + time: float, + stir: bool, + stir_speed: float, + viscous: bool, + purpose: str +) -> List[Dict[str, Any]]: + """ + 生成添加试剂的协议序列 - 严格按照 Add.action + """ + action_sequence = [] + + # 如果指定了体积,执行液体转移 + if volume > 0: + # 查找可用的试剂瓶 + available_flasks = [node for node in G.nodes() + if node.startswith('flask_') + and G.nodes[node].get('type') == 'container'] + + if not available_flasks: + raise ValueError("没有找到可用的试剂容器") + + reagent_vessel = available_flasks[0] + + # 查找泵设备 + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_pump'] + + if pump_nodes: + pump_id = pump_nodes[0] + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": reagent_vessel, + "to_vessel": vessel, + "volume": volume, + "amount": amount, + "time": time, + "viscous": viscous, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 如果需要搅拌,使用 StartStir 而不是 Stir + if stir: + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + if stirrer_nodes: + stirrer_id = stirrer_nodes[0] + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "start_stir", # 使用 start_stir 而不是 stir + "action_kwargs": { + "vessel": vessel, + "stir_speed": stir_speed, + "purpose": f"添加 {reagent} 后搅拌" + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/centrifuge_protocol.py b/unilabos/compile/centrifuge_protocol.py new file mode 100644 index 00000000..e55644d2 --- /dev/null +++ b/unilabos/compile/centrifuge_protocol.py @@ -0,0 +1,123 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_centrifuge_protocol( + G: nx.DiGraph, + vessel: str, + speed: float, + time: float, + temp: float = 25.0 +) -> List[Dict[str, Any]]: + """ + 生成离心操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 离心容器名称 + speed: 离心速度 (rpm) + time: 离心时间 (秒) + temp: 温度 (摄氏度,可选) + + Returns: + List[Dict[str, Any]]: 离心操作的动作序列 + + Raises: + ValueError: 当找不到离心机设备时抛出异常 + + Examples: + centrifuge_protocol = generate_centrifuge_protocol(G, "reactor", 5000, 300, 4.0) + """ + action_sequence = [] + + # 查找离心机设备 + centrifuge_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_centrifuge'] + + if not centrifuge_nodes: + raise ValueError("没有找到可用的离心机设备") + + # 使用第一个可用的离心机 + centrifuge_id = centrifuge_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + # 执行离心操作 + action_sequence.append({ + "device_id": centrifuge_id, + "action_name": "centrifuge", + "action_kwargs": { + "vessel": vessel, + "speed": speed, + "time": time, + "temp": temp + } + }) + + return action_sequence + + +def generate_multi_step_centrifuge_protocol( + G: nx.DiGraph, + vessel: str, + steps: List[Dict[str, Any]] +) -> List[Dict[str, Any]]: + """ + 生成多步骤离心操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 离心容器名称 + steps: 离心步骤列表,每个步骤包含 speed, time, temp 参数 + + Returns: + List[Dict[str, Any]]: 多步骤离心操作的动作序列 + + Examples: + steps = [ + {"speed": 1000, "time": 60, "temp": 4.0}, # 低速预离心 + {"speed": 12000, "time": 600, "temp": 4.0} # 高速离心 + ] + protocol = generate_multi_step_centrifuge_protocol(G, "reactor", steps) + """ + action_sequence = [] + + # 查找离心机设备 + centrifuge_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_centrifuge'] + + if not centrifuge_nodes: + raise ValueError("没有找到可用的离心机设备") + + centrifuge_id = centrifuge_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + # 执行每个离心步骤 + for i, step in enumerate(steps): + speed = step.get('speed', 5000) + time = step.get('time', 300) + temp = step.get('temp', 25.0) + + action_sequence.append({ + "device_id": centrifuge_id, + "action_name": "centrifuge", + "action_kwargs": { + "vessel": vessel, + "speed": speed, + "time": time, + "temp": temp + } + }) + + # 步骤间等待时间(除了最后一步) + if i < len(steps) - 1: + action_sequence.append({ + "action_name": "wait", + "action_kwargs": {"time": 3} + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/clean_vessel_protocol.py b/unilabos/compile/clean_vessel_protocol.py new file mode 100644 index 00000000..d8a746fe --- /dev/null +++ b/unilabos/compile/clean_vessel_protocol.py @@ -0,0 +1,126 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_clean_vessel_protocol( + G: nx.DiGraph, + vessel: str, + solvent: str, + volume: float, + temp: float, + repeats: int = 1 +) -> List[Dict[str, Any]]: + """ + 生成容器清洗操作的协议序列,使用transfer操作实现清洗 + + Args: + G: 有向图,节点为设备和容器 + vessel: 要清洗的容器名称 + solvent: 用于清洗容器的溶剂名称 + volume: 清洗溶剂的体积 + temp: 清洗时的温度 + repeats: 清洗操作的重复次数,默认为 1 + + Returns: + List[Dict[str, Any]]: 容器清洗操作的动作序列 + + Raises: + ValueError: 当找不到必要的设备时抛出异常 + + Examples: + clean_vessel_protocol = generate_clean_vessel_protocol(G, "reactor", "water", 50.0, 25.0, 2) + """ + action_sequence = [] + + # 查找虚拟转移泵设备进行清洗操作 + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备进行容器清洗") + + pump_id = pump_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + # 查找溶剂容器 + solvent_vessel = f"flask_{solvent}" + if solvent_vessel not in G.nodes(): + raise ValueError(f"溶剂容器 {solvent_vessel} 不存在于图中") + + # 查找废液容器 + waste_vessel = "flask_waste" + if waste_vessel not in G.nodes(): + raise ValueError(f"废液容器 {waste_vessel} 不存在于图中") + + # 查找加热设备(如果需要加热) + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + heatchill_id = heatchill_nodes[0] if heatchill_nodes else None + + # 执行清洗操作序列 + for repeat in range(repeats): + # 1. 如果需要加热,先设置温度 + if temp > 25.0 and heatchill_id: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_start", + "action_kwargs": { + "vessel": vessel, + "temp": temp, + "purpose": "cleaning" + } + }) + + # 2. 使用transfer操作:从溶剂容器转移清洗溶剂到目标容器 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": solvent_vessel, + "to_vessel": vessel, + "volume": volume, + "amount": f"cleaning with {solvent} - cycle {repeat + 1}", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 3. 等待清洗作用时间(可选,可以添加wait操作) + # 这里省略wait操作,直接进行下一步 + + # 4. 将清洗后的溶剂转移到废液容器 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": vessel, + "to_vessel": waste_vessel, + "volume": volume, + "amount": f"waste from cleaning {vessel} - cycle {repeat + 1}", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 5. 如果加热了,停止加热 + if temp > 25.0 and heatchill_id: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_stop", + "action_kwargs": { + "vessel": vessel + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/dissolve_protocol.py b/unilabos/compile/dissolve_protocol.py new file mode 100644 index 00000000..eda88cd6 --- /dev/null +++ b/unilabos/compile/dissolve_protocol.py @@ -0,0 +1,162 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_dissolve_protocol( + G: nx.DiGraph, + vessel: str, + solvent: str, + volume: float, + amount: str = "", + temp: float = 25.0, + time: float = 0.0, + stir_speed: float = 0.0 +) -> List[Dict[str, Any]]: + """ + 生成溶解操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 装有要溶解物质的容器名称 + solvent: 用于溶解物质的溶剂名称 + volume: 溶剂的体积,可选参数 + amount: 要溶解物质的量,可选参数 + temp: 溶解时的温度,可选参数 + time: 溶解的时间,可选参数 + stir_speed: 搅拌速度,可选参数 + + Returns: + List[Dict[str, Any]]: 溶解操作的动作序列 + + Raises: + ValueError: 当找不到必要的设备时抛出异常 + + Examples: + dissolve_protocol = generate_dissolve_protocol(G, "reactor", "water", 100.0, "NaCl 5g", 60.0, 300.0, 500.0) + """ + action_sequence = [] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + # 查找溶剂容器 + solvent_vessel = f"flask_{solvent}" + if solvent_vessel not in G.nodes(): + # 如果没有找到特定溶剂容器,查找可用的源容器 + available_vessels = [node for node in G.nodes() + if node.startswith('flask_') and + G.nodes[node].get('type') == 'container'] + if available_vessels: + solvent_vessel = available_vessels[0] + else: + raise ValueError(f"没有找到溶剂容器 {solvent}") + + # 查找转移泵设备 + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备") + + pump_id = pump_nodes[0] + + # 查找加热设备(如果需要加热) + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + heatchill_id = heatchill_nodes[0] if heatchill_nodes else None + + # 查找搅拌设备(如果需要搅拌) + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + stirrer_id = stirrer_nodes[0] if stirrer_nodes else None + + # 步骤1:如果需要加热,先设置温度 + if temp > 25.0 and heatchill_id: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_start", + "action_kwargs": { + "vessel": vessel, + "temp": temp, + "purpose": "dissolution" + } + }) + + # 步骤2:添加溶剂到容器中 + if volume > 0: + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": solvent_vessel, + "to_vessel": vessel, + "volume": volume, + "amount": f"solvent {solvent} for dissolving {amount}", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 步骤3:如果需要搅拌,开始搅拌 + if stir_speed > 0 and stirrer_id: + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "start_stir", + "action_kwargs": { + "vessel": vessel, + "stir_speed": stir_speed, + "purpose": f"dissolving {amount} in {solvent}" + } + }) + + # 步骤4:如果指定了溶解时间,等待溶解完成 + if time > 0: + # 这里可以添加等待操作,或者使用搅拌操作来模拟溶解时间 + if stirrer_id and stir_speed > 0: + # 停止之前的搅拌,使用定时搅拌 + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stop_stir", + "action_kwargs": { + "vessel": vessel + } + }) + + # 开始定时搅拌 + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stir", + "action_kwargs": { + "stir_time": time, + "stir_speed": stir_speed, + "settling_time": 10.0 # 搅拌后静置10秒 + } + }) + + # 步骤5:如果加热了,停止加热 + if temp > 25.0 and heatchill_id: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_stop", + "action_kwargs": { + "vessel": vessel + } + }) + + # 步骤6:如果还在搅拌,停止搅拌(除非已经用定时搅拌) + if stir_speed > 0 and stirrer_id and time == 0: + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stop_stir", + "action_kwargs": { + "vessel": vessel + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/evacuateandrefill_protocol.py b/unilabos/compile/evacuateandrefill_protocol.py index 9cde400f..66e3ca3c 100644 --- a/unilabos/compile/evacuateandrefill_protocol.py +++ b/unilabos/compile/evacuateandrefill_protocol.py @@ -69,14 +69,14 @@ def generate_evacuateandrefill_protocol( "device_id": vacuum_backbone["pump"], "action_name": "set_status", "action_kwargs": { - "command": "ON" + "string": "ON" } }, { "device_id": vacuum_backbone["gas"], "action_name": "set_status", "action_kwargs": { - "command": "OFF" + "string": "OFF" } } ]) @@ -106,14 +106,14 @@ def generate_evacuateandrefill_protocol( "device_id": vacuum_backbone["pump"], "action_name": "set_status", "action_kwargs": { - "command": "OFF" + "string": "OFF" } }, { "device_id": vacuum_backbone["gas"], "action_name": "set_status", "action_kwargs": { - "command": "ON" + "string": "ON" } } ]) @@ -125,7 +125,7 @@ def generate_evacuateandrefill_protocol( "device_id": vacuum_backbone["gas"], "action_name": "set_status", "action_kwargs": { - "command": "OFF" + "string": "OFF" } } ) diff --git a/unilabos/compile/filter_protocol.py b/unilabos/compile/filter_protocol.py new file mode 100644 index 00000000..2847c5dc --- /dev/null +++ b/unilabos/compile/filter_protocol.py @@ -0,0 +1,70 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_filter_protocol( + G: nx.DiGraph, + vessel: str, + filtrate_vessel: str = "", + stir: bool = False, + stir_speed: float = 300.0, + temp: float = 25.0, + continue_heatchill: bool = False, + volume: float = 0.0 +) -> List[Dict[str, Any]]: + """ + 生成过滤操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 过滤容器 + filtrate_vessel: 滤液容器(可选) + stir: 是否搅拌 + stir_speed: 搅拌速度(可选) + temp: 温度(可选,摄氏度) + continue_heatchill: 是否继续加热冷却 + volume: 过滤体积(可选) + + Returns: + List[Dict[str, Any]]: 过滤操作的动作序列 + + Raises: + ValueError: 当找不到过滤设备时抛出异常 + + Examples: + filter_protocol = generate_filter_protocol(G, "reactor", "filtrate_vessel", stir=True, volume=100.0) + """ + action_sequence = [] + + # 查找过滤设备 + filter_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_filter'] + + if not filter_nodes: + raise ValueError("没有找到可用的过滤设备") + + # 使用第一个可用的过滤器 + filter_id = filter_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"过滤容器 {vessel} 不存在于图中") + + if filtrate_vessel and filtrate_vessel not in G.nodes(): + raise ValueError(f"滤液容器 {filtrate_vessel} 不存在于图中") + + # 执行过滤操作 + action_sequence.append({ + "device_id": filter_id, + "action_name": "filter_sample", + "action_kwargs": { + "vessel": vessel, + "filtrate_vessel": filtrate_vessel, + "stir": stir, + "stir_speed": stir_speed, + "temp": temp, + "continue_heatchill": continue_heatchill, + "volume": volume + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/filter_through_protocol.py b/unilabos/compile/filter_through_protocol.py new file mode 100644 index 00000000..009756b1 --- /dev/null +++ b/unilabos/compile/filter_through_protocol.py @@ -0,0 +1,150 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_filter_through_protocol( + G: nx.DiGraph, + from_vessel: str, + to_vessel: str, + filter_through: str, + eluting_solvent: str = "", + eluting_volume: float = 0.0, + eluting_repeats: int = 0, + residence_time: float = 0.0 +) -> List[Dict[str, Any]]: + """ + 生成通过过滤介质过滤的协议序列 + + Args: + G: 有向图,节点为设备和容器 + from_vessel: 源容器的名称,即物质起始所在的容器 + to_vessel: 目标容器的名称,物质过滤后要到达的容器 + filter_through: 过滤时所通过的介质,如滤纸、柱子等 + eluting_solvent: 洗脱溶剂的名称,可选参数 + eluting_volume: 洗脱溶剂的体积,可选参数 + eluting_repeats: 洗脱操作的重复次数,默认为 0 + residence_time: 物质在过滤介质中的停留时间,可选参数 + + Returns: + List[Dict[str, Any]]: 过滤操作的动作序列 + + Raises: + ValueError: 当找不到必要的设备时抛出异常 + + Examples: + filter_through_protocol = generate_filter_through_protocol( + G, "reactor", "collection_flask", "celite", "ethanol", 50.0, 2, 60.0 + ) + """ + action_sequence = [] + + # 验证容器是否存在 + if from_vessel not in G.nodes(): + raise ValueError(f"源容器 {from_vessel} 不存在于图中") + + if to_vessel not in G.nodes(): + raise ValueError(f"目标容器 {to_vessel} 不存在于图中") + + # 查找转移泵设备(用于液体转移) + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备") + + pump_id = pump_nodes[0] + + # 查找过滤设备(可选,如果有专门的过滤设备) + filter_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_filter'] + + filter_id = filter_nodes[0] if filter_nodes else None + + # 查找洗脱溶剂容器(如果需要洗脱) + eluting_vessel = None + if eluting_solvent and eluting_volume > 0: + eluting_vessel = f"flask_{eluting_solvent}" + if eluting_vessel not in G.nodes(): + # 查找可用的溶剂容器 + available_vessels = [node for node in G.nodes() + if node.startswith('flask_') and + G.nodes[node].get('type') == 'container'] + if available_vessels: + eluting_vessel = available_vessels[0] + else: + raise ValueError(f"没有找到洗脱溶剂容器 {eluting_solvent}") + + # 步骤1:将样品从源容器转移到过滤装置(模拟通过过滤介质) + # 这里我们将过滤过程分解为多个转移步骤来模拟通过介质的过程 + + # 首先转移样品(模拟样品通过过滤介质) + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": from_vessel, + "to_vessel": to_vessel, + "volume": 0.0, # 转移所有液体,体积由系统确定 + "amount": f"通过 {filter_through} 过滤", + "time": residence_time if residence_time > 0 else 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": True # 通过过滤介质可能涉及固体分离 + } + }) + + # 步骤2:如果有专门的过滤设备,使用过滤设备处理 + if filter_id: + action_sequence.append({ + "device_id": filter_id, + "action_name": "filter_sample", + "action_kwargs": { + "vessel": to_vessel, + "filtrate_vessel": to_vessel, + "stir": False, + "stir_speed": 0.0, + "temp": 25.0, + "continue_heatchill": False, + "volume": 0.0 + } + }) + + # 步骤3:洗脱操作(如果指定了洗脱溶剂和重复次数) + if eluting_solvent and eluting_volume > 0 and eluting_repeats > 0 and eluting_vessel: + for repeat in range(eluting_repeats): + # 添加洗脱溶剂 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": eluting_vessel, + "to_vessel": to_vessel, + "volume": eluting_volume, + "amount": f"洗脱溶剂 {eluting_solvent} - 第 {repeat + 1} 次", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 如果有过滤设备,再次过滤洗脱液 + if filter_id: + action_sequence.append({ + "device_id": filter_id, + "action_name": "filter_sample", + "action_kwargs": { + "vessel": to_vessel, + "filtrate_vessel": to_vessel, + "stir": False, + "stir_speed": 0.0, + "temp": 25.0, + "continue_heatchill": False, + "volume": eluting_volume + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/heatchill_protocol.py b/unilabos/compile/heatchill_protocol.py new file mode 100644 index 00000000..ac8ca172 --- /dev/null +++ b/unilabos/compile/heatchill_protocol.py @@ -0,0 +1,117 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_heat_chill_protocol( + G: nx.DiGraph, + vessel: str, + temp: float, + time: float, + stir: bool, + stir_speed: float, + purpose: str +) -> List[Dict[str, Any]]: + """ + 生成加热/冷却操作的协议序列 - 严格按照 HeatChill.action + """ + action_sequence = [] + + # 查找加热/冷却设备 + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + if not heatchill_nodes: + raise ValueError("没有找到可用的加热/冷却设备") + + heatchill_id = heatchill_nodes[0] + + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill", + "action_kwargs": { + "vessel": vessel, + "temp": temp, + "time": time, + "stir": stir, + "stir_speed": stir_speed, + "purpose": purpose + } + }) + + return action_sequence + + +def generate_heat_chill_start_protocol( + G: nx.DiGraph, + vessel: str, + temp: float, + purpose: str +) -> List[Dict[str, Any]]: + """ + 生成开始加热/冷却操作的协议序列 - 严格按照 HeatChillStart.action + """ + action_sequence = [] + + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + if not heatchill_nodes: + raise ValueError("没有找到可用的加热/冷却设备") + + heatchill_id = heatchill_nodes[0] + + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_start", + "action_kwargs": { + "vessel": vessel, + "temp": temp, + "purpose": purpose + } + }) + + return action_sequence + + +def generate_heat_chill_stop_protocol( + G: nx.DiGraph, + vessel: str +) -> List[Dict[str, Any]]: + """ + 生成停止加热/冷却操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 容器名称 + + Returns: + List[Dict[str, Any]]: 停止加热/冷却操作的动作序列 + """ + action_sequence = [] + + # 查找加热/冷却设备 + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + if not heatchill_nodes: + raise ValueError("没有找到可用的加热/冷却设备") + + heatchill_id = heatchill_nodes[0] + + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_stop", + "action_kwargs": { + "vessel": vessel + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/pump_protocol.py b/unilabos/compile/pump_protocol.py index 60670286..ffd8efca 100644 --- a/unilabos/compile/pump_protocol.py +++ b/unilabos/compile/pump_protocol.py @@ -24,10 +24,27 @@ def generate_pump_protocol( # 生成泵操作的动作序列 pump_action_sequence = [] - nodes = G.nodes(data=True) - # 从from_vessel到to_vessel的最短路径 - shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel) - print(shortest_path) + + # 检查节点是否存在 + if from_vessel not in G.nodes: + print(f"Warning: Source vessel '{from_vessel}' not found in graph. Skipping.") + return [] + + if to_vessel not in G.nodes: + print(f"Warning: Target vessel '{to_vessel}' not found in graph. Skipping.") + return [] + + # 检查是否存在路径 + try: + shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel) + except nx.NetworkXNoPath: + print(f"Warning: No path from '{from_vessel}' to '{to_vessel}'. Skipping.") + return [] + except nx.NodeNotFound as e: + print(f"Warning: Node not found: {e}. Skipping.") + return [] + + print(f"Shortest path: {shortest_path}") pump_backbone = shortest_path if not from_vessel.startswith("pump"): @@ -35,10 +52,34 @@ def generate_pump_protocol( if not to_vessel.startswith("pump"): pump_backbone = pump_backbone[:-1] + print(f"Pump backbone: {pump_backbone}") + + # 修复:检查pump_backbone是否为空 + if not pump_backbone: + print(f"Warning: No pumps found in path from '{from_vessel}' to '{to_vessel}'. Skipping.") + return [] + if transfer_flowrate == 0: transfer_flowrate = flowrate - min_transfer_volume = min([nodes[pump]["max_volume"] for pump in pump_backbone]) + # 修复:正确访问节点数据 + pump_max_volumes = [] + for pump in pump_backbone: + # 直接使用 G.nodes[pump] 来访问节点数据 + pump_data = G.nodes[pump] if pump in G.nodes else {} + # 尝试多种可能的键名,并提供默认值 + max_vol = pump_data.get('max_volume') or pump_data.get('max_vol') or pump_data.get('volume') + if max_vol is None: + # 如果是设备节点,尝试从config中获取 + config = pump_data.get('config', {}) + max_vol = config.get('max_volume', 25.0) + pump_max_volumes.append(float(max_vol)) + + if pump_max_volumes: + min_transfer_volume = min(pump_max_volumes) + else: + min_transfer_volume = 25.0 # 默认值 + repeats = int(np.ceil(volume / min_transfer_volume)) if repeats > 1 and (from_vessel.startswith("pump") or to_vessel.startswith("pump")): raise ValueError("Cannot transfer volume larger than min_transfer_volume between two pumps.") @@ -48,84 +89,102 @@ def generate_pump_protocol( # 生成泵操作的动作序列 for i in range(repeats): # 单泵依次执行阀指令、活塞指令,将液体吸入与之相连的第一台泵 - if not from_vessel.startswith("pump"): - pump_action_sequence.extend([ - { - "device_id": pump_backbone[0], - "action_name": "set_valve_position", - "action_kwargs": { - "command": G.get_edge_data(pump_backbone[0], from_vessel)["port"][pump_backbone[0]] + if not from_vessel.startswith("pump") and pump_backbone: + # 修复:添加边缘数据检查 + edge_data = G.get_edge_data(pump_backbone[0], from_vessel) + if edge_data and "port" in edge_data: + pump_action_sequence.extend([ + { + "device_id": pump_backbone[0], + "action_name": "set_valve_position", + "action_kwargs": { + "command": edge_data["port"][pump_backbone[0]] + } + }, + { + "device_id": pump_backbone[0], + "action_name": "set_position", + "action_kwargs": { + "position": float(min(volume_left, min_transfer_volume)), + "max_velocity": transfer_flowrate + } } - }, - { - "device_id": pump_backbone[0], - "action_name": "set_position", - "action_kwargs": { - "position": float(min(volume_left, min_transfer_volume)), - "max_velocity": transfer_flowrate - } - } - ]) - pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) - for pumpA, pumpB in zip(pump_backbone[:-1], pump_backbone[1:]): - # 相邻两泵同时切换阀门至连通位置 - pump_action_sequence.append([ - { - "device_id": pumpA, - "action_name": "set_valve_position", - "action_kwargs": { - "command": G.get_edge_data(pumpA, pumpB)["port"][pumpA] - } - }, - { - "device_id": pumpB, - "action_name": "set_valve_position", - "action_kwargs": { - "command": G.get_edge_data(pumpB, pumpA)["port"][pumpB], - } - } - ]) - # 相邻两泵液体转移:泵A排出液体,泵B吸入液体 - pump_action_sequence.append([ - { - "device_id": pumpA, - "action_name": "set_position", - "action_kwargs": { - "position": 0.0, - "max_velocity": transfer_flowrate - } - }, - { - "device_id": pumpB, - "action_name": "set_position", - "action_kwargs": { - "position": float(min(volume_left, min_transfer_volume)), - "max_velocity": transfer_flowrate - } - } - ]) - pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) + ]) + pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) + else: + print(f"Warning: No edge data found between {pump_backbone[0]} and {from_vessel}") - if not to_vessel.startswith("pump"): + # 修复:检查pump_backbone长度,避免多泵操作时出错 + if len(pump_backbone) > 1: + for pumpA, pumpB in zip(pump_backbone[:-1], pump_backbone[1:]): + # 相邻两泵同时切换阀门至连通位置 + edge_AB = G.get_edge_data(pumpA, pumpB) + edge_BA = G.get_edge_data(pumpB, pumpA) + + if edge_AB and "port" in edge_AB and edge_BA and "port" in edge_BA: + pump_action_sequence.append([ + { + "device_id": pumpA, + "action_name": "set_valve_position", + "action_kwargs": { + "command": edge_AB["port"][pumpA] + } + }, + { + "device_id": pumpB, + "action_name": "set_valve_position", + "action_kwargs": { + "command": edge_BA["port"][pumpB], + } + } + ]) + # 相邻两泵液体转移:泵A排出液体,泵B吸入液体 + pump_action_sequence.append([ + { + "device_id": pumpA, + "action_name": "set_position", + "action_kwargs": { + "position": 0.0, + "max_velocity": transfer_flowrate + } + }, + { + "device_id": pumpB, + "action_name": "set_position", + "action_kwargs": { + "position": float(min(volume_left, min_transfer_volume)), + "max_velocity": transfer_flowrate + } + } + ]) + pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) + else: + print(f"Warning: No edge data found between {pumpA} and {pumpB}") + + if not to_vessel.startswith("pump") and pump_backbone: # 单泵依次执行阀指令、活塞指令,将最后一台泵液体缓慢加入容器B - pump_action_sequence.extend([ - { - "device_id": pump_backbone[-1], - "action_name": "set_valve_position", - "action_kwargs": { - "command": G.get_edge_data(pump_backbone[-1], to_vessel)["port"][pump_backbone[-1]] + edge_data = G.get_edge_data(pump_backbone[-1], to_vessel) + if edge_data and "port" in edge_data: + pump_action_sequence.extend([ + { + "device_id": pump_backbone[-1], + "action_name": "set_valve_position", + "action_kwargs": { + "command": edge_data["port"][pump_backbone[-1]] + } + }, + { + "device_id": pump_backbone[-1], + "action_name": "set_position", + "action_kwargs": { + "position": 0.0, + "max_velocity": flowrate + } } - }, - { - "device_id": pump_backbone[-1], - "action_name": "set_position", - "action_kwargs": { - "position": 0.0, - "max_velocity": flowrate - } - } - ]) - pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) + ]) + pump_action_sequence.append({"action_name": "wait", "action_kwargs": {"time": 5}}) + else: + print(f"Warning: No edge data found between {pump_backbone[-1]} and {to_vessel}") volume_left -= min_transfer_volume return pump_action_sequence @@ -174,18 +233,52 @@ def generate_pump_protocol_with_rinsing( Examples: pump_protocol = generate_pump_protocol_with_rinsing(G, "vessel_A", "vessel_B", 0.1, rinsing_solvent="water") """ - air_vessel = "flask_air" - waste_vessel = f"waste_workup" + # 修复:使用实际存在的节点名称 + air_vessel = "flask_air" # 这个在你的配置中存在 - shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel) - pump_backbone = shortest_path[1: -1] - nodes = G.nodes(data=True) - min_transfer_volume = float(min([nodes[pump]["max_volume"] for pump in pump_backbone])) + # 寻找合适的废料容器,如果没有找到则使用空的容器作为替代 + waste_vessel = None + available_vessels = [node for node in G.nodes if node.startswith("flask_") and node != air_vessel] + if available_vessels: + # 使用第一个可用的容器作为废料容器 + waste_vessel = available_vessels[0] + print(f"Using {waste_vessel} as waste vessel") + else: + waste_vessel = "flask_1" # 备用选择 + + # 修复:添加路径检查 + try: + shortest_path = nx.shortest_path(G, source=from_vessel, target=to_vessel) + pump_backbone = shortest_path[1: -1] + except (nx.NetworkXNoPath, nx.NodeNotFound) as e: + print(f"Warning: Cannot find path from {from_vessel} to {to_vessel}: {e}") + return [] + + # 修复:正确访问节点数据 + pump_max_volumes = [] + for pump in pump_backbone: + # 直接使用 G.nodes[pump] 来访问节点数据 + pump_data = G.nodes[pump] if pump in G.nodes else {} + # 尝试多种可能的键名,并提供默认值 + max_vol = pump_data.get('max_volume') or pump_data.get('max_vol') or pump_data.get('volume') + if max_vol is None: + # 如果是设备节点,尝试从config中获取 + config = pump_data.get('config', {}) + max_vol = config.get('max_volume', 25.0) + pump_max_volumes.append(float(max_vol)) + + if pump_max_volumes: + min_transfer_volume = float(min(pump_max_volumes)) + else: + min_transfer_volume = 25.0 # 默认值 + if time != 0: flowrate = transfer_flowrate = volume / time pump_action_sequence = generate_pump_protocol(G, from_vessel, to_vessel, float(volume), flowrate, transfer_flowrate) - if rinsing_solvent != "air": + + # 修复:只在需要清洗且相关节点存在时才执行清洗步骤 + if rinsing_solvent != "air" and pump_backbone: if "," in rinsing_solvent: rinsing_solvents = rinsing_solvent.split(",") assert len(rinsing_solvents) == rinsing_repeats, "Number of rinsing solvents must match number of rinsing repeats." @@ -194,20 +287,32 @@ def generate_pump_protocol_with_rinsing( for rinsing_solvent in rinsing_solvents: solvent_vessel = f"flask_{rinsing_solvent}" - # 清洗泵 - pump_action_sequence.extend( - generate_pump_protocol(G, solvent_vessel, pump_backbone[0], min_transfer_volume, flowrate, transfer_flowrate) + - generate_pump_protocol(G, pump_backbone[0], pump_backbone[-1], min_transfer_volume, flowrate, transfer_flowrate) + - generate_pump_protocol(G, pump_backbone[-1], waste_vessel, min_transfer_volume, flowrate, transfer_flowrate) - ) - # 如果转移的是溶液,第一种冲洗溶剂请选用溶液的溶剂,稀释泵内、转移管道内的溶液。后续冲洗溶剂不需要此操作。 - if rinsing_solvent == rinsing_solvents[0]: - pump_action_sequence.extend(generate_pump_protocol(G, solvent_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate)) - pump_action_sequence.extend(generate_pump_protocol(G, solvent_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate)) - pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, solvent_vessel, rinsing_volume, flowrate, transfer_flowrate)) - pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, waste_vessel, rinsing_volume, flowrate, transfer_flowrate)) - pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2) - pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2) + + # 检查溶剂容器是否存在 + if solvent_vessel not in G.nodes: + print(f"Warning: Solvent vessel '{solvent_vessel}' not found in graph. Skipping rinsing step.") + continue + + # 清洗泵 - 只有当所有必需的节点都存在且pump_backbone不为空时才执行 + if pump_backbone and len(pump_backbone) > 0 and waste_vessel in G.nodes: + pump_action_sequence.extend( + generate_pump_protocol(G, solvent_vessel, pump_backbone[0], min_transfer_volume, flowrate, transfer_flowrate) + + generate_pump_protocol(G, pump_backbone[0], pump_backbone[-1], min_transfer_volume, flowrate, transfer_flowrate) + + generate_pump_protocol(G, pump_backbone[-1], waste_vessel, min_transfer_volume, flowrate, transfer_flowrate) + ) + + # 如果转移的是溶液,第一种冲洗溶剂请选用溶液的溶剂,稀释泵内、转移管道内的溶液。后续冲洗溶剂不需要此操作。 + if rinsing_solvent == rinsing_solvents[0]: + pump_action_sequence.extend(generate_pump_protocol(G, solvent_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate)) + pump_action_sequence.extend(generate_pump_protocol(G, solvent_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate)) + + pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, solvent_vessel, rinsing_volume, flowrate, transfer_flowrate)) + pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, waste_vessel, rinsing_volume, flowrate, transfer_flowrate)) + + # 最后的空气清洗 - 只有当节点存在时才执行 + if air_vessel in G.nodes: + pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, from_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2) + pump_action_sequence.extend(generate_pump_protocol(G, air_vessel, to_vessel, rinsing_volume, flowrate, transfer_flowrate) * 2) return pump_action_sequence # End Protocols diff --git a/unilabos/compile/run_column_protocol.py b/unilabos/compile/run_column_protocol.py new file mode 100644 index 00000000..5aebc2b6 --- /dev/null +++ b/unilabos/compile/run_column_protocol.py @@ -0,0 +1,102 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_run_column_protocol( + G: nx.DiGraph, + from_vessel: str, + to_vessel: str, + column: str +) -> List[Dict[str, Any]]: + """ + 生成柱层析分离的协议序列 + + Args: + G: 有向图,节点为设备和容器 + from_vessel: 源容器的名称,即样品起始所在的容器 + to_vessel: 目标容器的名称,分离后的样品要到达的容器 + column: 所使用的柱子的名称 + + Returns: + List[Dict[str, Any]]: 柱层析分离操作的动作序列 + + Raises: + ValueError: 当找不到必要的设备时抛出异常 + + Examples: + run_column_protocol = generate_run_column_protocol(G, "reactor", "collection_flask", "silica_column") + """ + action_sequence = [] + + # 验证容器是否存在 + if from_vessel not in G.nodes(): + raise ValueError(f"源容器 {from_vessel} 不存在于图中") + + if to_vessel not in G.nodes(): + raise ValueError(f"目标容器 {to_vessel} 不存在于图中") + + # 查找转移泵设备(用于样品转移) + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备") + + pump_id = pump_nodes[0] + + # 查找柱层析设备 + column_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_column'] + + if not column_nodes: + raise ValueError("没有找到可用的柱层析设备") + + column_id = column_nodes[0] + + # 步骤1:将样品从源容器转移到柱子上 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": from_vessel, + "to_vessel": column_id, # 将样品转移到柱子设备 + "volume": 0.0, # 转移所有液体,体积由系统确定 + "amount": f"样品上柱 - 使用 {column}", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 步骤2:运行柱层析分离 + action_sequence.append({ + "device_id": column_id, + "action_name": "run_column", + "action_kwargs": { + "from_vessel": from_vessel, + "to_vessel": to_vessel, + "column": column + } + }) + + # 步骤3:将分离后的产物从柱子转移到目标容器 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": column_id, # 从柱子设备转移 + "to_vessel": to_vessel, + "volume": 0.0, # 转移所有液体,体积由系统确定 + "amount": f"收集分离产物 - 来自 {column}", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/stir_protocol.py b/unilabos/compile/stir_protocol.py new file mode 100644 index 00000000..90a207cd --- /dev/null +++ b/unilabos/compile/stir_protocol.py @@ -0,0 +1,137 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_stir_protocol( + G: nx.DiGraph, + stir_time: float, + stir_speed: float, + settling_time: float +) -> List[Dict[str, Any]]: + """ + 生成搅拌操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + stir_time: 搅拌时间 (秒) + stir_speed: 搅拌速度 (rpm) + settling_time: 沉降时间 (秒) + + Returns: + List[Dict[str, Any]]: 搅拌操作的动作序列 + + Raises: + ValueError: 当找不到搅拌设备时抛出异常 + + Examples: + stir_protocol = generate_stir_protocol(G, 300.0, 500.0, 60.0) + """ + action_sequence = [] + + # 查找搅拌设备 + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + if not stirrer_nodes: + raise ValueError("没有找到可用的搅拌设备") + + # 使用第一个可用的搅拌器 + stirrer_id = stirrer_nodes[0] + + # 执行搅拌操作 + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stir", + "action_kwargs": { + "stir_time": stir_time, + "stir_speed": stir_speed, + "settling_time": settling_time + } + }) + + return action_sequence + + +def generate_start_stir_protocol( + G: nx.DiGraph, + vessel: str, + stir_speed: float, + purpose: str +) -> List[Dict[str, Any]]: + """ + 生成开始搅拌操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 搅拌容器 + stir_speed: 搅拌速度 (rpm) + purpose: 搅拌目的 + + Returns: + List[Dict[str, Any]]: 开始搅拌操作的动作序列 + """ + action_sequence = [] + + # 查找搅拌设备 + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + if not stirrer_nodes: + raise ValueError("没有找到可用的搅拌设备") + + stirrer_id = stirrer_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "start_stir", + "action_kwargs": { + "vessel": vessel, + "stir_speed": stir_speed, + "purpose": purpose + } + }) + + return action_sequence + + +def generate_stop_stir_protocol( + G: nx.DiGraph, + vessel: str +) -> List[Dict[str, Any]]: + """ + 生成停止搅拌操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 搅拌容器 + + Returns: + List[Dict[str, Any]]: 停止搅拌操作的动作序列 + """ + action_sequence = [] + + # 查找搅拌设备 + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + if not stirrer_nodes: + raise ValueError("没有找到可用的搅拌设备") + + stirrer_id = stirrer_nodes[0] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"容器 {vessel} 不存在于图中") + + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stop_stir", + "action_kwargs": { + "vessel": vessel + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/transfer_protocol.py b/unilabos/compile/transfer_protocol.py new file mode 100644 index 00000000..202b009f --- /dev/null +++ b/unilabos/compile/transfer_protocol.py @@ -0,0 +1,79 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_transfer_protocol( + G: nx.DiGraph, + from_vessel: str, + to_vessel: str, + volume: float, + amount: str = "", + time: float = 0, + viscous: bool = False, + rinsing_solvent: str = "", + rinsing_volume: float = 0.0, + rinsing_repeats: int = 0, + solid: bool = False +) -> List[Dict[str, Any]]: + """ + 生成液体转移操作的协议序列 + + Args: + G: 有向图,节点为设备和容器 + from_vessel: 源容器 + to_vessel: 目标容器 + volume: 转移体积 (mL) + amount: 数量描述 (可选) + time: 转移时间 (秒,可选) + viscous: 是否为粘性液体 + rinsing_solvent: 冲洗溶剂 (可选) + rinsing_volume: 冲洗体积 (mL,可选) + rinsing_repeats: 冲洗重复次数 + solid: 是否涉及固体 + + Returns: + List[Dict[str, Any]]: 转移操作的动作序列 + + Raises: + ValueError: 当找不到合适的转移设备时抛出异常 + + Examples: + transfer_protocol = generate_transfer_protocol(G, "flask_1", "reactor", 10.0) + """ + action_sequence = [] + + # 查找虚拟转移泵设备用于液体转移 - 修复:应该查找 virtual_transfer_pump + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备进行液体转移") + + # 使用第一个可用的泵 + pump_id = pump_nodes[0] + + # 验证容器是否存在 + if from_vessel not in G.nodes(): + raise ValueError(f"源容器 {from_vessel} 不存在于图中") + + if to_vessel not in G.nodes(): + raise ValueError(f"目标容器 {to_vessel} 不存在于图中") + + # 执行液体转移操作 - 参数完全匹配Transfer.action + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": from_vessel, + "to_vessel": to_vessel, + "volume": volume, + "amount": amount, + "time": time, + "viscous": viscous, + "rinsing_solvent": rinsing_solvent, + "rinsing_volume": rinsing_volume, + "rinsing_repeats": rinsing_repeats, + "solid": solid + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/compile/wash_solid_protocol.py b/unilabos/compile/wash_solid_protocol.py new file mode 100644 index 00000000..a792b8f0 --- /dev/null +++ b/unilabos/compile/wash_solid_protocol.py @@ -0,0 +1,216 @@ +from typing import List, Dict, Any +import networkx as nx + +def generate_wash_solid_protocol( + G: nx.DiGraph, + vessel: str, + solvent: str, + volume: float, + filtrate_vessel: str = "", + temp: float = 25.0, + stir: bool = False, + stir_speed: float = 0.0, + time: float = 0.0, + repeats: int = 1 +) -> List[Dict[str, Any]]: + """ + 生成固体清洗的协议序列 + + Args: + G: 有向图,节点为设备和容器 + vessel: 装有固体物质的容器名称 + solvent: 用于清洗固体的溶剂名称 + volume: 清洗溶剂的体积 + filtrate_vessel: 滤液要收集到的容器名称,可选参数 + temp: 清洗时的温度,可选参数 + stir: 是否在清洗过程中搅拌,默认为 False + stir_speed: 搅拌速度,可选参数 + time: 清洗的时间,可选参数 + repeats: 清洗操作的重复次数,默认为 1 + + Returns: + List[Dict[str, Any]]: 固体清洗操作的动作序列 + + Raises: + ValueError: 当找不到必要的设备时抛出异常 + + Examples: + wash_solid_protocol = generate_wash_solid_protocol( + G, "reactor", "ethanol", 100.0, "waste_flask", 60.0, True, 300.0, 600.0, 3 + ) + """ + action_sequence = [] + + # 验证容器是否存在 + if vessel not in G.nodes(): + raise ValueError(f"固体容器 {vessel} 不存在于图中") + + if filtrate_vessel and filtrate_vessel not in G.nodes(): + raise ValueError(f"滤液容器 {filtrate_vessel} 不存在于图中") + + # 查找转移泵设备(用于添加溶剂和转移滤液) + pump_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_transfer_pump'] + + if not pump_nodes: + raise ValueError("没有找到可用的转移泵设备") + + pump_id = pump_nodes[0] + + # 查找加热设备(如果需要加热) + heatchill_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_heatchill'] + + heatchill_id = heatchill_nodes[0] if heatchill_nodes else None + + # 查找搅拌设备(如果需要搅拌) + stirrer_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_stirrer'] + + stirrer_id = stirrer_nodes[0] if stirrer_nodes else None + + # 查找过滤设备(用于分离固体和滤液) + filter_nodes = [node for node in G.nodes() + if G.nodes[node].get('class') == 'virtual_filter'] + + filter_id = filter_nodes[0] if filter_nodes else None + + # 查找溶剂容器 + solvent_vessel = f"flask_{solvent}" + if solvent_vessel not in G.nodes(): + # 如果没有找到特定溶剂容器,查找可用的源容器 + available_vessels = [node for node in G.nodes() + if node.startswith('flask_') and + G.nodes[node].get('type') == 'container'] + if available_vessels: + solvent_vessel = available_vessels[0] + else: + raise ValueError(f"没有找到溶剂容器 {solvent}") + + # 如果没有指定滤液容器,使用废液容器 + if not filtrate_vessel: + waste_vessels = [node for node in G.nodes() + if 'waste' in node.lower() and + G.nodes[node].get('type') == 'container'] + filtrate_vessel = waste_vessels[0] if waste_vessels else "waste_flask" + + # 重复清洗操作 + for repeat in range(repeats): + repeat_num = repeat + 1 + + # 步骤1:如果需要加热,先设置温度 + if temp > 25.0 and heatchill_id: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_start", + "action_kwargs": { + "vessel": vessel, + "temp": temp, + "purpose": f"固体清洗 - 第 {repeat_num} 次" + } + }) + + # 步骤2:添加清洗溶剂到固体容器 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": solvent_vessel, + "to_vessel": vessel, + "volume": volume, + "amount": f"清洗溶剂 {solvent} - 第 {repeat_num} 次", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 步骤3:如果需要搅拌,开始搅拌 + if stir and stir_speed > 0 and stirrer_id: + if time > 0: + # 定时搅拌 + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stir", + "action_kwargs": { + "stir_time": time, + "stir_speed": stir_speed, + "settling_time": 30.0 # 搅拌后静置30秒 + } + }) + else: + # 开始搅拌(需要手动停止) + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "start_stir", + "action_kwargs": { + "vessel": vessel, + "stir_speed": stir_speed, + "purpose": f"固体清洗搅拌 - 第 {repeat_num} 次" + } + }) + + # 步骤4:如果指定了清洗时间但没有搅拌,等待清洗时间 + if time > 0 and (not stir or stir_speed == 0): + # 这里可以添加等待操作,暂时跳过 + pass + + # 步骤5:如果有搅拌且没有定时,停止搅拌 + if stir and stir_speed > 0 and time == 0 and stirrer_id: + action_sequence.append({ + "device_id": stirrer_id, + "action_name": "stop_stir", + "action_kwargs": { + "vessel": vessel + } + }) + + # 步骤6:过滤分离固体和滤液 + if filter_id: + action_sequence.append({ + "device_id": filter_id, + "action_name": "filter_sample", + "action_kwargs": { + "vessel": vessel, + "filtrate_vessel": filtrate_vessel, + "stir": False, + "stir_speed": 0.0, + "temp": temp, + "continue_heatchill": temp > 25.0, + "volume": volume + } + }) + else: + # 没有专门的过滤设备,使用转移泵模拟过滤过程 + # 将滤液转移到滤液容器 + action_sequence.append({ + "device_id": pump_id, + "action_name": "transfer", + "action_kwargs": { + "from_vessel": vessel, + "to_vessel": filtrate_vessel, + "volume": volume, + "amount": f"转移滤液 - 第 {repeat_num} 次清洗", + "time": 0.0, + "viscous": False, + "rinsing_solvent": "", + "rinsing_volume": 0.0, + "rinsing_repeats": 0, + "solid": False + } + }) + + # 步骤7:如果加热了,停止加热(在最后一次清洗后) + if temp > 25.0 and heatchill_id and repeat_num == repeats: + action_sequence.append({ + "device_id": heatchill_id, + "action_name": "heat_chill_stop", + "action_kwargs": { + "vessel": vessel + } + }) + + return action_sequence \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/initial_positions.yaml b/unilabos/device_mesh/devices/arm_slider/config/initial_positions.yaml new file mode 100644 index 00000000..94fb9f55 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/initial_positions.yaml @@ -0,0 +1,9 @@ +# Default initial positions for full_dev's ros2_control fake system + +initial_positions: + arm_base_joint: 0 + arm_link_1_joint: 0 + arm_link_2_joint: 0 + arm_link_3_joint: 0 + gripper_base_joint: 0 + gripper_right_joint: 0.03 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/joint_limits.yaml b/unilabos/device_mesh/devices/arm_slider/config/joint_limits.yaml new file mode 100644 index 00000000..d4dffc37 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/joint_limits.yaml @@ -0,0 +1,40 @@ +# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed + +# For beginners, we downscale velocity and acceleration limits. +# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed. +default_velocity_scaling_factor: 0.1 +default_acceleration_scaling_factor: 0.1 + +# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] +# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] +joint_limits: + arm_base_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + arm_link_1_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + arm_link_2_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + arm_link_3_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + gripper_base_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + gripper_right_joint: + has_velocity_limits: true + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/kinematics.yaml b/unilabos/device_mesh/devices/arm_slider/config/kinematics.yaml new file mode 100644 index 00000000..c9a5d608 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/kinematics.yaml @@ -0,0 +1,4 @@ +arm: + kinematics_solver: lma_kinematics_plugin/LMAKinematicsPlugin + kinematics_solver_search_resolution: 0.0050000000000000001 + kinematics_solver_timeout: 0.0050000000000000001 diff --git a/unilabos/device_mesh/devices/arm_slider/config/macro.ros2_control.xacro b/unilabos/device_mesh/devices/arm_slider/config/macro.ros2_control.xacro new file mode 100644 index 00000000..026d977d --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/macro.ros2_control.xacro @@ -0,0 +1,56 @@ + + + + + + + + + mock_components/GenericSystem + + + + + ${initial_positions['arm_base_joint']} + + + + + + + ${initial_positions['arm_link_1_joint']} + + + + + + + ${initial_positions['arm_link_2_joint']} + + + + + + + ${initial_positions['arm_link_3_joint']} + + + + + + + ${initial_positions['gripper_base_joint']} + + + + + + + ${initial_positions['gripper_right_joint']} + + + + + + + diff --git a/unilabos/device_mesh/devices/arm_slider/config/macro.srdf.xacro b/unilabos/device_mesh/devices/arm_slider/config/macro.srdf.xacro new file mode 100644 index 00000000..9c3ef9d4 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/macro.srdf.xacro @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/arm_slider/config/move_group.json b/unilabos/device_mesh/devices/arm_slider/config/move_group.json new file mode 100644 index 00000000..5be9ad34 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/move_group.json @@ -0,0 +1,14 @@ +{ + "arm": + { + "joint_names": [ + "arm_base_joint", + "arm_link_1_joint", + "arm_link_2_joint", + "arm_link_3_joint", + "gripper_base_joint" + ], + "base_link_name": "device_link", + "end_effector_name": "gripper_base" + } +} \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/moveit_controllers.yaml b/unilabos/device_mesh/devices/arm_slider/config/moveit_controllers.yaml new file mode 100644 index 00000000..70a1b55d --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/moveit_controllers.yaml @@ -0,0 +1,29 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - arm_controller + - gripper_controller + + arm_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - arm_base_joint + - arm_link_1_joint + - arm_link_2_joint + - arm_link_3_joint + - gripper_base_joint + action_ns: follow_joint_trajectory + default: true + gripper_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - gripper_right_joint + action_ns: follow_joint_trajectory + default: true \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/moveit_planners.yaml b/unilabos/device_mesh/devices/arm_slider/config/moveit_planners.yaml new file mode 100644 index 00000000..8560e1cb --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/moveit_planners.yaml @@ -0,0 +1,2 @@ +planner_configs: + - ompl_interface/OMPLPlanner \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/config/pilz_cartesian_limits.yaml b/unilabos/device_mesh/devices/arm_slider/config/pilz_cartesian_limits.yaml new file mode 100644 index 00000000..b2997caf --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/pilz_cartesian_limits.yaml @@ -0,0 +1,6 @@ +# Limits for the Pilz planner +cartesian_limits: + max_trans_vel: 1.0 + max_trans_acc: 2.25 + max_trans_dec: -5.0 + max_rot_vel: 1.57 diff --git a/unilabos/device_mesh/devices/arm_slider/config/ros2_controllers.yaml b/unilabos/device_mesh/devices/arm_slider/config/ros2_controllers.yaml new file mode 100644 index 00000000..9c68cbf1 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/config/ros2_controllers.yaml @@ -0,0 +1,39 @@ +# This config file is used by ros2_control +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + arm_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + gripper_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + +arm_controller: + ros__parameters: + joints: + - arm_base_joint + - arm_link_1_joint + - arm_link_2_joint + - arm_link_3_joint + - gripper_base_joint + command_interfaces: + - position + state_interfaces: + - position + - velocity + +gripper_controller: + ros__parameters: + joints: + - gripper_right_joint + command_interfaces: + - position + state_interfaces: + - position + - velocity \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/joint_limit.yaml b/unilabos/device_mesh/devices/arm_slider/joint_limit.yaml new file mode 100644 index 00000000..b1412620 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/joint_limit.yaml @@ -0,0 +1,44 @@ +joint_limits: + + arm_base_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 1.5 + + arm_link_1_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.6 + + arm_link_2_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -95 + upper: !degrees 95 + + arm_link_3_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -195 + upper: !degrees 195 + + gripper_base_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -95 + upper: !degrees 95 + + + gripper_right_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.03 + + gripper_left_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.03 diff --git a/unilabos/device_mesh/devices/arm_slider/macro_device.xacro b/unilabos/device_mesh/devices/arm_slider/macro_device.xacro new file mode 100644 index 00000000..871229d8 --- /dev/null +++ b/unilabos/device_mesh/devices/arm_slider/macro_device.xacro @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/arm_base.STL b/unilabos/device_mesh/devices/arm_slider/meshes/arm_base.STL new file mode 100644 index 0000000000000000000000000000000000000000..804e1c693008460edf6e8fd90bb526a1370579a8 GIT binary patch literal 269384 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 z zHg#X0=4s4%t3-M#qHA#V2|_j6+On;vtjg3NK~F_=4OR&W+ltDqD>X>aQxRQ*RYJnH zqH>i;4HEQJ#H7LXs<8Un;uUGa|MAu-Is3#_DD@s|Y>x!O==o(yoNZ3}CW^=78 z67*EWq|x?+x-#MYplwCv6Dv-7?Xs@usfex-Z)!S=_p3FH|G$niNJ1EfVIV)_=e&)| zw$gPGH_yl$kwhdtg@kK$@txe)iv*QKvVu{@ls`a;r5Uv$;#n%6c$ zuBarUJ$U+%aIG%Aesldd$AbiwM6?HUMZ&eZ_!9Wp^U4*KL@bX=2?^JphtqRBiqN=L z644$!uSmF7msa7<6$vVdXb{oPI_5$(a0 zkZ`T8S%vW+K_wCG@yyk=gEf|EbPSRTw(jb+;N@ZI&BD=Ud;52i%F#Dr^g zX%+H4NF@>N@ywOSGOeyTC1$NiP)Wq{aISRr)mRr@wYuiC+a5(wNkn__RwLnBU2|%W z2MH>PXb+}@gll!p?K2)Es3c-}RIW(4_B@=0ohyxNB@ykxTaAQkb!ioxh4anu)-6LN V5$(a0kZ`Ro?PmVIqLPUA_yR}7D6s$l literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_1.STL b/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_1.STL new file mode 100644 index 0000000000000000000000000000000000000000..dd1d7c14eea708005e7d9ecf2f1778ea926763fc GIT binary patch literal 6184 zcmb`Le`r-@7{_0nO4(dunhkD&G#%Jznj2;FoHGzzYjZISDwv!5!_cxIwM9DFuvuhl zGbHIslQO-NIdg7nrQLH+b8OJKj0stW`G zzwgiIdEcwl|NFOtn)_pVske1?^?L)b7Jq-OcH?sX zKAR8^5^VGLOe^K|mN*4BnyoZ_j-{)u>%M2GqA_E0yKi4yZ>`u7Td6e~DRTMG&DMz! zfl+JvDyNPiNvXOR#*N(Ut?!+vGc=lnY}hdVANk*%dM^j z?Y>4!LxJ;URopHi0zF79&R=D9Rb2Kpj@1`9o2%pYxe$R-iMnN0S32!$JhgA0W6z$< z5a>bT{{2N($HW{<&(&8%;+x|pk%p)(wBC8!%6*ObV`cUT?UZ36(1XPDv~N3T z|7wlLX-_RA;w1G735@!P_H7OAUp)@%QnS@c(TC_CJxClrH2hcxofm(u=xoe8QR3X9 zULk=|Y){Z>(;9u3n%x)?(?|n7NNm~>O9tb(alP4niJ}uB0;7(V=Ou%2G>w*}uF^UD zj0p4~F_?ca8LUUu*|OBbONpRyAc0Za7qlmX^(d^4r*6^;eoh2>kQl7EoDBBWvuoq2 zb~=ZrsaFO8QQxK0$zWflawk)t&`#uig&u6TXJU>UoR0%U{6oa6Ap)Zg9?5Zo^WoXb zdxTEab|TP&#H{^AZg9?%M7&HyWr)D2@hdSmIOm=F=6R)gllC)2pa+R1`K#O@U%gJm zNjit;Lj*?k)Gc#^e08(FzE zV((MR?dym@4-$JXu6Kj_kxRq|I)}p{0;8Vpt8|0<@nUa@m%P?&9VY@kNSJl-9U?Z< zIiyd6z$mj0_EL?#@9zf+pPW(ZVC@UnM5)0_g$eN>!8U)d&$-($K6`b=oNlFBJ=WkV z{9CIvz&1y*Ep?u4rI0|6j6-N?$s|w%37NNS4J0s1Rx_KB{J|c{S9jhkBqXC|YhbT1 zO7eU*f&G=;e&@YHLe68h2KEZ0Buiuy=#hMN=ec+T-w zYZ4fRIT&-LN#G3t>n^rr66iq!D{3@>QCLw;0zFt0QQIWYg9KK)Xab{f-b@1DHLNGO z*39jcMQ^VldXT{0W^2fM38SzQnFM-}h+cEtKlpmVyG35>#NvZif%#aeC<3Fz*1fvC<_%|ATbtcdKRE=1bW0~4XnYW z5kX*-*jl5I?ztY_c^A$~C(t8yX0H6-8Q4}TiZCjt@yo;q=jS?02Wy=-8-7hl6swEP z?P6_LDvH1;vGq8%&{}*;YjXPRv~Ki>%^G<7P%4VRD6zH1?mcbxAnmQLx_i3OBQ|T` zy;P|v0;9y%8XKGXtuN?|jGno-8$DvP24`3Poq=toq6mxmn>FxWs#Fw#QDXb!XuOc(Q#C?sjvlcy8vZW`damfi zPEA0R+^@9;?L<%ZE_%e~cJV%+*}GE`7$vsWsGCvhy+>#8+TG~{dc{|f@!nVdK!f$ui4wFYHs zPjWkY#O8MK#i~>kfl*>>jl(lryhXeEt)iusN6{m8W*q+S?Rp$hM7R!eh0_}U0yAyV ARR910 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_2.STL b/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_2.STL new file mode 100644 index 0000000000000000000000000000000000000000..6042fa0f7c5e326e0ac13999b8f561a5ed35b362 GIT binary patch literal 12584 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_3.STL b/unilabos/device_mesh/devices/arm_slider/meshes/arm_link_3.STL new file mode 100644 index 0000000000000000000000000000000000000000..e8510fbcfd7eed8e6346e727a3b0a0c4c38050b9 GIT binary patch literal 10884 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
Og3WBL&Eoxy3I*Ym3LShG3X)Tdr2LG1XX$G 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

O@Bd$nLQzBYE>a0e> zvaCcmag}}41T`fh`Cwd;uq-RJLOHIeDG|v>?!kI}MZ&VI)SFFQk)WnTBp?4i@ZgC> zVilnO_r+sR8pM@lU0?CGlMq)Vs3{Sm2Q#&N97V#iY?fW@_ft`Z1$SCY?Aqkni3&;;G>Qb5|(8nx``{!SJadU(Sx?Ccrn(KZq;Ky8g*UZkQyls3{Sm z2W?fy6$#6-`N;Y=OcGbrlnBv-xnx2z3Cp^^=vFr%t~g&&QzAqUeAID8!m?~cH*v-J zikcE3deByNT#>LW8?{0?uBa&yq6d9m#}x_7vQclAQ74sl9B|`L|t?IZUVOcg0-u}=eaYapu5IyMgI<81qmd$zpd1#WjqNYTM9{8x^ ziiBm^h%Uz!H6=pypsnh-B4JrJYK3xKQBxvB5Bj{0D-xDvquy-dig}Ql5+S<1%X#Tj zFO7Jg!Ln@LK5hQdW}kukqSTZK(Sx?CbN3dSvG2g z80YP_stIaJgy=yJ)^SC`vTX9(lk9_WMNNqi9jE+v_S+RpimSY;*JDh!xpr%A5AKX1BVOdsrmpl6)K~0Hh`KY6Wgk@QYZsMxD-)>EbNItmF zz_KjMO0Ceu6$xreMDoG?D-xDvrQVF()$a3%#2H6XQzBYE`rdDMT;*NWIdkUoQBxvXKI$mRJE?VBS(a7aRn7gu z`HGqnk$f<&NLZFt-W|?9NKjKEk`G1+3Cps|yWH6a32I72%SRn0BrMBHbUCi5DG|vB zBrMBHy;+VcYDz@%!QH65lUldCWm)B2)!ZK>s3{T22cv|9 zWm)Cj;X+(dQzDWN?q89xEUUcBoqdp?rbM)S)OnDEWm$=C;)?rM)Rc(igKFjUr)LR_e_ru1HW*B9ag88sweSy4@|yD(|Z1{vbh3iAX*eS0pUUD(?;# z;)ikcFU zd~nx*gk@Q&H=DR3K~0HBJ~;d2oz%MBEz2tJs^j zrQU4fiUc(!qU9sjSA#v)y4~}xYQ1jHyQ+n_qNYS7AB-y!mSvT9hYN8z#5_m}POd-x{(81yNGF^9d>(mA7 zyE^K(b9$GI&OQG2+pitv-B#7#R@(5$*Xj`#PRrUQ(e!9QuS@ZO^`Pans%TJlp+wjK4$4`ITwWIs~YEJLK6&D)+ z*?#G+e79Bg?ECiYZ?W=GV;jtO)h}3&F7fxM-!+HpuI9Pzfc{ZGSYY(luaEwmgk)Q> zPF1ztZrk_oJn_k~KYi-dnIzQGe|-Pqb-VFy<6j1vcj5llXKm4Y;iUsx^&p{$`Oi<@ zSkqOt=S@@k2QRoy@9-@@Gm~Y}>X4o0^lrcPjpKiL;+m+(yoXPnxMBPKdIxN~)O2b{ zD2_jR^nYa^NB?T6iJf};_cU5a(8}^g_shq_f7@eXorBVdx-dr0AJ1KC^v3GidPGIJ zqq54xXc`}f#)vv^oBjGu>C})= zyTzP1lA~n1Pxp^IVV>S9hkkV?30nOj#{UNwd~W1T>uQFZZ@z{5JI07wbZ$KQfa9t&WQk_45}V8<~Gs`FMSdsK3RCy87_fPp5{2Vmk6l z_A#>18z)X2Nh68`tt=}ORn?rB8IC_=i{9f8yfSmvB6E5x{CkPf{(oOP`pf0!^p^O= zl69{=_So#+8~(Ov?!m=oOr1DxyZw4&Ggls=6>0gH_ghOj61U%T;_`j=?mfTt>#wAS z#2-E|r}y}brAD8dq8_~S=pAPM-zx{yGXn`)`TDap@!&Fh_OE&VsCr%UnVV<#CeDBT z=;$%mj&6U;?A{VbEjYUF!Pk!Zdg}A7-nm2ncZ)wVw$^>)vwGlM_>qdSE6sB-Dlvy)@gS_LdF%r&e$2pSRz- zmy)2>BSGx?^6ZfXrpm`s^Do?A@2oBQ%P)KVn$(a`OyB*%r?QXh&serUea}t$H%(oA z771G2yzrdfnp2(`S#wkQco%p>qsUfk_*H;^9R+j(%-m?8=zP(BRt`C3eQWCV{-8L)B&&+?? zblsKLYJWL;y%Dc0dAC({+UooC_d9K?iEEEqYE5cLY#Swc%^1Xccj|Am{!J6}zisLz zBxuDtRn?BMviw1;ELXX0V)|h#P8;#ca*0FM9r4PNcUx6IS$)s`#QH~#J$}qa^sWa(aE$x*h@3yKoiahwP z$b+AH`M_2^NGM{OmF4?mWqD4lEMMO3Gc#Eht)5-rjU&y<^3R7(owy_N;Lkp})O2b{ zD2|(z<(9Fs{8C<7lAx94w6dJ4NJD;9CYyFsUe!Tz1(__Axm5AAITD*Vm z8Xxanc;^e3Q$vEjV<$FR_e0UT>;CsAXOf`R&FkGYJ?5+I<44g}e~h*|=I3iqr-nqk z9t-C++_aBeG*k76%vsmt+*mz*Y4-)j$4l=Z8s-S<17fAjI*8om0j|1+H$67PD) z@zWQ2(_G{4cu3jc!mGFI|7z72$BsPcgS8L06|L9`@h{O_w^9Gsr@guV;=Z@e+H&8E zr~m4fMaPei40-&~XHVa3gEx%dx_P=Q-)&WWbjzLkANcW&6B{jf=NhaBiLXcfPLKL2 zKUURAm+jMk`_mtu_}NL9{E`H%Sf{GWeLnHxT#H{uLVXh}q`KXBw^jAy=)oUG#yRt% z#ok8^3H4K~wQ9Pmo?Cdieznpj{U>)_r&V)W-P5~%`Y|^yF@Dz4s>gLPw_hA{`@fbS z8=;1T`aD)-*~e$*>^0HbK4lydw6dJmR|iBkcqrD1*T1fswbqAjnC^9A_A#mm&vmNh zs@gQ3ympFp;w8UWd4yJ^vyV(19_z#_Vx4%)GOxdq8WPK&KV_s@Cm#RY4l_^4>qHW? z^7T}Yt>3a||Mxc@HTL-p-}#HPQ?%FX#KoRCe!AC*xo7iT{ox%u^q*Stk+IEIn&I(L zYe;N#)p^sKb>gpLB{Tb^C&w;%=E@d9t9Dy`@uKznC*QVWZ~Zr&bqO^j7TfRQ>CHOv z<~!chzb4j+H^24pHA&El?G|7E#5!@Wrw$r@&oAH8syS#BYGmtU~f#1Zek=#nmBtCfRj)`=5$ezCvAIX6#S{oy^=q=w~Qy23frn|0!7 zwC*mkPQ2>i2WC=3LM_s)6L*buVqfdTd0)DO1g)-!Ii^`BdemOizkf|?NGPV8b>aqR zE!$suk4^gj>a9MD1g$=>!}Zgfb>cf?e5?`c#GSvr>IgL?6uZqj@zl-snph&Q6G_m@ za#|6Tw?+oM(Y zu2fQ)u!e+WT~BQlKI#>Qe9)@fx|0*ukdSQObr#|(o@yq7EYI-}aWMz%yoA>|K`1G$_TNB6cG_#h632VB9O6uQs zTfqkjTZvxsJ2NLCZr^--{H9x;sqbXz(OKhf*zJ*8R{eB+_^zx`xg;j{LBdv|)o$`P z?86$~yJXjCm{2|3AM6|5q55W+utw#Qa6i2|VJqKZxzANwX?*XN-A`>F$9&@H(QS_T z_4v-4JvAcvv=3f7kahiqY4^p+EsR7H(sT*YCK~FF>mDB6YOP<6U-^&MkFNIH{|w}f z*L|dxpZ)8Cotc^%61&{;Xia?nW8JykKJM$SG-~?1^;aDD({-Y` z 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 C`75pf literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/gripper_base.STL b/unilabos/device_mesh/devices/arm_slider/meshes/gripper_base.STL new file mode 100644 index 0000000000000000000000000000000000000000..5de88d0c5c24751dee6c531fd781c0b7a9ebc88c GIT binary patch literal 278384 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

jVO1uWl0Vk~IfD<4Q0X{V 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/gripper_left.STL b/unilabos/device_mesh/devices/arm_slider/meshes/gripper_left.STL new file mode 100644 index 0000000000000000000000000000000000000000..0a5fd52631c51f48b394ab4dac8c30d197244e0d GIT binary patch literal 99884 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

  • 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 VV0rQF!@U{1LQkZnNmR;s{{@We>URJD literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/arm_slider/meshes/gripper_right.STL b/unilabos/device_mesh/devices/arm_slider/meshes/gripper_right.STL new file mode 100644 index 0000000000000000000000000000000000000000..0c5ac69f7495fed98b5786feacf3a1f3e45347b4 GIT binary patch literal 99284 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 z z4vROPySC}vWh(10mFsB4P$jPbQeoUE6f-29#hMUOH~hDWR4W5o0WT zZdrKW`A1u`uCJ&Z{~>ONywRhxfaB`{1Pn+VIMH zn9qgcJTgKpq?L#LRGqmXNeW%{Dt^hMjy7gbAzkhfc%`|F1rVffHa>+L;NLf?Va8DqaLjcbIluG8w@ z*UYYSDnBWay`NmDq}@O7(y;g7`f2aISS8d;XN+@og0oKvw9EY;6VGjgWv8F5B&Fi>jqURQ7+E zzNp`|y&0e{szjE-T%(UOG|og*V)Ldi8mKQyEwws9eL&~xRgH>-I4<=J5xdlytXDM> zS=Mr8O|+@LSX6_es!;(`3B==(ii%TIHAcrsldcl=s>WlX@6?wBLH*PsMp4zE%*z_C z1dmjlM^V*yhFPz2y4owPQLu1C*+$l?qpO5kQbf$T)+i;|hL?_8cU9wvrid6rYm^>~ zZFp%mi)xV7LA9ia7^AC3$y}ncYIR=K3Fd?G*em?KavnuhQ-WSu5A$pm=TTHO&Jy+n z$0ZSC)Ta!;1S&(h z=clVi5S>FYSbRr zcY5}mAwDU_p*rW!EV7v>UbthWf}L~E zJU{5qzO|?Q>PGvYK`aD(z|=-uK#2sEIF^!`u3(~ zTP;dpCYJl|OzAdEeSQ5jD84J9UV3+*X~b8F{7HclXmii7b5CB@2oHXwQ*o?FsF&W|JD0CMnP$IQ zDum?*x@s{WFI>>;-*4Xqn8=*la|Y&|UYIdds&wx0zFz;MC!6-&$v6{fLC%#Z_mX|c z_4=vnn&F>En}Nr|GmC5$wS8rHJAu88&oWkD((Avnxf%ZS%VtnZg~;Q9wz+%npx-;E zC)`{k*eiH3A2G(Jrw9ElpYI7TZ)*m%R0zyn%SVi{sL=@Tj_UZCJE{an7harKF~-O# zjj(QX$FF<78PuW#^B-dzw!4Y(b~o|#i&a9sIHzNbE+T(Irv%!i9@%vlH^NUo&}q$Q zuY{l%ujUxzn;&h2nIk%_A^Dl}NuwS&JEuZd?XB+&djF-K_8UKlV?{!}vdk9GMXy*r z=wGtCyN7>~=RCJmh + + + + + + + + mock_components/GenericSystem + + + + + ${initial_positions['arm_base_joint']} + + + + + + + ${initial_positions['arm_link_1_joint']} + + + + + + + ${initial_positions['arm_link_2_joint']} + + + + + + + ${initial_positions['arm_link_3_joint']} + + + + + + + ${initial_positions['gripper_base_joint']} + + + + + + + ${initial_positions['gripper_right_joint']} + + + + + + + diff --git a/unilabos/device_mesh/devices/benyao_arm/config/macro.srdf.xacro b/unilabos/device_mesh/devices/benyao_arm/config/macro.srdf.xacro new file mode 100644 index 00000000..aeb56777 --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/macro.srdf.xacro @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/benyao_arm/config/move_group.json b/unilabos/device_mesh/devices/benyao_arm/config/move_group.json new file mode 100644 index 00000000..5be9ad34 --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/move_group.json @@ -0,0 +1,14 @@ +{ + "arm": + { + "joint_names": [ + "arm_base_joint", + "arm_link_1_joint", + "arm_link_2_joint", + "arm_link_3_joint", + "gripper_base_joint" + ], + "base_link_name": "device_link", + "end_effector_name": "gripper_base" + } +} \ No newline at end of file diff --git a/unilabos/device_mesh/devices/benyao_arm/config/moveit_controllers.yaml b/unilabos/device_mesh/devices/benyao_arm/config/moveit_controllers.yaml new file mode 100644 index 00000000..70a1b55d --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/moveit_controllers.yaml @@ -0,0 +1,29 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - arm_controller + - gripper_controller + + arm_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - arm_base_joint + - arm_link_1_joint + - arm_link_2_joint + - arm_link_3_joint + - gripper_base_joint + action_ns: follow_joint_trajectory + default: true + gripper_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - gripper_right_joint + action_ns: follow_joint_trajectory + default: true \ No newline at end of file diff --git a/unilabos/device_mesh/devices/benyao_arm/config/moveit_planners.yaml b/unilabos/device_mesh/devices/benyao_arm/config/moveit_planners.yaml new file mode 100644 index 00000000..8560e1cb --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/moveit_planners.yaml @@ -0,0 +1,2 @@ +planner_configs: + - ompl_interface/OMPLPlanner \ No newline at end of file diff --git a/unilabos/device_mesh/devices/benyao_arm/config/pilz_cartesian_limits.yaml b/unilabos/device_mesh/devices/benyao_arm/config/pilz_cartesian_limits.yaml new file mode 100644 index 00000000..b2997caf --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/pilz_cartesian_limits.yaml @@ -0,0 +1,6 @@ +# Limits for the Pilz planner +cartesian_limits: + max_trans_vel: 1.0 + max_trans_acc: 2.25 + max_trans_dec: -5.0 + max_rot_vel: 1.57 diff --git a/unilabos/device_mesh/devices/benyao_arm/config/ros2_controllers.yaml b/unilabos/device_mesh/devices/benyao_arm/config/ros2_controllers.yaml new file mode 100644 index 00000000..9c68cbf1 --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/config/ros2_controllers.yaml @@ -0,0 +1,39 @@ +# This config file is used by ros2_control +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + arm_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + gripper_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + +arm_controller: + ros__parameters: + joints: + - arm_base_joint + - arm_link_1_joint + - arm_link_2_joint + - arm_link_3_joint + - gripper_base_joint + command_interfaces: + - position + state_interfaces: + - position + - velocity + +gripper_controller: + ros__parameters: + joints: + - gripper_right_joint + command_interfaces: + - position + state_interfaces: + - position + - velocity \ No newline at end of file diff --git a/unilabos/device_mesh/devices/benyao_arm/joint_limit.yaml b/unilabos/device_mesh/devices/benyao_arm/joint_limit.yaml new file mode 100644 index 00000000..b1412620 --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/joint_limit.yaml @@ -0,0 +1,44 @@ +joint_limits: + + arm_base_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 1.5 + + arm_link_1_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.6 + + arm_link_2_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -95 + upper: !degrees 95 + + arm_link_3_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -195 + upper: !degrees 195 + + gripper_base_joint: + effort: 50 + velocity: 1.0 + lower: !degrees -95 + upper: !degrees 95 + + + gripper_right_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.03 + + gripper_left_joint: + effort: 50 + velocity: 1.0 + lower: 0 + upper: 0.03 diff --git a/unilabos/device_mesh/devices/benyao_arm/macro_device.xacro b/unilabos/device_mesh/devices/benyao_arm/macro_device.xacro new file mode 100644 index 00000000..137c916d --- /dev/null +++ b/unilabos/device_mesh/devices/benyao_arm/macro_device.xacro @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/arm_base.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/arm_base.STL new file mode 100644 index 0000000000000000000000000000000000000000..804e1c693008460edf6e8fd90bb526a1370579a8 GIT binary patch literal 269384 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 z zHg#X0=4s4%t3-M#qHA#V2|_j6+On;vtjg3NK~F_=4OR&W+ltDqD>X>aQxRQ*RYJnH zqH>i;4HEQJ#H7LXs<8Un;uUGa|MAu-Is3#_DD@s|Y>x!O==o(yoNZ3}CW^=78 z67*EWq|x?+x-#MYplwCv6Dv-7?Xs@usfex-Z)!S=_p3FH|G$niNJ1EfVIV)_=e&)| zw$gPGH_yl$kwhdtg@kK$@txe)iv*QKvVu{@ls`a;r5Uv$;#n%6c$ zuBarUJ$U+%aIG%Aesldd$AbiwM6?HUMZ&eZ_!9Wp^U4*KL@bX=2?^JphtqRBiqN=L z644$!uSmF7msa7<6$vVdXb{oPI_5$(a0 zkZ`T8S%vW+K_wCG@yyk=gEf|EbPSRTw(jb+;N@ZI&BD=Ud;52i%F#Dr^g zX%+H4NF@>N@ywOSGOeyTC1$NiP)Wq{aISRr)mRr@wYuiC+a5(wNkn__RwLnBU2|%W z2MH>PXb+}@gll!p?K2)Es3c-}RIW(4_B@=0ohyxNB@ykxTaAQkb!ioxh4anu)-6LN V5$(a0kZ`Ro?PmVIqLPUA_yR}7D6s$l literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_1.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_1.STL new file mode 100644 index 0000000000000000000000000000000000000000..dd1d7c14eea708005e7d9ecf2f1778ea926763fc GIT binary patch literal 6184 zcmb`Le`r-@7{_0nO4(dunhkD&G#%Jznj2;FoHGzzYjZISDwv!5!_cxIwM9DFuvuhl zGbHIslQO-NIdg7nrQLH+b8OJKj0stW`G zzwgiIdEcwl|NFOtn)_pVske1?^?L)b7Jq-OcH?sX zKAR8^5^VGLOe^K|mN*4BnyoZ_j-{)u>%M2GqA_E0yKi4yZ>`u7Td6e~DRTMG&DMz! zfl+JvDyNPiNvXOR#*N(Ut?!+vGc=lnY}hdVANk*%dM^j z?Y>4!LxJ;URopHi0zF79&R=D9Rb2Kpj@1`9o2%pYxe$R-iMnN0S32!$JhgA0W6z$< z5a>bT{{2N($HW{<&(&8%;+x|pk%p)(wBC8!%6*ObV`cUT?UZ36(1XPDv~N3T z|7wlLX-_RA;w1G735@!P_H7OAUp)@%QnS@c(TC_CJxClrH2hcxofm(u=xoe8QR3X9 zULk=|Y){Z>(;9u3n%x)?(?|n7NNm~>O9tb(alP4niJ}uB0;7(V=Ou%2G>w*}uF^UD zj0p4~F_?ca8LUUu*|OBbONpRyAc0Za7qlmX^(d^4r*6^;eoh2>kQl7EoDBBWvuoq2 zb~=ZrsaFO8QQxK0$zWflawk)t&`#uig&u6TXJU>UoR0%U{6oa6Ap)Zg9?5Zo^WoXb zdxTEab|TP&#H{^AZg9?%M7&HyWr)D2@hdSmIOm=F=6R)gllC)2pa+R1`K#O@U%gJm zNjit;Lj*?k)Gc#^e08(FzE zV((MR?dym@4-$JXu6Kj_kxRq|I)}p{0;8Vpt8|0<@nUa@m%P?&9VY@kNSJl-9U?Z< zIiyd6z$mj0_EL?#@9zf+pPW(ZVC@UnM5)0_g$eN>!8U)d&$-($K6`b=oNlFBJ=WkV z{9CIvz&1y*Ep?u4rI0|6j6-N?$s|w%37NNS4J0s1Rx_KB{J|c{S9jhkBqXC|YhbT1 zO7eU*f&G=;e&@YHLe68h2KEZ0Buiuy=#hMN=ec+T-w zYZ4fRIT&-LN#G3t>n^rr66iq!D{3@>QCLw;0zFt0QQIWYg9KK)Xab{f-b@1DHLNGO z*39jcMQ^VldXT{0W^2fM38SzQnFM-}h+cEtKlpmVyG35>#NvZif%#aeC<3Fz*1fvC<_%|ATbtcdKRE=1bW0~4XnYW z5kX*-*jl5I?ztY_c^A$~C(t8yX0H6-8Q4}TiZCjt@yo;q=jS?02Wy=-8-7hl6swEP z?P6_LDvH1;vGq8%&{}*;YjXPRv~Ki>%^G<7P%4VRD6zH1?mcbxAnmQLx_i3OBQ|T` zy;P|v0;9y%8XKGXtuN?|jGno-8$DvP24`3Poq=toq6mxmn>FxWs#Fw#QDXb!XuOc(Q#C?sjvlcy8vZW`damfi zPEA0R+^@9;?L<%ZE_%e~cJV%+*}GE`7$vsWsGCvhy+>#8+TG~{dc{|f@!nVdK!f$ui4wFYHs zPjWkY#O8MK#i~>kfl*>>jl(lryhXeEt)iusN6{m8W*q+S?Rp$hM7R!eh0_}U0yAyV ARR910 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_2.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_2.STL new file mode 100644 index 0000000000000000000000000000000000000000..6042fa0f7c5e326e0ac13999b8f561a5ed35b362 GIT binary patch literal 12584 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_3.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/arm_link_3.STL new file mode 100644 index 0000000000000000000000000000000000000000..e8510fbcfd7eed8e6346e727a3b0a0c4c38050b9 GIT binary patch literal 10884 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
    Og3WBL&Eoxy3I*Ym3LShG3X)Tdr2LG1XX$G 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

    O@Bd$nLQzBYE>a0e> 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 z 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 C`75pf literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_base.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_base.STL new file mode 100644 index 0000000000000000000000000000000000000000..5de88d0c5c24751dee6c531fd781c0b7a9ebc88c GIT binary patch literal 278384 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

    jVO1uWl0Vk~IfD<4Q0X{V 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_left.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_left.STL new file mode 100644 index 0000000000000000000000000000000000000000..0a5fd52631c51f48b394ab4dac8c30d197244e0d GIT binary patch literal 99884 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

  • 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 VV0rQF!@U{1LQkZnNmR;s{{@We>URJD literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_right.STL b/unilabos/device_mesh/devices/benyao_arm/meshes/gripper_right.STL new file mode 100644 index 0000000000000000000000000000000000000000..0c5ac69f7495fed98b5786feacf3a1f3e45347b4 GIT binary patch literal 99284 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 z z4vROPySC}vWh(10mFsB4P$jPbQeoUE6f-29#hMUOH~hDWR4W5o0WT zZdrKW`A1u`uCJ&Z{~>ONywRhxfaB`{1Pn+VIMH zn9qgcJTgKpq?L#LRGqmXNeW%{Dt^hMjy7gbAzkhfc%`|F1rVffHa>+L;NLf?Va8DqaLjcbIluG8w@ z*UYYSDnBWay`NmDq}@O7(y;g7`f2aISS8d;XN+@og0oKvw9EY;6VGjgWv8F5B&Fi>jqURQ7+E zzNp`|y&0e{szjE-T%(UOG|og*V)Ldi8mKQyEwws9eL&~xRgH>-I4<=J5xdlytXDM> zS=Mr8O|+@LSX6_es!;(`3B==(ii%TIHAcrsldcl=s>WlX@6?wBLH*PsMp4zE%*z_C z1dmjlM^V*yhFPz2y4owPQLu1C*+$l?qpO5kQbf$T)+i;|hL?_8cU9wvrid6rYm^>~ zZFp%mi)xV7LA9ia7^AC3$y}ncYIR=K3Fd?G*em?KavnuhQ-WSu5A$pm=TTHO&Jy+n z$0ZSC)Ta!;1S&(h z=clVi5S>FYSbRr zcY5}mAwDU_p*rW!EV7v>UbthWf}L~E zJU{5qzO|?Q>PGvYK`aD(z|=-uK#2sEIF^!`u3(~ zTP;dpCYJl|OzAdEeSQ5jD84J9UV3+*X~b8F{7HclXmii7b5CB@2oHXwQ*o?FsF&W|JD0CMnP$IQ zDum?*x@s{WFI>>;-*4Xqn8=*la|Y&|UYIdds&wx0zFz;MC!6-&$v6{fLC%#Z_mX|c z_4=vnn&F>En}Nr|GmC5$wS8rHJAu88&oWkD((Avnxf%ZS%VtnZg~;Q9wz+%npx-;E zC)`{k*eiH3A2G(Jrw9ElpYI7TZ)*m%R0zyn%SVi{sL=@Tj_UZCJE{an7harKF~-O# zjj(QX$FF<78PuW#^B-dzw!4Y(b~o|#i&a9sIHzNbE+T(Irv%!i9@%vlH^NUo&}q$Q zuY{l%ujUxzn;&h2nIk%_A^Dl}NuwS&JEuZd?XB+&djF-K_8UKlV?{!}vdk9GMXy*r z=wGtCyN7>~=RCJmh - + params="parent_link:='' station_name:='' device_name:='' x:=0 y:=0 z:=0 rx:=0 ry:=0 r:=0 mesh_path:=''"> - + diff --git a/unilabos/device_mesh/devices/slide_w140/macro_device.xacro b/unilabos/device_mesh/devices/slide_w140/macro_device.xacro index 7e43242e..d6d93f96 100644 --- a/unilabos/device_mesh/devices/slide_w140/macro_device.xacro +++ b/unilabos/device_mesh/devices/slide_w140/macro_device.xacro @@ -8,11 +8,11 @@ For more information, please see http://wiki.ros.org/sw_urdf_exporter --> - + - + diff --git a/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/hotel.png b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/hotel.png new file mode 100644 index 0000000000000000000000000000000000000000..daecc6390f2f3583239329ee616f473f742b24e3 GIT binary patch literal 59962 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/macro_device.xacro b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/macro_device.xacro new file mode 100644 index 00000000..52c9536e --- /dev/null +++ b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/macro_device.xacro @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.glb b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.glb new file mode 100644 index 0000000000000000000000000000000000000000..724b85f70f48c88eb0f2f14ad43c8520c0b59b3c GIT binary patch literal 63564 zcma&L2RxN;7(eVdwvc^9_Q=YyR|uyhGb7?qR#H}+G8(psNRedEBo&g?A_)znWD6Zs#v}`2GLU@pl1`!WwuPVe*|nc)29(?c@bx!j|MY8DVc9S2r|) zcenyx{>RfLVT6IK`k%a+rGpCWP9$=O z_W1p(cvX44ikgC&ikiBzs0IYKmwSrqtCG@$xXHpsJ#%B#&1BM|gE5MHO-Y2sSyM{~7525xB3PhnEM* z| z1r-@#7oQ8>P^j|Cz!zvc1)?19$EzwSsVXQaDyk?eLVlE$fJa3&C3$7wTv=XC0k5d4 zsEqhlQ&mz{Qvte_Eg`f|3$mQC(S4MFs{@HsAp-FR!Ek zpK6L|5U;GHpa6ap)l?P0n5q&=I2oky@k9EGunsN((ElU)|FeqX{|s0`T~!eZ{y!B< zeO+T+3t?2+|0@aqSo`-(PKa|5$<5f!+nodz4^gQpfiw)6ojy%o?D+qs{-5gqQy#J+ z$nl$kLeJ2Yf?%PmZ$?Rp!B9|8u3xA!!Bm+H(NgSCbuFhx@6dJ`!JpX44+k(5iiJJgcg7o)o+rxW zu`m?9XvQ`EZaa0DLm+q5$2;6DwIK!@ZCBq~DRg2uVt3BK@HYeC#*uHymdin6s zo84)wiBA0WKDLZf1_5iwUI+b5CG2pB=&>C&@e^@(QO5wkau0))se- z_p0Vy+edMGwu5=z>aN(3)yc#m?4^CrcYEw`yx}hIW%FRf=-b@Lu)A$Tb<8+#%{f}o z7Md`Wr$;$KYrEoL#6Ak&%39; zS2@&Kf4O+^o4@-7J4bep&~v$OvRkWpsf2FoPK(YR{_~QsBXgi{?#=EpOZy0$NgA_; z#&gP=Kk4`-mD380hHLjy`nhbUwx7Or@Z^y77veK@Zd;w=V3QH)vm~x~Gb( zZT1S(O0R1MYx)P6YppwVi&30TaCMs`hQE|Fdqg3=;V67Y!(i)OiurD7aSO$Jz8t@Z z1C%-f5?h~nKa8BjEOT$jiU^uUCd5ko31Is6oXb^k;<>h+789;r{c@j+$$Iu|$yteW zk&ki(<+_h@SG+s_t-_3z$w{a3(+SmeiT}x}2bLhq7%^t{IrCY1NlXRf+T_=O2Gu4KBn!{IlV2lm%}srzTW;F{q@Ui&o<}F#yi^7Hu*!2PhCj+ zev!`lP=ob7-^l%uCduxp(;AvDzbSd_4Z*XVi*#AI$F%XR?qVSBN~Ex+iAE}+W=r(U z%8|dbXDHmHD67hR-FZp*M!DpO*?Csx!yKz7QlHJ*l-&9hB{og-xDW2y34ePxU~#@RXGBm~eY^Z} zWpA3*p0YDj@C4Bp zJB}rRy_wRoN?CDf}rG%Xh zbEUn;$-`{cr`Gu|^7nlb!av-WSQ%nC4~kF8ax%7N*6D>s0Md zvCM3D`Dz36J6{}s*5}iJ39ID@+y8fa`^feYiRfjStg%1T*E`-{z9Mi$_K|VP#4hGf zXILmx%G0K$*nc#PREyQK5}qyzt=SN26!VICU03zpQp*OX%BP%9*?jsocdkJ<$aPJB zCyVPUNAmW~7yGVX*5656S6A_4USMRNV!u4gc9Fs1?9frqr}FrMH#WY*{*@EcOQ#K( zks-o7vj*j116=Sg&4p_1*8Q6V`hLZ3j@Xa!*Nd;+4ObLC5dHB_N_Rdd$NO^KmkI(O zgY7db;_0!)Ux)_G8(-#{3$H2qYjewNR@@CS5fct+SKL1OjUljg4ooxlsUNv?_Od8=&YGb8Vfefql{JnU>12bwaMB&!5gWFC2az4ntHZ7zoxl!eOa z`WWv}p5^!4@Z-zstnL=S(@`bp#v4rMb+uCCxbrLi!CV&7Ot!b3*QCfV=Ic_Qe?O-4 zT-G|jGormaKCpB)UtintUbk*^qVBY~iezJV5~F8&s^zasYD&+3ZPcyZZ&>*1&*FLQ zm`3mPh~iREg43mwlS2F0CpC{fvsMsg2-___uccX7EH_rv6Jl!F^?H3hv0t9U$2ROk zED!HomP}&G_+<2Ki;MGqO|!Wj zt7W)W$Hf);DkM7P?1-V^)AJ6Bei5xF1DT$m3idkiP>1K4+NGSdA ze{p(pDexy_0+Qov`;9F1Ij=e%ndzFP^dAt-J$kZ~5v05{0?OtI~XEmgsWPHT;iKlZ{F4GWo z7!?!EC^i@OiD@t0B8@y_60HYK5N#UuC{+|?6ZJ9bFlrOpTud0q1kqYkEz&sAiBYj) z*RZviNsKH;j5>uTjXH>Kl7VMeE9Dxc7uFh^Mm0+5K`lo0fYysLjd~3`O1Xw*qG_cZ zr5uIpF>34GYfSPClZ;VVR%{qm6qbpan(hH@11%4?GKUs*8nqW?E=HHq0kcBIMAeBY z$I61Ay|j|pDC|#6F6J5KAz(rata`!w5Qa3d2GX4vYszx!G%9N<@Jy3NB?g)#k|d=r zWjPixN5XY$>Qa(0Ak0eHf#<|@OcW6CxxfP4663|dz+i}^i9;AX zuHX3A3j@uUe(m|p{l0Nh~X6K@AEA8xQ6%m<}8s8$Utnz~Va!u*8}PQY;3C$2(xKctR}(#|gnB zXDmcqO#wc>BOX}4fFYnf6*#~+wgZowAQTYeaReLz8&4o|Vi21IYz+xdnjn&70U{3Z zCPouRv&KAu#RKsL9lDg*f_Rkv0wA75g33Vj;E59i95^8oaacfwC*X;AE$kr-mH+~@ z1s#wMJQjx|5;{O+f{;nc30S-+u@g8VB&h?kik-mY@I*jeAhdUduR{`RO*M*@1UXj9 zc*sR27U&_Ng4cx-A>a>TI%?wAD2ccUSi>ejdN*Uh@Wh6<7#bIkYNZ_BgCLW8&%VIjfB%-;72+IkB#SuD) zH8^rykOyo$2`X%&pr(LCynw;cLKTqkP*02H3%UYBmv#f0y#Jw5G0E!fWkl%xEcf=$^|As0ZG#m zu{DqqFoGT+M_58l{3xW7mH=46iZx{|umU%r140D|GkV5h2{;x2f*$eUhEM}gu{cJw zI`DXu6Gj{fs-7GW$YKekf&wyquoyr)zJ?t<;K4r_!!sf*V*vxW2^=?o#}aAD%;2z)Kd?!L2>`%yJS{*#(Srajga)9n zBvg{1%}Z7#)Bx4M7Fi9!ffoUB0&t0lL|Tw%0ncQrag0!h01d`*xDND$FTfR$VUr-w zC?t3QVv#SnDIkD56e{XZFpGK#e4?BZ3AE5$P>yNiu{FpbxGNyB*MJ#z91CKDfT9N( zR0hBr{NM#Q1SlvxHTbQ0uG?gB=* zf;N0IB5J@F3L7T?C zo5+YP;cmkO7BJEhp+b;xAQ8-?60(HY6k&uG7YB@@c=0$9=*@8D1#kp1iFg9}o)OG& zqpBgo4SdidLU;*~Frb5-L;~+H4Z|PrGQhA1&k1y2wcGsf?|XS z0`hoK9pa_ojn;uQas%^V^q&|cg$1Wb0Nf~}sOpg(ctpV>bclBm_yjeSYMeeE77fhd z!3x9(`GHMy0!Ld@fMY~(XvwKYinKTk>@!$`G)S=HxCsPM1SQ}Nr5X}U!0CVqSdM5M zU;>DLBmz1CJZK=yBKUtx2zvo-|ES_Yl@Z85*5CmlL(K&(I8>*I3RpvUNIG;46fG^v zKdM0_g3>@hLa-7MV_*O}C>ViVgdJY+OiL($3v8o^4FYUv(5XOz7sx~7@IojNXhv9Q zcnM@4)d`v=LYXpxCFB)_40|3sf{I+QzzbL-LLjgbaqOtOL9{H;837#kKcZ0F zKnEfZ7^p?G!eNaBC?{Y5_7i9<&@kZC1}7unrv`vQV*n*QPz9S0bWc1n z9;ycqy#e+nA`~#R3Fug;l>r6-2@gmNd?IhCF~KeBwW!0z!!ZvY(Rzcn4DKNy0Ex=% zU(aBNrb2>303_f7rG*6?!%p0ROrg#WlVlCB4)qD046fuN2G_8z5CmzcY~UN20RoX9 zvWtJ2Ll2C2Mo>g3zyqQj?qCt2Z31TH$h8G`$PyztqyONdl>{^*J!G0JO|I~NOBd|3 zptg@z8kj*eA)@}}0+7KlOyId;r2`#k^`T7wl?DiTKZuAJSZ9oA`$h>U0AFzCgKh!aJea6K z)r-;y!vwUQ!2{BTl7)(b5md}1I3Bgbw}@20%$RkH|$> zfp{nb)SsZb$lf3*n1HhtSsLkp8}N@}r<5i&9u0aKuY0t0#I zHRvD(;^ap%07!4F`=VHm+9k^5fG=uUAL)# zC#uHBLwdnFAo;JN;erT;u-H)|QL<57XcRbyWx)-v_;}PR$cJiZsR#m^Le&MG2vqs7m7jxx&$zYPVBr89XJC{@HicG=mAnhfHfczq3|eWK$YYD#1P|Me(X z#=r&qD1i1Sh#9J$1ldE?0Z>W#}3Rpn(An~v003}FC!xa3n^jGnlmCJ|Fca3vq+H38K* zNcF#!?1M7{N76*RJ8nlBNW|g?pa|G;A8=3MQySNf+o1&;J0Czt6|{Cx5RhL5tUiUi4pCF~VMeYy&`00x8&^ zpoECvo(PUuI^efavL?uYBY2~#fO#US9V7>zs5Qcw7a{~=(eVT#gf~J95u*Bme^3fA zikd$}3C0LIzzpgeSm2l(A6dizdMxmdwhHpOg%@WJw{Wn5jM)(Iioic;Nk9~|U=GUJ z2NK~AxA+hkfs#P07?$W0vSkt6FmA^N56N|h#A2atq+zpg$MK>s%C`aS7+e*>MKx~6 z0KVQzKzUw+_fx1hc);E4pcKdyIB&TTV3&F7`*?23M@x@>Zcn#dWx4VFV)5|FHFmC`qqDRwc9P-{;slAC&uGK z!JO_@dL5DE=3~w35&J$eBv0|NKcYI=7uj#wt?HQjH0qAEPi*xcq3LP|`N3#nU2gnN z+0m{3bFVlH&TUL4O^bCl?%kH1y8OMFwn>S?{_Tt9+Q#jH+Wbl%TF>gNy-NgCUPe25r-j+!}-2F7XRu9eP@VKMi}b4d0kyD{wo0{QV{-2RtN&#F%Vv zzmB>7(tmt`k?sAr&#!Q&2c&{|DAdYq50CSh*WfA~x*8X=*h*)yf=ga!HMu^%-iYwG zmNg10Tu#jHzb<+71QqR<{M(<0*NCy50q+jof30)ymW6Ol=J?%Z;?I{H@|*(kr^F@p zta%#FB&8-2YCac~E5Ey*A!j^xD%0m!{n&pkMN4(4J1UQA05GfSao@pd!g zzS&~2iZ2-43jH=$XuR;*;78&277F<$K1=%Fzn_Pe%rjh&oxF7~pP6dqYjpRm>d?pd zeI4EOJgndFBaOOGFP?DLo;ed-F7wLtHCVe zClYPtW_DnBW%D#29o3Zl=c!~H#u=GXM{kUUj`Y#D9#$J)qt}IB+zdZ>Pk^g@de@%e z^7dw{6qU}~whX_&nNu=a;>@W^SWZZmD(lQYaO^Qlh#3&vj5k&DiQXf6yi{-Fn!ahOf++*Vbl*?Tu1Q50xAH z6Cb5}C)9lwe^FgRagO;%|JPFDz*tsZg0*MO@UF|p^Ip+(3Nt>psLP=`KQDcH*s4}O z+ll9Bh+KtV#?k?fSI%ZZWjgyac}vZYWt2JhPRK8d#(i43e~pQHJv^~;fHX+#{4jR* zC-tP@{r7D5r&~v-T0W(8m{Yq}7PwD7rtp|isouT%a3jg6BG5Aj@Gj*6Su zqjvUce$2-8bleY37Hy9BCAJrQV)xR&W6sqzixytN%olcj8f6&F%rmi9$xpcV^kG$w zd)B_!_j&GJ#$RWm*i89dC!lT%Iwd_qz_MrW+MDyn;zeiaN93j_#&UKZ2EsNXMx8T=Ko<*s@roTgF_`3TEpWeBufRZZL+0wg$jHN;^M|Kn= zEDoR3=cehD+;Uf{FaPlCexO2kc5b+!?oHE_+jk!RnELbD<>^pq1j`X%Dx^l%+cBFz zf0VM1aeL3N@+TFp@-AN^JWB2L)JGj##2?eU@OXrTW|ls@xu3Nv`CMSvgj^%BT-IA& z{1_dz0{6j$w~e88|HIZyrlm#j(N>`xyzrT5Ayan6jYgT`x%RIC}K;*o9F(ow;dVbeF}jtUZ~ttajmh ziF883L8={V5AXE1CB+}lm8aCpmRUW$edIBZ_TQed{vp}%lPy--Th<9eXBYciCwLdA zGpLmlf{M@itf%CZTsv4IcqyTlO?yI;zy3`0$fr(~!^9uKhr-$>mdcCI{S4Ikgmo|& zrKa6A<5ExctDdWHSJy4O$-cot%b^P2xgr^wQj?O^+r!y(9v{wE4qY~(*vY=ceb%7) z)nayKR^6X~c8gI1NlRDb`|)D8Tyxabe`I$YkmQp5GR5p{_wE(V;Z_S-E^(r#`)6DWtaR7P@bX869| zJ;|HtTr;z^CQ!yW(;)TyWt@y%g(EJP!YA;?Y;b1~qu-;tI4AAKP0w4bn>L!kly1>l zQ~ux)Bky50HT{SZx0@$le$t*>A<-5;iB;d{#Xdohdu(#JI)7{0-~&4-quHd~Vp;c>OQAQOu3weak3JBrnlHLv_-EisiHcf`z#o4e$-Y>9Pb>_nHG9(p-ffTM1@5v12@w~`pNYlJIl zZPViKiJ)QY5-jBx?X&Q|{O?@c0<4c+C2oYgK34y&BvHAkJUv`Xwm8pe%Io~o$8J{m z8P@Db^A2|EZ=AZdzLLhrC;k_6^Jjx&L`}E;xanP3+Ytw-nl3#PAJzSUN&eOo~~uxoD5S-fi!y{hQq-^puB@%gr%6VF6B57Mrt?GwSP zhGoo8N}cHLn)-w{@CN+f==1}vI+SSvfQLlu)az?wQc=jsRk3rQf6Wzv@7i;YvOHj zmakEii>KpCIUF1JYd2rI{`1B*OYl$G?v&_kjs{)5!n@ilVP1oOt{fKKdiyawi_f^; zJLl%slH8Yvk_~)1Y)#)b=L_gw8fjX8*4n^wo@bYmurPsBtmMp!vhF z)KdF$Zxhou3xn@3;`x8))Obo%1_ixO`#TuBf2q_Ul>c+v$&POSH=-p&bYCi-nPf=s z^9xBbH=7OT>5%!Dy?e_=)H_hzpykBY>6Bpme);=%LwdSm?k|g0pZ`AFc*50dgOcld zTj+8-lTQ|Pj1rIOZ{;!Ra$@hk0&WX)vqSdEl%xCi?fzCXUgMTH5wBx4P7xST!SiKv;K&E zPh#&V4Hsn0TZ<&{-%<5E@@UDA;3dnIZ|1VMCrH$&HJUz|l)3dR)I~qv8W%aG!i zmowL+eYwt>+Q;|^hpl{-eE2J{MSG#aGUMEEUG^-|(oFbl6=g-EQ>D6u%!#zhg56T` zUzj+U+IRGIg-9&2?Ml?oIL4Ea5r5tXngx!!lz=io3Fxs?{k2=w*C)B=vq+ zm*zfJ@a>y_DxoPi&BQo-z^tC?+o;vH#WVx;&p#*jeUo;-ZLK(^wx^l*&iNx(f||C^ zlGr@;lckmSxeN~o;nuHBhqyCHbJ3ppvn$p~iyude*;BH&jUhw9Eayy+#W8Ij2l&2K z#IU{UeE+$TY^IXaPw~Ky2eahX`F>p~djEIJF1wLyCZ9@j5$7RyAdI##PyBAXf8MWS zr#s8OG!=!0>PV$Y@MzdAX}i~P){8Mj3ItwiIU93UtH5LLkJ_}EgIR}~pB5b+e^G*y zYU*p1tKi%Iz}8SF<~aA`NrvVr`KQey$D-*?LZoHhE;WwP>nV0WXVLAr_@v|+E$QXr z`tF`LS&b4~v3KZk^b3`@$GAQR(TPiPxh~NZyc`uYuulu~pi4JltE(tgA9;V|zD}M& z*3EO~s{L&9(L*Aaxkadqsf#`{ejdFSrXRIx&3)VeGqdkg^vH{a&e08iC$AKvHVoTZZI`qm%iAX%anYWm7PQRBilpU{!Lrw+|rrHtdIZjkX=P!Oo? z9ZGPYEjJF=>v}n;xX5XLgQ_e!Q2JpIdsC^CM0=v)%eEA}o14Je?dY1yT3tga)7ukC z{$qD!3`HsK9814-qV>5(Eq3%8o9lO0GWK|L+38%c*=O!_hJU_2Sf=3malLr$?^aAp za`xidC=@IBXZ<5C-Q+}A_1`+E#Tx0)hta&rwuua9Y$&%KzAyiKdG>E>C`*M4kr z?_ROw;;TO$yot2|>r-~GG{P1Rc3baUmGZfrB3CLMO~^eIxFq0p#-oUfOSisA(>ByC zFXO)OrBl(v+;!jHiKj|@{hIu|dFpXR*>~l{m?_`2$KhGe`56=4!h7_ieRLw31ss*U z0`8qmd0QLD?0dOtm!B--d`v}~>EmYVrziDq`EnE+w6Ysygo`iDdv+W-Agx2$x#`i9 zs8_gKuJC2p3tHVDZ0~P&G#52{d;Ku$3|0OcC(FrE{W;aZGlWH{(DB#nnUV3{3e$ZC zQgbo)AI%CrMV}{MOEP}2WPiSDW%zYTX4vLyh9u+6mb&b>9=$P%TG#g(_Yc$$jEdps-yHtK zTT5{_aJEjD*4kM#<s*t$Ok;mPjv6gPEigUmx8lK76o-q3VSxONWSp^Z7U5XWxk}8wc80 z#RR%J^sg9wEfXAieJX_J@yx2`#zpQ1odIiMymXO<+KVoOTuI*H4*7?7_qU%Zjp3F{ za&DDWa5+N3&o4l8SHWvsU-7mo`sI`E5D>aPaM5d)MNPlSx;OGWQ=7 za;r@azQbQ>mg>fGcj;Qz-6)^kV)lmjUW#l!P_;@|cw!l2&2u-2*)(-}uGK|zZ&dG; z+HUj3y)9JMF1ivYq+aMVSUvetuEz37bD3oPYtq8MZni<~)TtVS`@U0|+E{Nn5#482G&+}$!Ug5WNY?!;0LqQ#xW}I}_z2W=s zD*9R8%R90ORTS@T#jAI2@KY!H*WE09=qr83?qDi^dEMtkG1eypxu-X8RWGId>7Reh zbvf1SUeAG-!Sm|^ExFq{GEXSu`o?|5TSUuFj;p5#UphGd@%`p~0h(i{1b_MM6Fzk# z;JKf`w{C4U5@87X+za8!fBi=b)G~MG| zP#ZXPEZy!zs;3~XKI*^UJcjpP-})oB*CkczMg=uvqUj61@fs=3Pn4%LMNEx?Bv~#K zd}q@NsFSypt^{>=r9NN0zb5o4!KpvtpzXPtsCB)t9+UPJPto_c9u{ZqDQ0;V^`@L= z%k92g{pszaqk{(86V}3~S69NV6OLHS%e9tlwG21Zl)fLy?cNTf!VNEuPO|@GX2KHG z{F?%kzH=5XMtn3iyMWzSx_(JerKBwWUUlKUuYW%zq@K-CxS11%3019s+Q*dL;5{+a zJlmO?XW1JeQ`jq;HgvLA@5?)l_Ivblz17#6l@1)xb-5c|pQ`ixjy}(h|M@)KHI0<* zt1EJoCk7o{?F{f(<=Xv2$XzOA39&;o$ir+IRAe$aU4}z);Ms z=!%8Mg#P;;Lwvf}8I8zTvxViV#;A)9uf57JS|$|3ujIAP&hX3P^}17kZcuiauP{kC zy1N!XS$Y3(Q(w<_89x1eeH53(Am-nW*>gj) zbS&jySi`Q4^9i=*p~-`pgHmTGo6U}fa@ZI(tRzM3JKC|j@)G{0lwECp6s^u z(I^h>4%WTem3)fnUB{N7q?N)Ix^pja{XWwltQn7Ha3q>J_QA0!I8Wpr56;@6lgTS9 z;c91!y4>^YW%4nD8n>pVGfrPiEFCLx+PXF`tOVEY*pd+kNPe606yuf~Vd5q!Db?Q_3FHuq{?4wZOx z$++Ve3^-0hv?PnOP{)kxLI&m75ldXC19dEtoV@LX8FDXZCn`Qc}*G=E;>bon~u zODEGsvMDH528!l)X!Hm7y=hZk$2G9~%sPBgT1bShYq^C3RSnUjbU|?e$Q+vSQQCX z_AU!vIX3@nx-a)b#h&p!SuZ6Og!>MK~II;Tl$5O^7rOf=9N$J`JMw>S2pn&48(i2+qZco2oi8-25 zl~y@y=NrUAIr(;h_%rkO_QlPSk5`*cbbp)7nAje%W%7>Y%IGcnlDV%*ZA^H2yja3)-opFV_7IL{ai3><{0Op zvGg|mj}xt#zf@eW&1fIh72EBRZR)NUefF^Bb=qU+4%y_jpLPl|*e~y9|BA<^O4xtM z`!I#`m0h#4jYFTtTap%PLZt2lP-guN&Tpjc{ec_u_<*l-y_)^j>L71IIq%W&u?blk zDf!FvobL`raka@XG|rEB6qbCLJ2KD2k!GLaZJp-KQ^b8K*0!15CL*c1C%xmxq|lkr zb;f6U`AvTE1Ch7xVLR-6a|8Sa8{}rLM$HGTIq#$niFpkRa0cjc%RcdI>&hy>jN`QD z2z#EJnSAkh&$DD6;mE&V?+5&i>H7RzhC)W27@C$J_N84U#W<<2s*Jrgj9}oHq1Cg~ zFN(vmr-D~>HlMFFq0A=fg&~RMb&ZO!te=rMPV1rvF6;rm$}BM~}v1w$(G| zUw_zsFWzC2HW1ogGNyP^<@fYvk3&>O%;KfI$a!ZW-A_lSs7JG!HduB`zv$gO`i%IC zE7wR?P(@?)p3$n0&rjE0XH4?>&;oBtiOJ;OG4biMt%KMiUb#cG8@|yt>+bp{{f1ON zQK=cObgRkny&<~AB051{;WP&>_#}?ReVkpy=4k)P`QX>NHpP357{gO^rTWVaRtJ21 zmDZ?vi|Svyn*w6_U#Q;K-sbkIiVO>RX>^*{EKqRI-0X)wt|z#5-7=^v3_Ej_ovOG- zqYbMh9H4nAf>Pm%;g%oc)h`Pw&mYf(w(YSD4rid5+7)hfJNXVtsqONmLfLB{nd83P zKmR}{ext^|r!2i}*T?vq*@LG<`>r+ryyVI7mG)Q1c|Cs1Z;V2Uaii0sV|A4#m&64f z<+4juM9-0W32mb*!Xr7A9b*>32d7uA`54SEOjU%YYB{L)+rG}Z-bch*OTFE{eDKkx z+?9oA3R~&&zLKIUxi?ufS~@xJuKtzT(BA(>&qbx*Bh~Rp*uIW1gS8`P#zxEa!bFNUU>2?$g>Y&R#Q1!dn=CF#E zJ0YWf#@USP#?)wA;NC2=E7Xrep2@%V*^)hN9*W)3m+SFgrC;f>{cs~ps6k6Hj?-gw zHhe9pMCZ~j5jvgY<5G|B?f+hS{kgxQX^6bzn49sNYn{{0DyfQEfl)9!I&=OoGH{%zzSZ!T4^v>IGhp{-;%3R-JN<(n@vbDZxO%b8_w`klZqz|pVpnve zdVEZtB=Q`W^17mUb%yq|AnEC3ok@qH-HHtBu<^@{qcKZ=Z4A83t5QFwEj`a^^ydB< zcJ8yo0lXKbK+((EGGdUoZC9mWIE* zr)t496QFg{maV8ZVc3kCGlIgm`wm_CfT{U)!g)X2WQOC^zx=mpoZ>8#RpQDE@PsAb zb6KJLjDJZl-oC5WD=N4VlwB2Ee!id6kUl=p(SnCgZ?0t$F`S56bKX(2|u%K-Cp8S-Nzxeh)Pk#?! z?cU_2#?e(qrw+$n%5*k=-Fi1o_lNZMOuH@h&fz`NYC_5HjnwwD$V<%rJ>J=^Hu9?J zknO@m->%>5CzL+(GcGHZzuz>ocOU4vp+7m;EJf428pG$5=H!igL`lK&r|MpQE!XPi z=bX5xI|;X|FtTIedwL>$#BLLdJ{N|swhjdEKKf#qP2+7k>lzKC-{VU)?K30wqYt}1 zjB6gJH>WiXB>S606*fn+_R%-8Wf=U$+f^_QT2J2pt}f4)Z2zSudNr6$K$}i`apA1- zdRKu=+RwnL$!wX`d%44PqzC0@GrSz9GuK-ux{g0CG?W$CY25H>94vcU^d0y6Xe*Uv z)ok|S>$h$??@p?fv{zG2Thd%SYo)Q#tHt-jd1Xw?Xc;3!8)Zux`7={FbS0CK=~yg6I|vw#?nVUP5oZ-UDgbJY(DfzYA~kEfIGivQ(%sx{sc*q?7>q~7P> zHr(23uI0OJC7t!mvFdBR&yUU98^^jQ_O=Yq32Ed$eVprIRe$RQPY*}eF3vM;S6(D7 zoWGkDCE6b%OSJB~^*O2dYPa1|L21T2`+1*4jywG8f#?0q4m6EVtAs`EOPY;jwJjAG^1?k+%41u10fJri`V%WY=AN zURQ6fa&IIe%f#ZyJDv+7r|x{8&mZY-lf3(eK`PzOdFKIzrj&ZN*J{qr*7YjZGX<-E z`9s+SA{9FiD9%n^Nul-0KJ(S1$6+++_i7>6W8r*Lxjzq&nGNj^_4B`<-<_Eidcn*7 zKnQ>IQUCEXIGxL;s*4iYA1-NECN9L>jXkh@g8gb|&Dnx2GYQ(F>41&<&$R!fg|(M# zRd5wF?Rgnm`DUZda+GsfqBNBE{)-zwZHkUP(ArJ6H?(F^^-_<(lsT_l zogjQ*Hfk+C-JW{I>ig3!=W=e6K#Aoq`$XYSE3Q?vdp`x^eJ=f&mL2t3p7RTDl1v(X z`ON$%sruU8dG5@}(sTY#q$$Sfe_A~dyi^%k__eh7?@r$Zk18uMO<|7m!YxwQ$-SRG zH|`O)@uvAQ&VDfA^ILO|>Xe{cH|qkSN?MK6Z?Gp{7Hp-Cw@AdoQaAT zFkknU3sC8`PDqV=ly}NsqmxbUuf**Yzlgc>q_rE891${N6E!FN^33eG>aJhHdgjl6 z)i>bElYRGD-B@EjPo?bg*Pyq(#u;`}!NGR5wpS)J7D{U}o6M;n*OjN%F9>VcTRNwB z@YvF*EsO@Le`>(cJ-e8BIL?gwu5@L8gG z?-!0#Gccz~P-j|a=MJ9bpCm+89n0GO$iJ>DzMBnqzHs06U9rKuFA^o=y~--w(Yhb! zxf~SS{VsQinLqLGe*ej8icfPb#PR0mWtrDgrW5Rv6;jf({x>s3nzkg8%9eG^%g1Nm<^BFa*hQ9jYdb>MZMC*?8 zn*r>#^bW=R#}WPEQLhh%(0|g42v#W{GVV{q^EZXr!R)i~8IbY$N3L(C^$hhn25@o(a*N{sZ>ds2c!ZBMu@i3%2&CKo7d#`B#=aYMfc&L{md6r3{7k^B1wf4zVF*^m8hdVxF=J-C| z9fy;G)F$+i48uH}<`vzlp<~6b>sNnW6Q*(zUeOL~QZnwj)+Q43ZKC~IBUKO~T?HQm~ffqZB}2Evq@QhcuUgyZ(`W>U%}n^ z56`M!EwiEY^Lt`mpHX~vQ{?D8|ECK)`Ejg2#*J}o*+ZY-o1PpHS5}Ht&FtHFRKL=B z_VG}nbM0jM5{5^lkL_+E{oLw+cBn5q$HRRx-$kTGJg!XadPjY)x;f?4TAAqW9J_c7 z6VDI5=fmZ_LHdejI>UtjtvoBKhMX>NQxiA^d%xD*=ssCcT5+n!VcSntO2OQ9;9y|Y zlhOm12`0hi&hDN2L#CTQpR#*hC-pW^cC3#^$n5;bg2}Fa%hsBt(aMA8ac^7fHhGzC zDYK}hNF?QN7X9kwdvM)2Kr4X|?mWKf;vfYHuBEq1R)z-WBI;+4Oz0Pk#SG z-;cy|pB3IcT3B6BxHQ(+8-Ks5S<$MQr@xMWWw7f(wzH7<(i+=V&5<92t=@j685^Ce zUBz+DrGtA{UZ4A@eH~{zQlQzki|<>*)e^aAeP2P70vG-cGtK zZD!ZhqwRMi+kKG6LU?d9QMGvL-pWfy1^>+32iYSDT%M1keth^wDByg-mLz7>;I|mR z@-Btx9WLnJF+uI*C>zNM`(<~(G+QUhw(*$jSEkh38&gkfZ=HZR+ z?##S0%f+AM@Rel%CQsC5tcPc!Q`5;eR2XtK(lcqsJRnHtdm4sXFm#KTq9g*gqf_7)5XT)^CPE7mU`X?Ol zRUsxeIU$dgoZsiUQ%1g9i{{$+hrXD{oGO-KaE@Yx^Q7!^^Dyw ze`kxi6x&V=zr&^%hoKAIQk=A|7XuVtbDHbhmZw||NUi5q9(>+;Dbn;voKkNh_j@32 ziPdN&Qwz$?#e!y+8i;umfNBVvUxWo)D|vPX@=-v$w`}1lxL>D1Vicx+Or$&ln3LeDOX^>ch3eT9U!Mqx z>29dV9stDT$;Q5g=odPWycXvUe&Va=;72y=00!IJnhUHhJkiFa8o1`XZHHOB^1+#Y zl$D7`757>oHlWXd8~Kn2OcOi3ipdV;eT5d66!rA8(h+0`p?ZCP1vw(y>u#4QK?XYUPWo;`!uCfyOs#}@eKw*QaVh93-+cH-cW*U-}5RsgxX~UD`_3K&Gi@!%!JaCE=Z6WSXAz@v^%q8D~6! zmt@cA&!J&I{EN0y1zU0&;px_6e_ubxpp_KQNJiA%d`?;-=Dz2Lp5Mv77|Hf@M}dT) zTVA+45=j6^I|XcTcGXH6y~PSlyY(u!{=N2sMn~H$)baayWM;D>{DpSqo=XOF?N4Sn zwb3?wUZR>hd-L-_!b<>rL@ffw#MsIu>_!ndZW82)WZqX{OM~W_ZAf5)a##tXyaZN+ zwJ#&L$j?D7431T5zt?l7M^jAp5I)0Jt!Ku{;nd%l5X6l1`8uC2)7k}A zKxIljI%b0f9`z_DW60BSm3wACz*j?6u!7;I+VIDt0Of$3GzU4Qci9lZ)Lk1Lm52Gd1qp{qh4 zs|ELls*1r;k7?XFl-@qB#`T`MpP|WTYLIu=+585+fYY`y6NT68ZekVQdnRMrlgnBP z=fP1axVdB-d4JA^sys_&80uv*Q0rWtN6BLpeyEY2Mi{7<;n=2HRfhTgw?Nz3Y-Nh){Zsqj6Xt%l0^$-gIh{rrkcc|-C+%BLypRAQ6 zd-gEIVh1c4zgdu-LwP~)7JAEP$Kn6ZEF&Z`$?z}OZMN3*-Vc@60WJ)9(;m%Rp%GlW zVSOiIQy&o;9jWJ}d-f}eb)8-G9O7=c@rtUqGuO5Rlqu4$30Ukyyik11?0=)`WqK4| zqGM{KET$vqeo8jOeyMMm>dE^vvcv}2(u6i0?uXDV>vO*)MY3E6aDA&kiH(;pwJm~_ z6G#EpW{^`2^rU8cbO(;jUMLXZEdZeB=L>l^Jh1BGt&co%f8(cdQN|(+|2VLFd=1a3 z?2!;XB9EjwqqspJf3+E*04dgpd<5k;`#n@>jG^J)Y6`l4ZU;-;yxF=gkDjL#jx~@L z^6V_6ycJ|-0+v2J#TU{Dubhi_LVtmfSn8~}t&CXAY0pxQ&>ZQ>5$G#BO#WHoFB{^x zUhin@#A-^W?G!FPTk5Sx8~WfwS{x!KVXtfLMI55!y8fIq#|d@`7)i#J9Kxmlo$!!T zAiZVj{SI{L;Pi>^ja7FHol}nNZ$uu-ye%2M&zn#9C1U)sYR1`WYrWuN(bRxqu1n+F zx)5%0YIh*{mpe6AY2MQA#VuNXxQu{Bc8Vs~qo~J@n$a_Ud@`h1N7)|CfNS)O*JCb_ zwUrO0qbvRc06IvsiSU-!U6YthFQF*;h)z}9C6wq)!%R)(y?0H~-3>fF`>L2Pzm+8VOV z5sW559($E4ut6}|DGUoA1C~jTyk8@-TNbM&rZbRKAX|K(zX&o`7M%Q9b8o)b+9R zW-MQ&S-C9qaitCMKw=wsSg(Cd(YoSrc&QM0u0!;w>?XYhFR-uZF=b9NNj($li+ZVV zs-e?FImp7{+Z6sqIPi??A<_I#qW~gAv(SqT{JSIF+&zNd?!&ez>r9jEKoQ?=#`+QZ zL)v*B{^crGj0{t2FwL8Hb>1|sfIHqyX3ZCcYISK^(MwI=Qz%|9WS1T?N;6NbCN92+ zAj!L)p1~`3{^N&XZh!PYy(XCJp6H6pknKX!@I(c{1!I&v-b+ah7Urlmn7*A`lBLLczG-j(yi(uMst7`VNmItej`C;FnlEha3AQq*;(!0?26uSlAsagKTa zjA&LMi=(hkvzPP?i9iJrsS#~A_V`$75mEOW;znJWB@e+P%L^^@YWAL0I@d6sS|3i=9GL+M@sa+O^?%GlZ@>V2tkl2~2lww0_tK5sE;s8imfyn1MMzk^~R6 z2MjT_U^v3}@P}0pqRG$~D@O1$mcK1zK+tM1uZ%?HCK5g#M7zi^r+U8`#^d{ZiVGiwLiPbCrk-q07EudjK$D*l*sE~c$%R_;rYXH*K zvoY#m@OS>2z#`IyRYlpHVqLa6e>Q%~2Gzto?~|sW#(U|XT?%RN8uzD6Zi9`BAR&GG z$65zMD4?uNnzB)>|DZAzIR1pZKz~b3YN6$de#tFRf4sn;Q4TzX`~9g_dk}R;=X!^y z=r^N4(P14U8;!6zxwgPkaUaSca_TUt z3C{P88`9%S7x+|q#*H1fg>pNxql4^NMXJ3H;_ra!N=RwDMYoGKMt%^|O1P2i9mDf( z=BFe*hBikXWlD6xmVn{874t%b05c|vjM(D(0?7BVH8oI4&=M$_`^54XV^&W;5LZpU zkf4Mrs4?aTd@&2WVp&59wmFyJl2_{iOX1{yr${UH+B!GtpGABC#QL4Z`WCG%+Ae~0 zwj;Hc@5wZT)H=@C#G8tw(!BkvgQ~;vX>-|!szJ-+%aGv+hudo>1Q~sPgiy0y(!k}o_*vYMxqMGes@T4m!o;hR6ZOAA` zVb46F5j#)&i&bBOxV)eV?zlG`-;{2t`zXk=_nxK9+=0v5w!2yyU89R*>ZH^mQ-wI6 z#CeGpc*c}PgRhJ{NCKACq_lV;8(S_;nrF;wU7c(cf&x5u!&VFbNY#;zUB<}&u~Kq8 z{1xIcy>g^0JR0@MXq;X7;1XKvymlD*NYO0m)Kl>b z$pc1gRv~1prZn+dI(_NnwA~cUKKiU?w2wWXREzkrpG2L(wT7oIZ(TaE+fdN|*Gr6s zGUmdwt3ZC5XXja?Nd;r37f5!U{Oh3bjwK~JXSe+noj+()Va&k9_wz|MS?XMXj#1m7 z4Rh&O_U~-I<`#B!@>=7M5}rbQt7~Ge{0nM0L>#R-W+r%nlo1(!T=7%jk2BzW?P-PBIZhd*J6& zVYi2o+?oS&Y{X6*c)DYtUi3Y7*cxu+sI|SR0Rcwq_ZJqRr@6H>>V=A75Q;M*u^Y9l zjcj!e^cbL41IMU-;%^KVxqor(*n5p|u+BhLHa_jphxOSt1pA^Nm7y=A2@qwlKs}Q8 z0e^76NIPu=$_i%-Ahf1;qkeW&?Oknm8DfOgsRzA!aUwXJ)Rp?y893PJM&l>&Gk#a7sIQeqonj zVIt5WL62T|(4u5x`trkeVvR}GFUSja8R7DV~e*bi12hpXjKq=yS-wZ>KBjVj`=(3%oJ=9Iq+QtG`uvmYJ|*G>Gt4W`sdZfbzvwyL5nT z7oW*u8u~c&4cynzXtTJ4fT%mNDsvBhea}Kiq2$`%wKnadqdByx|KhyDkn3Z9)_#L2 zp-^;TitN`+prOTJa2z+^8_PH>CxE$+tT z0LYPUxNVU0Lge<+3&`boujd6wWGzB^q9Ytd{|C+w@b zT``-3tyd0GXjTBSQ$vu$Q`cM?Q z*p;*qW^}y#VK*tY5Xt=DCZ-1TL;*eHPhLY%#ZRg|r*>!5s$f`ZXUp>>o#jprD&R#5iqEBWek z(HfwCnIQ*g<8d7SX0+nfV;ZmVcozu-WgxYw6Kp)J6&VK?!H&B z$r&q7DL&^+_S3SLzRu^G(#nqaw=r8`xx^&<>fFEWi2*5`-^;$vM~**jl`A}AduF*Z z6Td*b%6f8d@WjI`@r+J-|3UW8P!La(se^x}3hb$S&=|&af}u70(z%=cfk&*DEfpN5 zK7O$36`oSQH!fcVs8_PSc`Ctj3Vyc*9{WN5Hu=b6ymQ%<9>Amsx~%*Q5C>4v0;Hnf zbct;`*Id<9b0>)sZiv&S&T>$0`gwB!u$cDaX~%1sH;4dYr38CmimcY8Cvv+Y~)w^&c1FT)9`t)iFD2WQXb`YW|A1le$=d zZ!|gB%PkCEe-t$u$6$93G0-2=@fXWghhRf2aD_NB)5bnAmmc@1PiPm}#P*!q4Xzw+ zUxUa~Gu8Yl@fK`+VH~Huc;N2^d=o})I^lmS_2#++q8G8y$9Pom2DWdE%UncTp^^t& zf*38ctr4T&s4KTKPGmpuJnoK48ujY|U!^YE>w$J1$bGLu8n#8f%Bgq#_zI5V>Nb`L zFBu{S=hBWn($3cI_o3ES8SijHE@47)*P(zMuuOKMwI=x3aLo%cuUWa zH}Uz201}idv*QA?JQ}e>pz2Yy0b%gwCc#tN!L4}gL3*5@#8g@Ty~jD}#Wsv@EU68O zs)oJRzOkWqqG^4}rglw_s28P?aKu1m-2HypFsKpG0%B_w2(iRlU^ISWu9eLh<^<=$ z5NtZ>_5jH3*xn^heyK1?{(SAg(ZFwlwP{39iAdLwHx;(v)0wv+i+s{dQ?}-dsF%c_ zAGj*LJJjE@fv1nh#{Cn4%0>J0Vv` z`MSQ3W21r&+;1VhQQ%(Mkc>N#4HLPJ^8t#d>eeI0R1?+ykEU9W@V3S?UgLSywgF~V zdlw4F+&1h9s`HTn$%fff@fQy$nD{T52sJPeYXS4W_Y)Z@40;#ub|$s$Z4vM=K6>_f4> z;JYVBfmqI+k(FIU{@j|mkZ(Jx+GAH%W1eOyz_fSvjV)^YXp}Q`k<0JbGOa%t^;d^f z92Tp^_n&+GT;UKrr}4U@)aL@xVTix6WDp5xlVXpI4RBGe>vN7QS3I=!vsHPG9h7vr zKs@XaKmY~RefkSis+P)~^Prl99@k;&bCtH*^iFsoIco_EaS@<{7@@9&QH&D(WrFL_ z(j7Q)yp7q0cLe6xX2X-~!%c4mgh4?w~3m`?R`OW{(Ww=4zH<*YO01w3}U|!Kzxi&<8*`Q%$0VCLI9eEAN&|7t0xE zaopH2*ymU?d3+qjkVh~~Fz0o85zt0o<~GkjW)+~a3SgI~!z-kaI`>-d5Th2v5!Lb> zn7y$ey${+ebiw5XW8Elm`bpK)TbAz$BI*EPCK)mubRS=80zjB|H%(~0<{Zj-$bT|} zqmgXvjoc*W0`Gakrup^t`FhhxX%X%v^eE+jNEXo2u3f>fNwj=*Tnk z+c1Tpyg*+LmmaMdPPg)nW`?ZHj={m^*1E42X^Qog!pQW4d_(@2!=W54!IHakR1J{w z3TPPI$v|4A;1{yP@NL=P6@+!9v2E4}7o4Ru0Wa*022xD#yFw2<*&$118ujI15ZRVM z=k^TLgzH5d_80G+MKVVG?RKq67`{fkxGQq)L)HCZB8gHda*XH?wWG}I2Eh^h702cGXuDjaL5NM;*FU8Qe-StL+4cK z@@)281&bKU04!69(2sNSzeLc7w0 zRs=IqUt2ogCHJKBEi)OBu+qYw7^ND15V75OVG%S0c0FC9ros*IJ_XM5C27S>Y}weq z^tNY|``|2-Y3&S?zDobo;G?P@be8v#p3ZiSgk1iU9kHstJCCN#ZC>RNDD(DdT3OLi z<^YiowhApZ*@6zk&@GSm9!aJkGj zf423sNmydWsFQ83wWAizSDj_avmkB2XKBa}fC2?e7|>eu`l%n}1Ip-Dx-_1y9-n3K zQQ@IWGqdoEYOCvO1En-GgY~Qy0bI|gmEnh=zCc-Epns|<)GRM8)UKVMPnp}OQ!jP; z#Np}wdjjK)_s5^!^XNA~=T<2O@-jy9m}JDT zkMPdN!tf7&HX+R0~Gj<13Nl(rwB zkC2#xOB{`RKze0ee>on<%s{5FeSXiK!`QdOq9S>3;y_l`4Max1+{B<=e-9#_gOyOt zv`hx`>U5C2qgl8(xEi!>E=9M;e6pyu_sADghW^%$cBP!8DXcFrryvVMLAK$B)h zcOSK0Ym#hd^GybbcYrg*`V?sF%M@zc(q&fB#J%Vwt|SclzIvPFH>Vw|9$=fbR5p{J zs@H%iLB+DJd=p4~%Kih-1}VgV!wq9Kp}h=ULKt)0@8{AVx1u*W8Gx9bRj4i(Od-3# zd9bw;1THbDaTIpX21^=YFX3G>Ro}fq9lPh-jc0oR*=RfgvFcjuAxX@vOf^fKiwY`l ziZPOe1Q}BQesdOP8lU5)w|1PdJ^lTdtjN^PiU*u@J6^EXzqHWmOih`~tq+vQBks+a z=iWQdNqC-s<=xj_PjSbX2i6`Ep9ab<;Xbm6@3zC{O+vd+JdRykKnt^^F|eI$#>?1_Iz`{bgR*;R&nC&_f#oJ*^2X z10%;SnJ4>RtH^7X{^r{VL)7)}yRmOxACY{h=k;LX`ae)ZWM4JECL5_<~IR?RsDEAg_KHVIV3gC z(&`or#oTlzsYhy=*cD!X=RCjD)Om!sc1tQ_?7mpFG*yWH+A6U6vt=$nd`+cpCHSHB zo9nGMep`ZxZU22s@%2Mh{eEc(Tr&3EBikqUXWv$e8HKx-@16?(oiMsw0#Pppu=kMK ztm5qKQ?Sn;2^HAx4UOnQqZ&MXH!c$Exn^V1G5|}Bca5zLq8+PP>jam!1bg*VzfF>@ zj~nm;X!uRvVVFeP@kXO=5sbv~GjZsRt zN|l50e~}QSAFQC@VX~v*l8vu#%%GNxjeoE zV1ymK1c;24;+9;Z+}&LtW=ivKz3<3BJpGI?4x=8MtF+Uyc|#x1vLg8=4p8|$XFrR6 z0$)&y=Bn9L0`rP%-lUrM-FJi1R1)j}6l@R@a~K{pm75;+p3Ab;^L&OFaUlxfekT4X zNnaKQ%ke%G($&LQPaHzxH7!_rIV>(AKbJNJ65klJw>BvIh>a|k0Gw6CBtcH-&XL4<& zN%eZL4+)&y(~eg&Er=%J+Ah;*KIb=-6 zdS%_!7PE3`on@@T@2K+L1DrcW!Pk;w>5~vP-oXd8{dvFe!G$YnJjb#a!}FzAMNqrU zeEXj)+Qb-U6#pBVwF*Eom{4-l(Coke%ZUa3QYH~-sbO~fn<}uaCf1J)eFME!Z0!d% z&_!ZNJI*hr`YNB5&VTg!Ibl@7&aw7%$wZnle1En;u5;vfeHXXzmxV9p@$V(-wvC-{ zP-t}jV9Rhqr`$JqVeDGgzlM*T6h7#ebzy!plkK;y*+rDf=WSua7Z|=ogWKY#qi+#d zkrpv=PGE$S(T#I0#kq=KDaZ`+yQc+AtA=87M;WM(IePm$K&2bhlE)ull0ZV>+!80`cJ{#!o$AOnOB{8JHo;q5t`z+dr@*|~ zUCOMM0>klYv7kebZ^;>?VvM5C`Ok~>Yf(|dsq((oK6+v z^Uv&K8kNC7%Z1?4SMj&~+)v`lFOE-ysCzp{MrbW_9J-==g{goQaSx=@(7PMFbUsNN zZ#lUpA&BPPlrOic+}+)c`&UsdR}ITV$lk<9d$7+}aKH&y7i*JR9*gaLTI#3{&~_Q= zW_nj@Mj>ImSF2iTF{z@Gi#-nQ3Rgz)iW}ICja|7VbX*R;;2+zRXJ;`DO;PqX0`_+i zn7=-y*%QstKp6QeRm4{kMpS4A_Ash<_*oim9oYwFV1!|>*{gX@4PRQ~$Nj8`PpyIwlxrRfEIIsNO*Y8msKXo|A#7x z@`6M`8$&_=83ujNUp##K!#`K6*8$@oB4UoZ-&tHsAjES|ZUV^D?H#p@V9L?4wZL({ zU8aNm0!&i65t7e~SG$3|I(3A92Q(uq()9E4XNW%hS>c<3=cxbf7q>qJt&RLt#GkjvaW zX^#@in(UgX;10BLh5Da0L`G3vlunZZ_Cj#(cIH6Iz9BAY|GH4=4XqlbWo^-F4 zGRmv37G%>tAKvk(`F-u0oh>rY$r+9(N_o89qOG422gE2FM{$gq9y`MNc9f!$-Lk&1b{Zu1O9nG;GR0CNKSb*-n|!U5piTYRnmcMFqLVYU;6Qrs>^d{~@L0ydz zr3hmN_dW~GBfm@zEDRmG_&V|AD3iXA_%9wbylBsw^=1Eoic1lZ{)>|y?$a2A&I=SG z0BU)bEN8zExOyta}^jnQ!}YXwxb_J7G!qI>B@tvhd8{E~I2 zLv#XdM4n@x+r?&}dOl}xSl;u@wXRFRCde)cK9b}6hqSwffM8WQzJhF0*(MCwZGWrX zbz||)%tuI*nV=H2O#fE067jbqRV3x*QXe1BXS&WpZZ((lultkyxd9g-H##YZsk6)W z%LTLzaG@=mO;DUdhmpBt?fYUcvLaG{K8m@mwaZejMkJ>9GochjkRk3b+2gc>S<)8!mJa~ z_(p1~J~pvJDa-GC*1H-5!k-|J#{BSzfiCHCuj6lt0pezyGrLcKtXTx#oa>&&{Y{sy z_var(L$-)+IFV|7*yZpUivvCy`Y}2#m>A&bz^ZuJu{~FQ_*YsSjKR%Th2)pw)1aGB zON7EBJIlahIM!bY5EfrZTYf9_qxwGrUpX_hLFaHKT^G_~5qbp}rGPV!q^VtC#tbe?l0O09kmUSk0@DiNiyq)SK^gL=hd}xPRcYc5 zD=H3;xBMZij87biN$b4ov5;Zu#FPtV1L9^$>MDlXdyAb@>s~XLqqPQ~-TE5c3Nn0l3K~;B+CM# zSvdYvYakr9U>~CCuB8|3zh4p43%_dm%)N?%C+suv!0d~*jBPi$xpbRV%uGt)eb3;| z89}(h19A_{k{5~mfZd7APRn^2jxDog0~`-czmoQFM`oP(00ft?(f{Oy)wKW&d;QQY zlYUJ6+`f~i-&$rG=_H^Z>2LkNLGH#T2hkRnV@u$StK_({E?mM5r?A7O zv2fQEe@sDl3cc(5I~*3GL7QL>@I0jOK=6NDmq=rgP>T}o*|uV3_%ejg^A#?CNha{tCO^F|VHGT$Y^gI`a z-EfopXNOtv8v|4657o&u!gOQ8h7Kfy(pYV8F%{qL(^j}xU0^`Pnz9ZV7*HuU9bIle zif1mXf`}_#j9{lNXcasQ`T-fbZbcqW_1S5N;55SU13J~TGdYClzDUVW`7x+r*VKOS31S|YL-3&fB#+0EPD0f+;la)1Zr13PoAto}t z&lLq=t+caCG(eF#K@AE@l|iLo)10Uir|QZ3;6$sCOabKAC|30x$>|&%4@+zA=KDms zTPIb}4J*$}l$67iW5pH<7x2a=9#j&jp1fDr!-5MS0|JEa2`(8(@GFccKpmB3Xouh? zmgr5_OT@?S?>9psWq1|4L1)lp?Z)OOxF1W=$fN_L>54D*n(EF2W1d<;lhBTcf!X8x7eE_QeGw zgZ>U{Mkb;*i^LZ6+ z;$kV?!xdWiR<8<4P63l>#|QRIB2x^PI1}H9gSR1n7*1W!SbdExB!SPx_QuTHO}#xH z)@8QHlRdgVnacmcmUBM0@B0QcR1G3|U$iHVGBJN&+BVu`RsdDh8Yj@8yu0Ju+`q5Z z$dqiG6Nr#}4vPD2PC%f#xU0<(BSC?=zwH*XpNyun5X^Aog@9FVb7{chVCGgorxaP? zuJwn0p7>7g?9YlcE-q4-m(P#ll9ckQ-sqPp$vT*A{-X2c8IHW_`^r*YIvS7Oqf4Hj zN_v3Ut)xflO|bXS_a}!*E}e#+zHmKG0?Q83fjz-UI*~Tc5JqYAB82vbM^6R+P|w0- zR)c$wFt`xSb^qu|gu@}HO|lnjt{+02^Y!zIk%sU7LGu*I6}=Rz;s#G! zNzyPFD1Nn(ET%v6Iu7SsxzW((p3)-OPM4dmKKurd@GLJp>Sew~r!WsNvN_f`M}f3oP*uI)2SJiJ=V-OwwiZEn!P!n^drQUG*oXr|eU8 zf_momG@dM^7$<%Vw__j^==78LkS=mf=zu#`L_$pg^jKd0YQ9+etPtMpU3>lJvllzR zcMqo_lWp3;(G0`-&^|>dyM}q=Kf1r5hD*%#rG*0%U_&ExfX4!yyx0nR{1 zlY`yvp#UBsnM*q?zy5lJQ>$x6UcWDXs~xQk6YL6qOTJ+%A+@ zVvNHgs=V1DrDp%+>&bQB2NSN4`8?SylOnUc&Y^@pr}aV5XS%iHE!OQbz@Q6H)+3C( zi~Y{L9A5eeXp)}`HRRTcC-8sa2B~C<`8_0UIQpXw>SveqpG5}p_uAqbe+=XntmFA&VxQxM9L&SV3;|r1Nj&r5gN$(- zuF6y0*wppipMKW>0Q54qg-HVuT2Ky5l+zYEw`nF!mh4UE182QYb+wMFW4$$TNA`!F zaju#d8T#6IOk6Z4%jWAl<>i7ps5X|6!!DYjz<^q)B#S1w)c^GpehZ#6WtGg&OoS@= z@hr5GzzhV3xKA1_zKC5gGq@p4& zM-BUP_36FX9(e*%&n`%xCI$8026i_KB~~bM!&UOaVdqOzgH;f8{NnesG?VIv7$hlw zX$a*f?ou^x-_W?B&5bJ056BG=C{*h2H( zag^Dd46}cs-Px=PMniDxpKjE3RGuzNqG9!^M2|;z*+#D0a40+I^B-DB$wEUEdIxr% zh%Z~?>4gz8!(JUpb&#%1&jcVwQwpQG(&E)=;$)EugnZ9OXz7$Hr^&KbbP+Htp{3=PU_fsr#X^ zHJ!0l{5G-Po@plb?=b+)+k1Jkk(H!?&U10>*|% zBZ%1;#3@*?Dx)wA(+8u_(WG`^Xr3B4euA7d1caO|+yB2}+1Sn5c~|mg|MesR!!4xr zB^Cc%y_0As(wJ6@;@=>^plo0H5w3+|pi4yGk>UIbE3O=oLCwo0-;bb%g;;|{$7fro zP0w>NYpft|SE6%OfR)xH4(~mvB@*P8^ExKK*;T;ii~t@QUx*S{@7a`PjTU$B|2k^5@L<-ZTErTFUrQOhF%16ujd?faa(Wt@A|?V{%n866gpI@%fdqJ zBDS#2EI@=PVv`G;5&p~a6!A@>CT6Mv;qIqrLPn#@YbJO*&uRwmZ%%?Ep6}s1YnWxY zzBmml-I;zKV}#EDsshH}$_}Yvt5@XvTE$B7!hMNb+zbEy1a-Q0kS=cmIg0`gSLu#z zgU)N%%rrRc^AmR%!7}5oiN=9pkpy(B{%@2SmtCtBbhuX2qdKkESY0QXM~0DbhZT@( zpr`TcK^0w@Z+0@>7~Xj0hH{hS?0zJzbZ$KwaV&{0V`_L^`D8S7Arr%My+30tnRjB+ z&ZwJz^$DU63h#}jqDsS4G)4U8{vi7*P8`eaQI$A|H|7{t9O9HO&R8a77{cJDFZOO~ zOSfm>BG#X_lNcfh*m|w=m1NV&!AXA)!_l-WT+t2ZHiJ7oELK|Rhdji^<>;VCM%RcT z&NN_L*44#U>(MrH(+8?iyX0Io=-yfRU~?YO$qXUh5s#p#XZtOgK+C~uxm+JZ-w&6$ z#*_OWxI9SrzeElP#fktoyn?iDs_})HwyJDY9U-!Tv;Rih$#K%4MQP?fcH z-N5|)e>V%)lwQFKf~5IZo_7ue@FD^*H9H~)beU8@O+MsjuDp9*Vl7yn`09$xG=gZ7DfExU z_YFV`fsC4&?+3lJ>#>Hu-do_su|rFcIKkZ5w&FQHd-6!_d13_&;wpiZXhq=&ky9@@ zwSi#;ejQ>v9*NvHwXRfK6QOSz)AQ#hzCUm?Pn5l;wEe_2)1sUp=7v-M_1e8riOBXk zvMkj&?=7qPVavIi@JpM7(X%w}>2)$$_rx9Q%$~YE=Iu2^RnYr&2*s7m$JTuNHI%4G zMU4~pQJER{Z-!lnsaDH>pfVMuZ-#)y?j2~5ca^W!ihtuhcy|>gS>bk)j#wbgPL&uTluXcvePBXB1;_@l6-qx&Q?$QNhvw z8CNFt8TMXi;`=N9i?|A)LxbPPTF|nonb-d*zl#HSl$_>)kFUiWg6D&nbd4oS-`mrm ztdR7}Ni5#~r-&G_*iVX>j$%ft+0wSS5I7Vmq^fw%@6|pDQUs`RE3quqO7gPQA*g@o zLkq-3A`*0$imK^vu1ARhS^2}lP3_X3GEZn2@YmfEn(E=r&5;uM>%)?r6Bw{p;4(qL zOVnDL@*;Wo@+^yZ$fy|rY4N|){=9JYoaVy?*T3h>SWpkkZlmzuT-6SU^|-bet+1D7 z`IXRBLD;1ci3|JSF~BnnSb(my190(z2m{s z>kQqJMn7E}k`H~U29T*mG6gpAytbR?3Cn&F`G`I7W4XOb5VB9izX1xoD#bu9GizkW zUY@SyuDWe1aPnxc_QXLTORFWzg2O3BPAS^mcraz0(7lBwj7vCs>Ei!eA z7!>`p5gg*e9Cz*DwZ^n~fc#!Wh>8z^?ayFT;ikBNGOkHvy=C;$1}LVIP~pI8+pdBN zJXGLo@P7_ML64?QQ=D7fQ3FC@YUExxGL2^>SJzFWucd_=TXe-k6k`PV7|r+Q&*kPP1dBA0C9>nVGZU6ZQ{9O6BhRrVY zQ|R~AYb?m@Nb}xS&t>pgu1OJm1%+l3mZ6=BEe_D-0AB>jOqIz$FM=uXhYhb8_U&6N zCQVvu&J;xhd?vpv98v(IW2RD-+!{&59Y{aIUxi0Rs+yrE2*?mMp-?afhqjl~9d-R- zF1ruM*KD*8C$8rG{fkvkw#GbQX-ELvwPS-r#6^)3Tpq0`hL!_Vk-)Elj zUFq{MHD$>}lD1bLs*pF1t_x?KS=Uf6E<`XNC^Z}^mYy3PzACRrZ4AnKuf=T1h^$9@ ztBN3_SDv)eOzb~|nVeOvZq9qqjzfr=ndkEE^HuMgxgbS#BTc$M?&4uM$iLj6*wi6| zQc24;O&DT5)35y>X=+MVu+oshpQ&eM#G7EhN(%AdG36QATmBj|fngg>zx_AE^N}QN z(osOrsB-L77=sJW22-vJ-LH?e&&#+PK!((BF$V^Y|J-{Vccywt zOr1U4uYY@@Lpq*-v2_7?@I%Hl6Fqf}qEYX3yX+9cTrVD8pOybMd@rmQr=|95g!zY; z%a7zpP*%FVCB~c|u5%#~?ppj`{a0vOsVO}>KmD$Yi%OEB>5`GZk_~$Drl4UBf@~s} zb`n`H_igB}@@#Ym)i1LuW^9!7Upl)5^TUY_ii(9=Qj`4KnbqJs0a|^1jdx7;1v(<= zX|={a`IUM`+_yMA^A4&{&<1%*e|K<#hZ?#>)3Z}53Ma*=zvvJgmK6BRnb3hUh1W`d zWLDZ-Vn&W213(PnIp+Dxwv z>6if$FLJ|#AUQms9c1_XI=M$6tu@jG6Tyo)Wg^kM+CFYW0){Z}YA^&gTlFJX$u%hW z25REgySzW>FkGSH>FXQ#3+@^?!CUNAk%W}Mx1(P6eX}$b+ zAA0{%M1o{^PfV>C4{##nd_kt?u%1F_*`nvU_BN`T9u5uF6>Kr-RgOaC#wM#2yo8sS zon_I}2Sw*sz~IXEDw&>zb6GyQJmKvk1OGr?BANy{{gmhQu2_#X{@E7CZC)P@aoJMN z99Wq=`UI`-@u14Ku2`XmDP&ZdP3)Wbk++$xLklX$fvIfq9J*cYn2L?w`AF^O^V=;L z5_zok&6^L`vxyvdE>|5^`GK1AJ?xBM7McCMjf+*>Z<_YwZ%y&Vox9%e$|39~8EQ5U z*MOJ|uCQ^qQQ+wvWtOk#y!dQZMd{Fs7Q1phtQzBiy*dZchRIaK41D(C2=A(2-*^p& z=NsW|Ca9QOq-IuD&oRE(nM2di>)U9Ye$!k3?cUMQ5J}$kBwu$$RC7?IfE8rdIe~K_ zzW#h{^*IZ{si%e{2vNZ55Mu>27yC&nM_h4433{_V;fe3qo&|aSimh+F0T-{J0Ui)s zAK_YgR;RBV>7PMJMSQ|jVdma3HBmPl#749_d6^HTDUTds+onBAt}ABgbT6)Dxf_Wy zy+sZb1(b%kzT-f{Ys{x|c)h(SF2)b0_(c2gL`m0ncx?6T7OiS9?-H%0hUqV%0xGVR zA3JYtlc{p~GZV)p659dJ{v{21q%^79aa&(wp?)_@)Q|ONoCpD;e~B&(O4)LS-QVae zVsNLA!KwKUXSfV%(B|e$-^iDX1zSD!?-%g>slfDnq){rImBsW0sSls)46?KX3h1ws z=fwQpm5Y>7$!%O1Fz2eoZeK=^x*p8z01Z6_?00;@T#L(%q;j)W_%*$}{gpy};a_cWX01`q zqnc{j(rAb$sri>jg=66tH>)9ofqv8k9vzK~oV?){T;TmxRB08t8_JK>4FhSDdkgu^ z<*)Of09V2@p4qLob^)Em;hE9RBOIU7W0VUK!LnrE--5EGA6TGW{pTSKQ8jXL%_lr( z@;U?JU8$ut7-W(K4{t1*OU}WlXSkd{>tCkzu7IOOT}Ks9ZnBBcKpd%s<375Ho3W4G zpRuYZJ_?0l4#17mp|x+!k{oD%`+^|lj-XESw2l`y5WfzA^NJBn23GL0i~oo_1zRpa zJ$R05?aqelbF^NJgR{kZ@w`eRr-Pk?f$7 zepmec8s1{~kXty@P;bY8g+|5?(O!}OvxQw!<$~VY z!~J!H?Hw!zW!J>lt8K7rwjV^L99iTx>bde=g4{8yB=nfndHb(5TEvn8LgEAk_{ba>%qN=zM+-F;OO;_M^ z*~{B2St2CEpPg$tX}4Gri~ZzNXa?SM=$n>BE4x)dyW8Ica!C%Kt`dg!t+2r!EP4P< zbUh5Qc$H(GN}}C8Tp~v`W;bbW&DD~1Q7Oo(O8R4)J%QXu{1KUQ{XDTl{0wf||NlAl zM7y}^`}{hL2ytGySJPyb3Hf)H4r_a!yL;2}oY-Mtd4*H-i)FVrv5~_?;SsQ9;}=`O zyH?H#;P{b{C{Tj%8hgFrm*cy=i{bqb8|p0+Vz^dnm=|+2s#wiH^|We3%IE90&q5Yz zOUplLGj4rCnhUb3bRy&?rO!GsFK1I=A!T92WA5Ibv`#+U`j8Df%`gSbqMo zHaQ;YsHMH0i!RrhC-{liBFdT0v_b{oW6Qp@cC?&k*S>HfKv6Fgmgsff6JWmJ2JM{& zQNAQ5c&ESFuYz7n4X7Cwq1iL)HLx9*sX-{^<(aFLp=vPY09v1F_Zv6@8W@bNsS1@e z$e!t)Z(I}0d150^XVvqeX+H173%5f(^vzddQ4u7o;{yZn+Es^-jA@@m=YwzCO(?qc z!5eiSiuKoVPY5e{0vxLBv%?U@e#BKEA))ciMfUoj9w5G;HBer+xLQODPoJ~sx`fOW zM3Tb(YJ9cuuFYpB(~*qIgjWARZufw&qCK%C#F1+ZS<0o=vyoQS9jehM?&#XwQ;I5g zraI~hYQwmZVR!zVqg9pgUO3#w3q~T$YN_7}l+K|Ru2T~l7(d7O?b!hAu;)=qcRWx+3Q!zG9OYT>G6>iruD z*RB)zt4ugBnO@AmloO@cNW0*=zYRIZjAOEf*p=z0C7W}tW>7va3OxSYVp#1RY3EOq zgvp1n4hqD*Mhwobc{cY9Gu&i%LZI2LT1mP;wtC%<3G2di-quv>ct$c$-`<-$;CS0T zk9hsC`YpS#p!M7{vc>wQ223?4P5SeNPx9yJ+lCXl0i>K8Y#Zcm>_dFHInlwh)uzkT z6NgUoXk<{3=3MHLqpau~AxqY#Q1z_&Hyw$Y(ev_#uiEH_2@?uk!+z_pgi-!n-BFS? z5&Q!A<=+~{(9)6HA}8vCou7c$Y(-b)r*#XE{y0vtXfX0W6fli*sSNC6bc+`TU#Wu( zVpSNJ5JN^iRmv!%!Y`QJv@r7WX*U=&O^8_2;fXU-cVX={afGBGFiX?YW$gtZxYe!7_>E8Ucrem(y4R}WtO+8GhY|Pa~3OhKT1*wUG8jw zTp0!3y3#wAN+j2;W-kw?rO>YjeS=i_TMumd?J-Xa2%C0D`$+VjURb{p-6xkT5Ndat zIfCX2^Xbp_RiY}!MNRb2B;671+!bASk`T=|S~)tBi%Wyf@H2UwrT_%Rq)_%T`z76X z)Nm}$3Ca~*DxozG(Oed<%$#--UO~(u*2iGBYhmeQ1Oudw#B8i zjA$KoMTAxxc{)gH-Xo5P$aa# z1bGeTe~+VfOv*4HMRsV=cE@qycQ*e1y7e%5>D2w8EMDI3;5PC1*^3pnW3E|e)>2X; zzV1uwC$^m#*33llq%YF3@uU}buZeVepku0x`L)-{QA!ki8YV(sjNMC?Wl?s6VxLA3 zZ;WDM>L1d6YoXsv6~P5#q!uxrchzMFR4oDs473rzN!WB6?%de7{@C9HhWh&btw>8I zI|0XxXg3hJ82gr?4n0OLksQ{jf#-!<(?wTZT>X(;jiC;mLz~~R_a|#AEPShi=MJGa1VdSpeR&4ibBo_+~Tx@l+M#nrj$2~Taf5psQ&&ibS z>;~q0*Y-VP^~kC|`PULlCcLP+@ODYPtxQw3rb7Djpbz~a zK9e!OU*uK2u;ZCwgV`V(ZZVp?%hw>8?jB3a9IC~5p-OPxs1E!wYoy_i>T;Xqz%^Om zi@tet!b<(N_0sLEIt~sEI*9NY<@qlE$ScYBHRO|{QnhpZtk0qYduR*Fx$JtXzc5Cx zITxPEgDy@0+`1-$)ADTCXf($Gdv^2u&sTCfn1Wh_0CFSJ<0`hw#mpJ7xJk5`oKAVk zRWVRnOuZP1llvUh%!4?Vv=Wi^fmWzUs0l%AUjP&INNX`A*uQ_TpV+XdR7!%mB#m5LtHgF@LRc7lSsg| zOem64q{fEv_gp0el4GppsSE;Y(O#p;>cAQ`#YV{=}4Xb?o&wm)Pa6{l*W zBPgYm&mZR6E}aM+5nehhI#&M+nETy2&Nl(6gl|=o+Rev+;sb?<3 z6+s-GM^G9^XZ2d#n2AE20sku0eH)&=%jR}wppMaFNS%OE^Oj<2j9OIY^2mjivh{|A zWG#j?7vuB^YZYm(kQjLZG5_X}%}u165W=5rx_|*qah^=iElb(+jO%#hDABoaX=X0`1TgY~=iN zcS&+rzrv)6T4Qf zocu)XsBmE^begSNTgQjsbQt=VP1`E6sH`GsNQ2eH%~mUBjQNK|nMMY8_DMbLA&Qa} z2ds}=f_^LKXNRo?0dsSSiYWFU7<|6$_D^tD3vHLhm6=b8d0`nX{Ss`aQDJ($N2gP( z(>{fPMxLm-17A?BcWafDyeK4W--T1Rj7ijGJeVu#wCQ&g?pvu=?Psv{LH4=JGuU<17$0Q*jR&-ge;Pzc z?%1I_*F7#1f3AhsGekCc1f^?nv9Ko2J^^%4NUb%Tjag8`q3oo!EAWqe|9b6gy)j~h_^O7D|1o~_8N`InU zbPq#z4kvjp+AdmNqN{GFdT=DsW!`8q!>i5$L+C_iz?!8dwB%60Uq!qOi`u02dT&{3 zCAEP+W4t!BpPO;l2r6fM4!a=%!Ca{l*YOqBj~+8%0=%)}Bc}ljmsBCHDxGW*GPTn$G7CPxv~cLH!aya+;P_;BfT*I$s8yZZgBLcoBRKU=Y|%gT!oDBRSBA8 zmIK(Lgel|u9(RK+IBWV?JjEy@dD~+4QuyD#r6FCo#0J~_mQe`C6a^}=dl@{27F*HT zx0@xO!akB`flQ4i%xn;rGNV&{$*0QCb#@=16N*sezD7(1IX~w_{UcoC|Iov0gpc!~ zpCHZ!%>fudTNb&=97Xw2h*CLQgf_gGXZ{}4g-^q21@6wOZdkH?+Sm6EHS)b{H*DhE zmRrUY6ne^CdPAH5l(2mcha^IW7OW|WjA!)$C$73Ii8{?h$7{{4j-vvzDR4-|>3}a| zMCAm)&E^oRtvw?Mya>*h5$q7korUpH+Fsi+P{@~1-{s~N;4NR|DjVYRm;WY9(>%56 z#K@~3Q)f8@=H|23>Z`80CT|+3rDixYq$|uLve%z8bJINz*dQ=3+E$VGoj9b7!RMTo z^=_1tWOZIH?!aH#IBjAc*fepD8wLK?utF09LTpPZ@35~R6EU)rBCC04LtJ0ZTuDT zX5j56drt5Aq&&z{%Ec1PW)95T?=MgkIzwNf%mur}47!DwXmZ@=NFEJ|J5vITAMVtKXjwkvdcfLqvEX(J6j z-{$8AtQ6t@4N(uDI?FVQcHxV&cBc1v{|SM{FRA!chmJI6v4@9g##od&qP(-=kQbl| z+#^goYMQCePsqQvXNj2A*R#h&R%YEh6Jn3>+0KHL(Oig7W*P&uw{lgoU#k=tlUilq zTtP{dUy&Nx{@jj;S#D69ZxU0nC*oJD)mw4rSiIVl1@A%YjLM3mkdn;6gf?`?C=uo* zhi!1~di~Y|kS#x^qgX$iFS$nH)7TFag)+Qa5ct@dLG0zqLZoFTU2Mx6C|5d+t5+ zj5nY46Sk2mpvD|9Tgyf>kiJ?`*30p1oyiB4JRzsx&Ngv|72ED2iJDZvM4M!)i~Bt+8PaiMEhRj{VAb)P0Lrq;0KHheh6UgY4v=&MI-1me^JZ5wk+E&Lp=Dp_E@s(aCC&%>|yqu+M3n1Ip4C$z`5&k z_N=??x-oF+RM#>cO;U9(lT(r~fHT0oqe#vLg6-iFMGh5e&C+yMU)>xt{np&*xz#T1mZ+%c$g+|rtf}ZDLd8{&W=x)7DA82W| z!n$-A4e4&NXy{vKXOEs+qTC8fgs5|I+qT|YpU%`Qpaa-hd6u736NVCMWxj3bPG7b(v75WP}a> zcP?sIu~jH2aW5jCA|&?Ko27u9g?H3hY|p_WWB;1=|!+}fb z8|CjqP3%mk^8P>cTe65E_?fBa43((Rk(=H3`DDebbh+LGqzYNFe<5m;kR-^|-(Hnr z`1LV8t=T)0T#KVY!x4NP=DV1VSK+K`@p` zPhUS$@Y>Qt#^aV=`-+#@!&+{X9fOFG9i9gix@R_Kc0_e4q9t{VG=G%?`Jc9$Cn~M^ zHEDuul17em%URq<^O3-}2&TPDMz^5r5fV0YTkXre0ekfFheg|zak8%C^uFW} zpk-KA2{JoA`!t>ya+W=P)Ag{UgG*3o(n9lH@tWg&PA`P?hkYl*h->KnEF z<~vof+nde7k)$bHyRQ2%Tm9g_*JXz31#mdfy_Y@4dN9>LK$y=sKIRcR+T#@Y?FnnK z{$>h&o;PM}{VTbas{=tTiF<;WVcJGGUAD`7Uc?dj(|9_#1KMk~k1Ww81nE>Ib3bH; z$x7ac8A@c6DtzuSW}=PEw5ES%Jy%Sa$od>;%1ax{L{@4E1+gOpxnqR4VZ&rqCc|Gw zfrkybNw-v@C(8^--dB`7F)}Q^joZVA7gcECKqS;2IbI6L=i$gnoj^DnG$x(385}?l zUv+zK4(mw({HL!J!oIZnCE<`WL>j4uU0NeBQ=Wgfd_0s(`NYlpI6QU!HCFt*ZU%;l zcSrntrC2vEb$17=DADsKci$Ze?j<#?Ly1B!wd!9iyfxWJIzTFK7EVOxz1ptEz*P}< zhy9^Y&epwMA10QVMsOFkyl*J(h}V7t)B4v)4P+`ZbJ|HP$%6v_$5ATIZA?$SI_ey`Hx223N3XBP*z<^G9buWEN zBrZIi^)DKJfDg?X_KUD549X8Nf=pNeXK-Np6Lx+gyu;FZ?jn6T(w38aV<_gn%V^ZQ zQuDOc!ZS*QX7L)VE)B|l-0((Y39;raJ?wom{O=D3RVAvj48J7<{E@k>xi4TX1qFl5 zVdLhr?Uwd)svauLIL8j%?3S+8XXA=)peWwatwN(PqHHs@4?DBnDI1-cZOeSp!3l%U zE->D=(raC$AsPP--eOCv6;+JUn>y8hR;;c_K$a}hKBdBEakz#SG1|s)ZuSk2vrx{9 zW8z1f9O2v>&t_VYSdjykNF$7KA$8M^LheE(5{5K(L5HnN*|#XUMD?mb(IAXd1N2OL ztyBZ52LGBZIJJhC;61Nce3*o9vM^S&volQ^U9D$83=qmkUZ3D(Ul_Ep9h;q(E~ z!`0PjCy1t-fDLXbly${LqVk2-ZGM=1pr-qX0;3(%q|$ezVFIU2)ev!IQRs>RwV*>` zbK&bk5l;*CpYn(ij`ez3gZ)FUSIViyltV{*$i5iIDEOa=tjW?cBG6f`)y<1X0T z(u46oodaEMczewEuM~!>(}cPj`Bc*F3vU%Qp!^ZFCkWiCyI*U%UgoJt)a@RvkW1bp zaA2K7neEU$s!XRxCAJd@6x-u3vFs=^BOeEMamj_H&vj=Tg69KS9t+?YyY`x|@MHAoaHuwP1PX)zGMoln9D(E}=9gj-!EA~N@ z>JX3pW|4^3atDOkL=s;0g{Yup6AWe4;QuR3p&8cxC)bH9XS>=F)z?)T)ib%0=Fv0y zmXMe?VJHmrtt|ro3&to%b`TNuo|s)yszzJiPD*rjqFb-WE__LB(ILI?F{D$)GwTCU z&lEQe^-Qk_6d))zk_ML2#dagDDxda%2_~MtbJ+-t&ACp~GpU*ACuEia5^)dB%*)^K zy3-d9UMyq#L&DJ*$1x$yCcZd=L=2(#O%J|Y2kD%h$L;HT6Rfxp`? zX11RR^(_-*dTI9OcbuQ}>>3N`y{Z9ZW>73xo2voZG^Jm>(~)hX*i1L=9o7jH`i8t7 zu^kGg?T!EKA|ywRJ8o47rH#!?K*h?!fb@sfo5rGor&Sw+jGg{j@x3gDad zLchWLD_25hAY0{DOjfq9R(`t8H^=juivPCSeN24}^eHiq=kjzi34_62w##_Y ztF}7j`0%KCkX12kO<`||51y<1H2^tP&bIFy4C`FX(#lC*{*qf5|=JR(N0_cyxA+$Th}>3s_8>l7oKE@@3ts0`PYR z4SIq1sgn*H8SKM*q)g&`>k4zy*zvP(?ol;bROdq9{R917E=rxRc%469=KiDNub+1o z!YohH_J8y0c~-X?c)^u}%>7k7{OT^}SrpHS?K?;tA;<{3|K6}d6SwonZ&}274;z2V zo@pg)YILlhrVJXFO>Yr7V?I3v&S*6~VQ-EdXGbJI|C6cRPl0pW(gnpOP2Fa0aDqqP(Av;=suJhE3= zemU3>t_Y~ongOb18IR0oC{@>5o!zR89+j-c{tjLdud%?N2Jpo z>!(U1D|p$N{82PJBY9UD?YMyOx;}HwQ(iUkJ2Ls9h3)toL(}kZav{uuG(AtB^p|`S zlkAFdI_YLvxQ_8N$cY+OM-{((?NCxE& z*_v8gIiEK{o9W?jDI_wnp;%t9f;}#V=;Nv~DzAjAwBMGkZIplI+n?)_cyq(jK!C|& z|FXd>cdTo-I={2xx0yIrpXw+AtwVeLFPPOtD($L(qrj5xtm`d4{vR3lhP`Uh;~Ea~ zHet}fp?v^xn9BEPCZdC%2M&A$(D(3PC`6hS5M5~v3eh2_QZ^s^WP1$8RfdH6%Dzyo z=h}=+DUY3dIUof)H(>W4U)x@+l^kNJ!lGo}^lPp&+_^a)cnv*iQph#>{L!Am3UGd3 zC~=1UO(54EmTVHF%oJl?G3BFwR}p9#?SS4-HQE4I4&ui{tF5tA5dVP1Oj#F zoSyPaHq(Dx`Et=FagpwwW4r;N~FRX;!;yP7xFRYSMJUPEgfs&^V=5p zMY%Qshv*yp_fVZ9EKH$(K~REJL{hzm4;L+Sao;vF8phrsYhd#`=R z?*~KE%e1aMCW(Nw5Io1Ja_Dh^g|R`YyX<&lRnF+~{1J1abCY*uORc`QThnEu!0Va{ zKn2pHLNN_aBlR1Pn`h6PdO3$-9P&;~U^m;Z{7v>Xx~Ir)vP#o*M`jJ|3T*|J=EkKt zL!$hys!DH4rIJl8D6CH*h z&RnG_tGKzfu}t4WDsBIs>jbl4M?I`qhy2F$zol>3P~fSWhcMHMw~-S&>mIg*M=}?c zJGdNmK1o#DFR1(WlgFN{5@(LeD?!Y6@c8*z6TQP-SJ2MP0Nh3~&hkh{b^aXC(CC@L zAa%4c<=;@KqfCR50yNplIb1nt_oSukLIk@+Tx3xBN#4rF46f&;_R~9L{AMv3eljc4 zZp-r}xv1Yta9c};bKqBJOKBZcT7x*c^uf$F+?3-lH+E75&LBL8UN;&hYi5~&i9rv7 z=1VGEmq$H$?YG2)Z*X$oH%`a$$EJj--@~phmz(pEoOauNSdl3gHN$Dd86 zpU`@l8k|lMgt6!*hd{?9#iQ|~c-SbRuy1#;tbAzr2{OPPqbItxsF?qe^L^sbNqVbD z3-bL^ajn(}jSqAbporq_QuYGeSq_ZAHazwDr8uHf@}4LJnc68bx1N<>(`3C^HIS>I znc0vDEv&7v1h5*!)i$S1lHA}=;+XPY`iK4g9Qy7ap0R{}4({G!9N{NRe89b;{!~hN zR2@dhkUJjse0uV|4*aJE{cxB8U$Qqj?c42FQX{r^|K_OM7b6c4fVhnGUFniegPB5Y zm$@K(W<++?12^-DxAU2jeJk}Dw;ja;z5mjbZYw@V^|AQmc4K8qN#O#lYOL8aug}`B zR&4kZI@$*0Ky#*+uhX8Cc4ym=*?QP9M&!6P;H&Cy;XJ*ojYS-UgMPj{UW=~!gcVw( z1=l43aSkosAz#EcQBqx|ySpq-3J3Nr3h}Kv&IPj?D-+!BN2A!HN2`ilE;FTcRxyqV zMIL;#C)MaCM$A{zzhO1dtOm1%!CA6>CBjcmslvl6(i_U^M?Yokm6*xE@`&~8VxR~t z>isV1jioEyO2t4J@k0MR&;Gw9T_EzN8Z(}F7vB*Vgv(VDvsWV4#Hop%YpDw|q3u-t zZRmGi$6S%}zCRgo4B$3*bvp%c?R84Y`%KNIsxMgzOE~4at9c+m}7gs zs{6P^s+u3Gq|@cy(5~48=rKfI9RXNl&YSxZXi0U~zeBE2VmURNzkGFBqc$9blL&Hg z2J`&+)tZ(-eYXQsnmz%~&5y$_Yyh=QX8BBjMu& z8Lls$G$7 zQ(AMtr_2I%4;o)GECXaa;MBM&{6Xn%KT?lYtDOB!{Dfpcp*K5BBdWw{ZrHkHYs4g3 zUOx0a2kioq7|QSfw6EJx@sG!dMmOZI`dxGc*WV?Z(KMM3rme>6if#ARe_j?kJ1&df zQXDoZNFRna9+JGngK5N>{(vN=2sfXENKnx(eRN3axreE{Q32dS{D9lPwjWuZj$1fV z^FyrBY*j$!@IuI##?|lsZcNgwvoL}a!jx$EkSME}Dff!mSYpwEK|{|y7^lSSV&1f3 zO}qf6Ui3%$J;`UcbIlHEBdhlGWC_EdCHm);6%^4?s6tFD*w@rvVQU_!i4)xLt9%?8 z(EzG5D+dx2YU>VrPQdMh4PCA8+46eNV!~UAg(G8uKML7I;Q`8SpD@%mDCoo zb)Xm_FWL0>szpmIhSWUP_4!U9_eE7>%!%Kv91FM2^wi?81~@}Y zUO2Qa>DM=7viQKUKeI)e?_=x6T)|TwM*O0QL_18T!qB=WTVEI?P(9El%YUPtz?!Oq zf+DY&7ZTdKpl{RKnR|J#=cY4|Ep~z|OPahG;jMS?Fg&9Hx}kmr!$1H0KXa=h&FEak zWan9%Q0Ezk-yH68=QNf;geKf~2`g;Z_v4Ou3!iR^$Y5{qnO?j@P_{V_ zcJ*%>dm3A$Y9q;7)M#!J?^GntMN}61uOm*kl{)RQQN!18)Y6mr-1Lo};`<1PIH(MI zh#|{06NfTUQ$I$-U#8B5^LCG=_b3&gw@&^5ZI`zWyD0>W5cOp!Z)v~Ds=O1H418VA zpg}MsU>dA8N_ZDQGpQOn4H~PX|NTq$cxi@)(DT10GfQe8+aDK|c;3iP_A~XFA zzW!&y57XTomIm|48d}8+$vAT>Cs_}!6B^$jwYvhvBVql~HcQr!{+4@R!Y+?tqrfd? z;nfcB=exp>Qo7^`OCQIhsLn%UIz~8S0tA`?a;BrbQp^^j3h)kYK&6uHy1=>`co3H( zoD-b5b-|3qeY7)GF0#EwlDk9J;m!jOC6qTPRB%^16HOp?Rn>w|rXV$JLL0fx+j+55 zJAbGcCxP)JmL*62Jl`*M-t9F~9PDAhXObwhq14MyGr(p%SAHPn)KIi(W8D}bG@d1|=aN}E^fV&2^foI`^F=VsiNUtMl6U?AJv)*YCF?#*>jp@e;)xS}%5 zx2UUPn!^ELj*}))+q&D?YZo0AY{pqFXt32!x?f1^M>y$mE9;k!9@2h~Z`8pP52IL3 z53^>M>j7Sj{~af+^}<~jd6K44wCg>0*`*G#-m6$fePReT*m_@jQXIo9Fo?Q!?9yMP zNE3V;E!NR4@U;r8=BjvuykxZ#LM;@k#lw2_l<+!2x_lC|IxMzbvb9{{j74u$F|J

    36tbC(E$4kyou)}6LnzV~;3wQq~`HsjJVGwSR3ktEJOq~79nzc7s#8otd9Cchf{!sb3wzgP>dWwATB4 zc}%|H#v>AhT4}l2d<0uAzA8Uz#IbgVSHC`@j8w5ie1aOJiUed{cf{U{EA!nSotlUN zzikU&I4PYZRFfu1JHq|z-W;F?1ixK@Ctgnys!0>13*P5f#;3kM)z%<2Aox`qJn?#x zP)(X3?Wc;GG=X=W`K2DID!X4xjS`Ug%^$7tzfaH#sio|Qs`-_9lXF{x)WENP6UpmI zLVcwP(vB!_d9{M9Us_}nh(S%7Anm*#vY;~lZJDbwznl8qH!_JK-zW8e`V$fGQMtOo7CHxqDu4oq@|KtHNVkkiw z*E#zz?*V)`z2@%CTgBUb)4~$es9()f5d8c}*YN%Nd&OPu>1anE`USD|zsBXxJGx=0 zB@zVtG}|_6x_V0ORy_tK%1Q~yrCA0_>!HhTteySYV2_{`?p>5!=}zg;A^+(C``C7+ z-~3QUjMDt-?iB|wRDv3m4++S8HgqxWHZlHLh@k|nkSbnxg!|WxSM-aN=$B!paN3TVm!VW6iu|)55%j^C%@C=giZqo0t5n=ZxrU znU^dyPotcd@VPcgEPt}z;vdbtq(@<1LSMMQl1R?T*8I0?>uF|Q5^Un;B_z};nGciq zVp*ZiStgLR+$g)UI@`=kcK*@LOQ=x-GM}k}V7~{aN2i&2$>xQ5i4wFz&RHTs(CgWc z7L7LZk_m-*2{r0hpW%Yw$I17%-qXxW8W-jzB-BdF&E~_-OGXyvC3>y_Wu%HF;uF*$ zRU{zux+C^}v@-wr5ALo;D_hTnQyi2|5~@iPJh#CS?qAo>sR5y9PVjn?Kn!Zq1ZhW% zH1m=(3-c0cK13+Z3bLN6l1(56HEDvhi}Bl|m2u_2+`NPu5PGT#uO|t_pe9X_ zHfyg3?Na;W&0EKBT;3zr=Vg8J2CXNz1i`GU&W)Q?yLkzHrDK#Qs8Pa?apiz^@z6)z zyhI7g$RF2Eg5aR{rq>MKzE!-_8aFSYM*V7@%r5d_UBef*-Yfpwt!`dIzaWl2rBS$_ znU`pZ1i`V7Z4*VC-dQ`g^PogoDFK-)2(CVcOuMnR%SVGff>yW>Qg%d_Ybx_sG;!~@ z>uEidZM@>z>!5D!7J}$sAh_y;@*x44t5hyVS3_KoLC^}Rq9;eVf8DbI{URll5d&}5 z;dCgUphgMEJQ1pHf>ww@*%9rRROUCm&yCd7z^{HY%ibdj8-C;X{$XX`(Fu(bi#l|Oo;mD}@bl()zhtyY)mEQf8ZKFSeS%OclseCi3xb;r z(fpyU!c!lZ8May6A?kYW*s$5}-NJ1rcZjBKye{nDvAgxe6YPTE8nbsdcKK1^t`FUl z&?qtMjP}t}18xhS>5li7+8AQ#j3dKMcb=Lc)C#F8l@->)ui317xc0JJ68TW#)0`{y z)dLaZT0?xk-QU6$d*7HK)Jp5gOm+?N!}^W6pXWZ9$T?EN-2U);hv>h*T^p|Y8{Q*B z4er==O>V;ub3)Z90hwn72Ei|84{~1pmvXP)@rXyzYPQ)K9lZblg)9Dwx7!+;kiTo+fC8^=s}MI-7Gb6>K8Ig#Jta7h$f4V3L7o*30f^M6MTKDB?6P%Dl^n?HMliLpylGy3$q zE%10M+|Jo9!9a!ZX8%gwuZE%ule?(@?W6JvJ0k#U!ibHg>~uS^hX z1y4Nn){Kd!J~~}IEu8)S!L}t*qlD%!2o{)B9haXT_FB1Lf>0~O;HkGk@T`f^VBHPj zZm+pFgs4#>Syp%(cj569!+-CcB-9EqO1*ZXDcxxsuMYS5mwRuC8YKp|>kwVN=ale~ zraPFjde{(0*B=`G^qza0iiBF}h+*EQGQ@F*%@3RXP+hGxsCDz=wwul~(Ul^iWhgEIU1g)C=YU=#eso{m~|7&7&F{xUx z{E6_~4GnXuQNN7m&Y-)-5QnUNJp5ihPLH+Sg>XC-%Fy!8Fm*4jdRigxCo~#=LpO{p=yk=^6&ijXY1g(zi(;+(0 z^z)Th9%5qP{lo*$864hp=e42E+d^}f`Dw}>VfO(Qc7}u2<4&!+#SoMK7#?2yrF-L- z8YSLo-XR*X$DLuL+j1txTGONERZa{)>VIy+ms%zBF~qzNmuq@$c+$OtEWxxZadX2C z(T*S76;7RlceZyh?W*gFiQ)c7_f8OMmCX73dyR|-tsWH)X@6>{8YMW|x%a{kH>2o( z%qaTWy3-ScT5)uB1ZMivpRA0}UOu%J-+A!sJUkCjM$SuLBJDA4Ld*LNagrfaqXcB0 zhmHtlRoD<+G6-716J-lj*?-ONFR3rcdir}dp}x`tY3F^$la=|N%ct5EdTP=HzkCaV zk0%|q0K~}!f*K_tm%b806jQo+Q@S>W60}NwR|KNv_l;{0yzA;bzNq2XNAOEozZeRF zaeq5Bsy{xgz2R?Hrcs4)Ejo;cOi5_n+ zU$pY&`tc#d&awo3DUtkksrRz&TJP24f!Yn72PO!$($pf~L9lU{d58DH(IKMiuN6?n zb^gMDPf&wYk$}wWj(Fq4^W(#VAM9Q#HEM+zED@ieMhVEg?ueK7Y!UDBX)CXEX$68M z?T9Zgx+eZ|v(F+#=UG9pqO2w26PjBRpn2U99p+ZXjed5kAGCsBJ+p|{lSDctN>H{$ zmE&Bmr3NwdG%H?D5{N-fnjr1G&mLZxUwx2UxuXUIe~$y6cs)s|CQXp`Q$9jr z^=zta0x_sb6Qo_L>dmXnzw@zMPoxF}f3F6fcs)s|CQXob#2ts6lka=3I}d=GG{N7^ z@d;{_fXwTT_W$ruxC1|Bz&YE`zhkaf>dDi@j`Cs(Qt494oE`48%oD8~aUd3T2 z_V)-{;Z8)^<=or{<8FmH1HbNtU&_cizjrsQ2GM{gL6|$Ioik9Q1Z4ikP$@6tzxzUFj_|@NF;`JnpL3Pwwvna4E(wmektp>wq|Yj^+TdJ*5zt1InT`*_^qxIkO!G>!ymHW zhHroR_0g*fwliO1yE%jY0vNvsPZFD5{raL;s_VyxUhC!z^o5cpk^JiS_C}kue*5qT zYVYsv<_sj%Dwz-D{Bbj9*kgj5Gw5%4QAVox%V4li64W47Bp~y;Bes6`{P=|3+?;_L zwL%P*h)+kC1{1zQg-=xz|0vwE6f?F zfnPoSo7aq!DJs7Vu~ zL6m+=2v$5T5Himigv?VCeS(@a!7~qif+ygC;Q4uwdGeo6P?IKjj-OBPR5uVj6Am&@ zv-1gR(ge?@^9i0*27>3DLFNf-X@cisf#9Di`$W%^J3vs@vomOo{~f`5xDt?g-CEjjGax~utzCOp`PNPi zXeD%HNcImUXa!nN%t{g*Uty)AHpfaoAJn7?z2hWfC_yXGdRI#l)WC}OcF6QpcdC@& zUAu0AR*1nFj!#enE7tS>o+>5S#{3w}A^g$`GHcT(s7Vt%o2+hvR-j9*3hsaX8nai__Keo?>4$Badu4X>SikhvZ-znO3>ZhW>U=CZx{rxRP~R){_E<+oAi6URy9iK_rqon^8SHw?c$Bi zmvx$%Ak<2CGlSrkU5Cf5YF9qlt9P$j)hMA~1DkhJ_q!_o?)>#_W)A6?Ak-?kQ$6ay zYvLU~U$i`IuvE z`?=ttE^Q&BWk7ysLWPs-pKjV!IYO-<m9l-D!x1sd8LZoJGJ&PwTR_34$kosb9#v?!2S+AgM34LjFMDT)iZr z8YL(z0kSHeMZikSkTFUGOH}1jdG{rUyfOY60)y`tWTST$*4 zi{~G$nUde7Q0J|CULD`Px=F3(LsO`yp9H~USN5;|!T4WVzh$jzlz`l*_4Jy(y8LGH z@z9#%+8+D5|UHMzUah_9*NC{~U7h5Y%avuZwGi?@&t+P+!a z6}ykBZF1+(SaYjqmVhYb{H)rZ)pw3+5T9~oFI!gBD50mH1i_-4p07TClSc9Ncb}0U z)GC>(t=n#W%r=7#jUQ?rT7v0SLeFF|Z=_7!`j|U@?+|}*;@$~Dt+YgJE2(1JLUgtU z$bBz)#h#@%wbe1v6;G|Oa(P0nw7n$>)hN-h$8ph@RWD`4P(rPE{+T=9r`ydx)&6wm zdGY$nAg5;tsg=^^WW4D7+Idg@pS^oBCD`?*6=Ys_F|r6~l%VX0Bc9$+J9X80arKJb z5~)%vJyj_PdYXLvYVy%++n|PNM@sZWG16|2e&xaqwWI!VUOe&C-D^~%MDoO}H(LEz zJ95!^@%TNO)u=|#*iujC^rViz)&BkDbL0I7{9LUXCG<=$^Y+fAjpF>-XV}tJLalh+ zmDQ)8Y#Tq-`{cOAafcRTK%<17O%?^t)}-_}yh^ z#`j#ked3ffJ)uiInO3szZ?)^rIydh4+fQv(qlBKMWlpE;xS{sJU(Sm!+HJ35%RoNV zDp}{Q|KVTrL|^D@s9W|y%IKS}&g&v*#nk$QYS`yt#hz9-p;p>LU7D_V+`Rd+WtYS$ zn|ih(;_>uN^LF&yC#x?tcY|~5x2#Z2n!q@}c*Y6lJsJENU)!X%)5%xoH6@x4J+&|h zR^z8XQG`D)zAc#`VXMNMXy6fOx@x;Lm@~Tln zPc1ZeoClt-o@DMer*G0IL8w(SRp%VkzReZ)hwPaX5tn|sG^ z-q0aIsFjw8t3lJ!?Z|-WYz>sJYjb*{^&|<-GVt|)5}XHtP7Hs1XB`)Ypt>F~U2l+bSv%v*YAT^t{{MYHO;eb-iKbhXlN9fDxb zF$3efXE!_Mre9}P=$W#5T5OVNU42>nOx62~x}LJKLN!Y0sjlXI>Jz%gJqDb9%t^mB z%`2f+np!jWnYC}c;E4a`j{Eoon{%`)l!+304r~xCy`g#BFY1?j^YYdSLanr(Osg%d zGkks9YxX1^zQNCR2At5PC;0}!;TtZGe}8A%)89{hA(38w8nW^7sTbX@ch>`2LzFfx^(_kx;}V@46K-T$gF=q1~qAd zrBF9PE70Xz2{o`%f+ga|P=Z#Vd9s;LPy;I^%9j;K0}vd$Aag|ZW3aEmihUchoF^Py*1=-C-OvBHl*4Pq$4^FVw;Pg~H_9e6^5Pf&vx zO6bWH$qsBXJpBIP?IM34Zoi% zp5g#PX+1k38H1WMQ9gzev;xf&68uzA11lwX-T?^waeGBNqu2ShH$yHG`dq6tzXrvV zz70?$RHH=s7)q!WRuC|6_hYCgizv?YgWCPNgl9fJGOu4z={H#Lgl|;cs#+A!tNwSr zmKB4|YLsfy#NHR*8M@Ud07{zUd$DdjzfY9EBh_`kf{(xkI)-W{duZ=6kdXEy46Eq2CpnRp&dmK4#}%&8c-=_f8OMr6q#;YNhS1WDi0$N{n84TvYGZdoyAvp;pPS0ss3*-`e`? zhuJ-0waSX&*7UOoXq2Grh}@@ti4VTx?ELeW@0?={XqXbn`dxAm?AA4i|9frk{LTlo zOK9{9Y4sEY{~B69zVE@a@;6Q1F%d%v{f66ob9Y;#_{97f`Tf_=Xsf=|O20TZzvs2p zHt|#Uo|3=gydRELjeaw%o`T@0Q+A4njp&wtVC3gZRHKA`KWz4EcWM&vbY0IxeV}~Q zik{r))3i~e_{b?|*Wpg;}&P1m0$kuwlzwqm3|Fu)-3N0;x|t2 zo$vT+u0}Qb1+aQDCybvM#8-~)onLZByF?5n^b6M@Kr1=Ow35ds?VKRgiY=zNn^EO@ zNmZ;Zj(rg2#-0Y*+Lk4F<^c2I6RJ_a>}hoqYQ=n%h?xsU=I5Sge&eNZk`CSw(32?; z4|g^9=D@HkAFUo{?gp2eJrLET35@e@$KB+;YQ!f^Dgv{!uPM=d=y&^O4SCWP)jiGK z=2x?qqZ%b3V+40^4xIXa*ml^St14E#d#OjzO270Eg4gbCQZw1yZ918qebuO6$QZ%h zuKw(GjoVhO9hyI8(a2iOt)BYiemEY+7;-2|-=gWsk51U0bY`-1;_ zs+8cnihc~{5PoR|nYHN?)T9Z1+gUe3E70Xz3E$s@m42_NZ)PTIkeW1+{pF;NACP~V zGA+dT@yg1THI$K$(i@G?oPE=?_6=MRD)Y_UB!SU~8Xbv1^Lmm{O`5=1SsdZ2EN6PJ z5|C-7sZGXEO`6c0Crg*_Q=)YFHYQ|!qcKTPlSS}-(Gr1_eEQpqHOp_lwk_mY|6WnE ztluqG#`|8M?Ka!KJD4Q)e`$Hm|FwF=TD2O#v}WnC6ReE7Iezre41yZOPy%nKoY-T; zpAfVH&H6{_CR0TXtd!6?_X(sIgq8yH=f|KXP5f_VMJv!NO}pm1oXJ#C11lvUbJkZk z0V~i*?QL`F+1YE7poTF>pl)VR!X3?XSXXQ zXvKV>H)p4c{alIiJqr0y0wX74pbRle_%Wz~75zd+&AO4{@Q0g6_bqk5CxlV-;UC_t zId8LW#rNSL^ST?avIuD47rjVn_dKWstw5+>UUzLbi-0DJa4`l*KGYXwSm9Z;^lq&Z zs>vewTpl-M>nv4Mr)<2Od)aLUuds-Pa z*mVC>>}qY2U~~}aRAuLb(LtnB#kJRD3{901$RA3?&$$w`(meTu<^y-meWM;W=NMhH zV^9OXO5pBO|7rIgSu!6=&A=v-xCTIn^^iFCz=hVPT3HD~h;2*cL z&DH>dZ3!bPWm@BZoO|w`8rYUFkEVC-~iGxrTZV>L3nB~k;cG?Crfm4M8afB%9hHnz=iafJnbSyqs> zK0s&R4X8;IptHxTGyyBnD3Raic*%5I2O!w;eS#WTDRJ@v_mwFtC1}MMm}O?i;QUhw#LF&S#2`T{#CYlZ z=^9;m8x`*SPM= zDvMywNgy8N#4Oy#paulvDeXo$jX?sMEW*Vo%)%2fI1Vx;+(U9Plu!-h!7s1780kAF zdK8}AL7+e4i4HPae)iKHYLF{8s2i^6pgywKWZ;X>XXssA#X*nCUX#%}(0Hi-?58_w zkai`?r%DN0fi9maYG9=VWUkyL$HX+jQecVrJ&NUy80q@RjzM2(0yUfcw5&YjmfnOys5@ok5C1?d2*R$KMS|JA8ae0Coriujem%SRL1g$`$X0ua8 z4Xn~c_WG3)kYNRy`;mU>Qp1#xKn-T+LkU`e<}RQggBn;V!4acwf>xkQ`<&^~hZKX!F9cCxxsU?tf+xsB@#~)iJU7zE6~6F)U{0MGQF_M zKR7;o`nf;s>KF6pr;3_1G5VPa;jZ=s{&YT+pcQCb$Na&MfjT&Nle=w7&`PRWPqH#f zp*T_}a!w8WDuGh(|LQomvR#&-6=;-Ob_{A@r36YHDfIK91g$`$K9E13(DFfjRBiWS zu|BfPilqp@N}y)vt$#Elh7z;_jb70C%XIN~zZ23Mx4Pq$KdgBRYdaV+)0$sjGv2I}n0(AhHZ6P~VXmM!* zDMbC(P0$K7N+i2owV}MC$`q7@ZjpvJ5V=4 zE5u+5eS#WTDFHdVN2Liq<7m!poEZP&&dIt(49dLDd3zA-IA%=kXB~&;p}`s=W)@o= z*4(Z@VrGHsSdHW?BM3g+g^VjBs8ubeqYrVz#s47R$3Na|V7+;!}9+(!d8ubgAyP0(pw1OwfmIyvK zF&d9?ZI>GL%Xp>!QI0^``NTrm#VF)F&wRj2{X#|=mU?YDf>!WE*~KvBRDtqRjrxU* zw!mi`LzN+D1y7V+jB=w7tq_A_jQKUeI}VNBzIaUS6I;2~j!_LGnT~Lfd6zK1C1i*% z4DomdK`W$+?`Qq#=+85Jc3q??N$dT8vd#wc3MM_Gbah(X!KNZ-}q zOZ`H|-Jn<>-hGe+tq_B!G#JW+P}D9p%g z3~JObWVGp0s?2&uVy4f1E{Db@CC5ap4k9HsAF{7zMjtbO zLkX+K=A&Q*8S8$fIxk1i3Z5vtRGC&1qaUh9{X*tWW8DO;;EA#$OlyzL9M1L+YSb^| z75gA&eVGK(4lAa%L=Q3+Zh z24x!~F~U)!ej#IByqJ%&1g#K*vWtN>h4NC3`h|=gfnw<<#zgv3D|kv0I>J$-1Z3{3 zx>S`TXoVP*U47^XM~(Vryi)%tM<9h96DhkGg|f;sha3}Wg%~K2(pXZCpcPBKMCb@d zEAFJ!b(m#V_EL4|oXusO#_h7k_qAV)RGT)8hk8&sHi zwMWnjsp5Wg5L{!XvUGn0yLEbzY*b$Bz z^$VHn*FjKtHprVfuSd`dF|f0RCx9R*JR2Z}9pRwidXlcga=osjNJLR`A3<=;E^h>f934s9(saf46#Gcs4+tdjzcz19J8n z8CoLO$k6(@Mn<{V2NU-}Sh2lQ#+YAP1HkBpeu(Jw1%g(%PT9pM+;ME3Q=yW5loMrT>w_Bg3mGL+TJb8Bl}FHu zWmqC~#fw(z7cy!#dyPy9S|J8yn~%gA88zw`GDf~)s>%|yLJZ0-Mq#A3Ij2VbLdG~> ztPk%#i0EpC7)hdV$FX%zjS`S??<%&ds&WLa5QDO-^TM6ewnS>wFXNT^M>zs1)GuU|VfGrC60~A{ln7n%qLuoEjJA-yMy3R<5QDPIhpv%PqkbWyg_crv z%8`54?zd`0eyDkZ(;Z&!#Ns+-7h~vvFKdIHFR}zR7&%qe-K8KXN6-o}D7zT{HY3~y zQy;293|c|vZdTm{t>B5WBTOFRAp^dwP>uS9%>A9Z30lDuWk>A4YDC=r$USWgYSb@e z?$*>z&5>Y5COVCRFLgrp!qO3fER)|5_5rsOB zRil0(qyD+?90cVETEP=#7o*S;Z47GEFJ!c1?uHlJu1C-cF(|tjg&t)IYSb@e?!MPe z&-)t4u$)Es+}a3z_d7)J@O|F(^CY05gK_X+~1js9(r@Goo&S zR`5jG5D4Kh|zIZsT+P=Zz<5M#^kkGuC|5-}JZR+=h$LR!klPy+Ed>nl&t zO7rB$z)C8g)ii}zN#$%Q8G{<;79|RK_akb`l&%uA0)hRH?0it8ej!h7`fSGcwdzZ) zAoHySKj&I&C|%C_>#jl6E&M8hGUQWHvaIL}1g#*W6tY_hHE9B6$fu%Y3?*me;Pb30i?JU%JTo%g?zTER+@ZTTlvINloShMBBd<_9jgEP(}*5s+J_EK}t{x zB#=U`4kig|(ggCyeVpwyZ6#6l! zft3;{5v~X)V<|$<=Umyw3Ia+LM91ONGQOx%4P+(YDZ2*g z3k0nof3fkNFuS!=lP2(_pWWJ(pp~T?-&H1t=3G+*!gG$f}G}a%u zrl0Il)WAxK15G}%V<xT60`!1)z9o+tF?wa z;SRuf*{uX==Ln|+@|WF8l%N%2Fok{%QUfa`kiYEKt^}>>&N*5l<~XoIyW-3eC6YbA zq9#qC#bnQ3m7o=9lp9yo{FcaBpAsm;>=^U~zqEpka?8$#=3Lh=SqgrAPy@e8z*F|T zLi6#PO)8D`I~l%SQRO<85fV42X0Gi0=w?D;M=X#(wyYskqORDxEZ zxdY*suBIKei5V;7W#o7JN(owlW(xgOQ3ER_kiYCYSAtfc6FJW#68`Yn z@`LyO5<-4&X8-VmE*tF{0H0oASNehnR)4%b%)VU@ndfJAZP`dDfClCO`717e%%DEK$p)sQuXS%H;Zc|To+}D_%Wz~U#<>8)>WKj&Xu4Q zX|Bm6i3_&*Td_X44hy2k@x5$n{Zvr{DIK;|EsEL7;DDw-Rb# zg}Nbu{>U}`WU7>)6=?QNKj+lIN(qcB{c&4 zA(?X}Xa$<3?x%_xSfvU7`$6?Z8CH;4H;BPMRrxPh9a>zifs7|T-V?dFSF+SV4u~w}ZkMojj0x_sb6Nt@u zV(GL{wStUNV2o^n`G8fLAZ_zewerc{`6fXSs}*FdQn0MD3DyT=C_&kk)te?pqad(# zP7UL+&UrmaAOm!RG?P3(#Zn0g#FZ025xNHJ3s7Vt@6`zFtb_ESfmoc&l<|B(h>6T&?>b%&lNT4=Z zR@nq%P=iz{LD`j6q3ssi70ZhC3{TmFYM67>4P!%Q3&H=cU11i^8pP8J30_YU@I?(` zC_&i~CLgisgEk-3fWT82%Zk^N1Y%H=CP+KN)JJUkpsf#Tm@3veuO|t_pe9WqcB#%C zS7l>R0|KSM7`$$6t4J^(Y$Zxic7(PoY7hfYFDxrwPZF#T#!!N?OOLiIYM2k!Ij<)P z#GockAXVkt6~;jjC?AfAARxOK?q4@vQIjS}JKI8?7uywMpf)+SXA`WCEP`|~=V-gd zb_Kso74K2m1Y%H=CXg!7Hb#|;RBBheHhTaFML8?%jEGu455{N-f znjr0RP-wfhKBxf!nsv_WNdhsbNfV@9s=ha0%i@b%?iTCw2V`956M#=p!#NyjUU$TI zX7BuG^OlAB0zoTW=M#WWP@@E7UU$UT=IhVT&DX{1ORaF7&u~6LjS`S~-4a0|MuqxP zE5^oiyH6m!e4?jc#w!tpva+W-DnS`BP;Pw22?8akQNNIR-KDBf=Qaj4YK0h_&-(;5 zNaO zYGB(HO4kz9C;^$*U5rAVdjzcz1FZz3gilbTej)QZh|=0CMm5aaI8tN&Nf~oEjKMxZ z4QM4W5B_t4R*cPit)D912bDm)@&soYoJS*u&P9_ks9`=xb3UJ)bIx~Z#e8s|_qiJWUbXvKIOMU$z@y1)MKsp4If1Xd>NP8CuJD-bLZ fpMYPC$gn~RIZ`u!K0!^I;Ebbgf>xy6yyX7@LR=Px literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..a278cc6752f31c8236e6df0c17a5c365b3b81e27 GIT binary patch literal 1092880 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

    QkiL zvyR<^^4|3;RG%W{X`hH0wSP)ni|bPkYTQ4iH0OGvusP|#J{k~*R>*a#OBzLWCHfJr zPZ9Ezm;QaLPf6!xxIRTc#C0V+9+u_F&zAk{9wr?rcd1>rq;~g5^S&oi&iiGk6o&^l z?w?YYr+yK6{}kJ_e@a=N^1%H*+)v-6`V=V-eBH5qY22_yU0YkxFQi=a_^i0jPBqo1 zl;s`q(@pAARPxVzbp484pCaYyKEzJs`jktlK1IqEkI&{Jx-OgFQC*3Y8?G<#m$1&- zq$A~?b=0AB-x7AEx)LdmsZQz`u20#Qbfny~PTZgBQ(PO>l}LGNm&o-gW(BTu;rf)a zJhFcb*KzpgsIElHoA)=-k9NL)ikP?9KSfW2C;MkqeM(x_TAxUDB`GhiEKm7ssqa>M@dhfvVI9&((UR~c>k2RPg8wLNuJ`_tVVHY4k8^X*D3zzp#Ejo;rbLIPx0(#CY`uC z*Qc;fS?<&EY20Y4D{&>c;c-lJor`L!b1BOs+Y^rCx{`OPKBcSNoJ2aB>s*pfS)Tmk zdEXPIX#W%`cYI#9ovvT@homFrnsv;abX|^HQC*3Y+jJe|eb&rsjrA$MBv03=Fp2J4 z;#!UMDWy4|SNxpse>QEbPmyvx57ixe*I1uYmPfWH-A~S_{Zpn@hmyXxqwa(2SroU| z_pLrfZ%z4!_SkRM0fzYmDfa_;ee7Pee~RgU{;QxP{ES;kehj^9>lCdbtP_R+V@1t)ntl8mFiP= zAss0yaiR}VT;-m2b2 z%DdbCDV^;z0{)Tms`g1~^}TLk9uIp{-Hjej`=>~G{DAgPv76EUDQbJ(KSjtr@1LT1 z|CG2e?Vlp$hWGI?J50g#Qp0%*;Cgye?sy*!*VDa;?LC_6P^3I^e+feBcYmh)L$@eh2hDy|pCaXf_fJuu&)y5- zC)KBjIq#q1j^X+g-ajP>xtfLU5AEAjpW>dT`V=X*Pf)#{x`FFc{!8^KQXWTf-3{N@ z`QrW%`-PC(i}*fs=D*?kq+wCgk@9dUotJK-`(D2k?Vlp$X&*f`i1trW{b~OcDOZE( z{!ni~`=|K3Y5x={HxubOCH#|~Q|yDhe~OfEOZ_4q{mpX|w3iWb-;eH3?2~)qeoNuz zIbQ@FDK~S_{b5{ncAQ@{yzhyWH`kklA5uMwlsDI#IMw<7DbwQ3^(MN-{wdSqsXoQ? z{we;}#{E;ua>aSG?yEU)pRKfiij-Tza1vy+Y<$a$x~q`DF*4~lf+)2y=y*QW@%{fhi!&*r+4!>K++$^+-C zt8=){g>|G{v;BeB)i-zZ{wYFkxqc_C!TYc@?VnPXi}y)svEPd4{de>)X&;2RGu5X^ zx#srLye~tzh3ZqJJk{OUqp8kCKgj#1u>EDZdzn4unx)LGp*cWLz(ougU9Vzc_^(leZ=l5K9WByKcB~otLpK49=Pw2t>rwDm- z`_3Q{9v1x+nK{u5;l!tg_tk@saCO!ri>@iI5xar|J;uU;b9ok#d*Djd^+h zlwGJkMa+5sDK|gqSj##>Zqq&>>(jWZAEbRxq&)4L6As{gSRN-GDR;bIPq>t?U#HQ& zCsH1{eN8vnKgII(PCrA}cUN5Bpm`?|UNTF0HSA9p|rZNjg&QS;v0HdAZkfeTtA9UXR_*G_D=|t8OA4 zDc7u{7N+(2^$V}ybCi@T&R5sJCLQ+}=}5Wbd{=u9<%h?!sjfuI1GldlOgjEb(vk9b z0mY9$p7P$+k7phY{+9BzA4Hfz`=^9IQ+z>Lr6!;JLIG=`X$l{_mYm3JFffaHv6ZfI)#yRUZyxNyiX8vllDP)igeV?T<0R>itFtB zAE@2qfmBx_<&pPEalC(uI-zm@l(IbSU!b{PsE?_xM9M=N509jNYNnEonDaOs0*^lz zaea!Ar~H5W5b3}^P|)sD9=L8Ou1w=<7)tw|h&hkXVP4*cWdQ34xl6~tN!Ksko9arW zJaB(ksXnFHM-2QU<%)H}6?9#;>vDaHkf;6BEbp@xihb6wy*SRxa?AU^sZ;sB<#4Ji z5%aW<)t;o|wqzYCPy1V?eeo8hx)LkoKDF20T<22MFQb2i+@yU*EbV)uAE&w!Dc4Q= zoA?(y-#=wqJdHDH9~SjY=liEjlk@d7>`v!pdH)n6&D{S5D) zqE2btKcy_!oHtl{pOhBIJLYN%uOGfP)u%|gVI9Z$rEV>%E0OY$bSBdJ>hbra(^Ve+ z!}TfeP+dvVDa$>#yMCN>T#+Z-4%Z7Iw|u<0obs0KXT0x;kf-leSF+9rq$A~yzc=2> z`wleKm6YYlpYBT1aZPnDWqIUw_pkH*4!@$h5-InrW8Wqn^IOvCGGB!10^CMapVFaI zk_Yy)Uz+P&b|xJuPwnN>{vfY5?t4;}TeipXJ}kD_X9VI|%9B0+>w1&2`aZ?;yNf;v z*FRVI2d{%dZqo6*Pl_GexPMA4$&)|RJ}GL?rur1#S7lmUb3BJ7D1Q95q$A}jjjNwh zzi`FALf{`MH>?xiBOSFI=}39{Ud#J8`C{Lt+@7+$BM$GP@h5IiI#TYr-TetPuEt_q z&EuymPwj61MLMP!=RrrxlRfq!u8VA{PbtfjpEd8p5{mlD+|N=TrtW5{PX4I+emv+%xqJH2)7LFN=dUuj9)#)f z0j|F*<^G5ZkADR0nf!ZrbFjzRz4dNTG8DL3crj5_w} z-l!9ne~9{-klQ;iMjf}@9pk{Bu-!gGz&}zRHar$}{5y}4&RzId0M;|~sUFG)p=g`mYnccAclTKN#*`B~Uo^_-=d`$kacOL#c_{D8} z;aF@pA&-2#VjasmQm(c=m*VG`mG41&wxYkK-2Rz97yrsSThiZBu5UjX?Xly(exSYZ zkGX;VmU4F+eNMeeI_gIHTgugE)L#11V_rgg&V3ZG7gBCHejMw>^GHX^9qZWQ^I(s^ z?3kCZ-Gp58dAZ_zKqvGeovw1#@8dT?$NlrH%fOzbQM!q1;;c#bQ}!;^Dg z*$(Hk`ZCwTyLsSa)RFSyqxiDBZ8iXO;-p&|?2&Ty#~pEhk@)1v6X5(hUKMe$1I`QV z%I&F&tMxv|=N-4ha@XeeRK=k`fPbJLpr5$GD&xg?0d~MR(O^$S9L7_$qZmhXdn(|Q z+qi9--fB(`sr^vJk;?}$3yOcIv)P7H@+eDcu~j4H_=e6J5%3pp*yPfL)G7( z#{~R$Z4Y^*_CxIl^1%1o59u81ydiGqd>$k@r+BaZQ~M_ihwnTd>gy55Uwz+-j;Q0I zj)#WvsO}fvi++J8VIKJu*Y|h5_iXsRvMR3E8bo=Xf4dBS_fCOV7595zMtPp=48lCm zWKUH*6zv4}jrPG$X|-^7yHWyW%KN`7`d`1$3m`Eb<}M$ILSe);F1F zF8CPgxTIVybNw*%&mR}3^LqKs2~fu+8F=F^@YOIm@f? zdA-*!7e`$w-)~9GPxq_tig6tm+Hhge3qo$6+lTVp?_U9R>|TGH3gd>9>nr{|6wbpA zUj^eQ-1PBBFm8zXOXs1E-eKj&I27{YtCfR)TyLD}jJwKH{d20nOgi5+&+C-I-%!5{ z?JnhcoigZj)U#%F&1HCAr;PR#^~-2aR@YpH=XJ_>d{Ms)I#Qn3DWgtNzYIE3p4TaZ z4%9D$j+Ezh%An(l`eo3O^1OZ-bfA72?aAtw%kaET8IHGHzb@s)M`vjN0zH0p+;_S} z=)LB(AM%L!UdMx5@Rnzwf4WV_O@jCIl5&0HkMOxxAAB(02iePC*}1(C6Z3-tJ+Du` z>K(8r&UeBV@UDg2Tzw$c_4>sR9*>`2ZpkI!UCQ0BuX`ImciaJEQRk7T=5H@_q}*J; z2;SG}FTTV&D?j?DcwSN-@7R4J+Hvw_ufV(eVA=WLUCf_&6x&<>?&fFV^LFW_XKM!? zAvaTcVSDR&SAGKRxZ%C^;a$q(8lzCh^jq_O_Iz zr8fe5q}=gymMNaUP^bT{*uSJa?oZEO?guNPj(uW{#lapa&!4lv9)HDE3&FdXXU|!9 zUWEp{w3PGnAbpyi3v+wQa@$5cdWMi<)Y&;dOKVr`FEoT2$ z)&zTeG4BF;TF7Hh8aIlM;>!*VIDSZZirWqyo>!3aJbqwaLl^M_=O^WPoPb}_yo;3Q zaRPQg{NQ^QS7mq}Ctwf64}4C_^EkoJ7x4q{VxGkb*aPu{IzrxAoPds$7avKl`aXj^ zQTw6xL+TUo-Yw!G{l1V4gWn%u{HThDuQqF#ceX1J7y|Z4xqFU&mkA3l*b6@I_gZEU zyi0l5f`0cbK8i0h6U_@qxw7A3R3PDSPrkB(eJSd*kfL} z9Onh3To*e}F<;a>;P(ZAcH z4fW1{gmi>l%{BZ+_Bu$N6KsxQe7sr{2Z0^WIicenml+mo8M zZZGmg?T6YAsZYRr9S?Op)bWseppJ*!8};~5$3ql^#NW1i~1VE(zmKfJ$T30{w@ z)QFw>p|iXZ@UxWXc_Z+7$R~k!Deo+A1nuc0&*a;9o;L!=K|Tq*OL?9*(gvR|@=5S} zvpkbBT|q~UWk8T|r06)4qObpFh~w74)Rs@xFnuuPb~W_H~8#u5#GF6+fT$MP&W5 zT&H~uSqJuYMZ1JN?F$L}x}rV2Z={sRY+qN|W@Kco}y zrTsajTxI*HwiV}Pc;8Vex7;qUk1FWEKC0*^A@A@5@52iFsDh4^CqKYGs$dW7qY64* z<*;8W=)gXzxlUQ0`~&-_f)4DX3OZ7r;w|kf4Ev~po|K1dA658#(vfn_?F;*;f)4DX z3hz?xSO@k|h0nu2s`xJC=IKMxzvj&S1AN{O<-dhI@bTev(lM+f<$m}jXpcR8DCWbO zXXtM!cSmgV7W#Gmv-`D!e{OgPukTV`e3V|i&tJ#>eiiey4WZEAx z*;55~#g}*NqsjYff<0C8w9jbA{-SJ8RlH*#)<4p|tjRxBaoFb+`YW_sif3rADmZ*? z+7CGG0}Kpam2uuLIqj27))e+s#NCxY8ieh&-?7+k$)2)2Ty{bqXlM8Q-Tgr)s3BB0 zA>`?M?F*;e1$uGV#0Gl=d@|V4$*bn%l-duqAM)-|$3qJsYm1QDN^o#GUaD*K4#Dmtg~|S zK8*1s<>tA|HUb?rb||iE6qj9l0-l$U+i`Dg44(@}E;<49?CoD*{iu}titiuoXr2T)AJymg7hac=o`y(ZLD&U>|zF*i=b7+)r zUiE!9`J(ni?T2rAMKMmmIM&Il=H!&x5C0$eA>X$p?-yd8?c36zBjude1o=#$6K4JU zy6x~TFv^&QHqqMzju<;q|BDv;Uq8{4C|+ zc1`P09ql^-0#Kvx!h0dYWekOoh>QP_iX{cz_#elE%e|e=i`ASQ)6M))&s$QnwDJS~E|B(xP5Z&ZN1z?6;%VR9v|nzr zrz)QI6;AsJCwr>m@VgG)-|;@o$({;$tGKE;G)jG+N?vH~2mJrz3Fki3Ui_DSG;BCc0L*1+#{)o}OE3HW=Qp0ox2u9xhoiu+~y;&|%cn)Nwse>SKpUVMGG z`TfEb#^ip;`)O4?kCWVZ>Jg zUz>H%j$)k0cPTG4;05+H=nxijXcy3d>jmnuPE{P@7VLoQMQ%@39Qrlb0oRM%o~k&E zdte7#FLHaT;)N-bb32N^)2kAm`=KpaQoL8i^Ek=vsfy?QD7U97o{uxRJyr31T+QvN zlA|5d@m$~_{_p-2^Tu?aJ?XkruqwG-lj_kzQ3uvu*a9zC{HuzC9pGp9{@k9bIJ6Vk z1MQaEQvvTb&jW=!;8ojG`++=A`=Rzj?t%XgjBiWel@U1%3VBr4EpEPpW}T(IBm@x;cqFoKmK?q>hxNc^2cs{ZmTx% zkCgxN+{Zvi54Z|-ivPry6>@jts7K)Y)5~u7INl$2g@ZlmmFrZ&KtB-4l zpJ5+h-BwlHjlKH6xjp{Fxv}3@$)SDHE4QZ#4(*bEugco13J!6be{UYoRdDFn`S<4i zy%JuGhxzyB<6#vXt_%71=GTiVcvr5!xt$&3_;HQ-bS~v72zhME6I7f(SQS^VHs+z| zqxn3$5pRdVu@if~3*K3~!1q?gRVVR=eyEC{^i5t2G*cYSd4m=4aA{+nySj${u8Kq4 zV*7w|iWl^+6t~@lw}D}u*!f-X&e{dOw<@kWiCgqTRlJjajrK@+H~W3DXyQtK*Q~#{ z@BqDP|JQykLNJk;?}$3yOcIv#Rw)Z;@P4|P1`9;o9X_eMQF)bUWqL+*j^cRb+P znXkWot-bg!-LoI%1@QS-#eFda3G*ZF*hYJ*;)N;QCeO|l#^ip0c7vBI{`t&r-xV*u zR^@S$zPCzVe0TS_j;;9Sy%5KG?{hG3$Ncpi%;Ql)Zu;(k`{kHRH$xq_)Ss~~M9N*0 zj%OVyH(!h$1Lx)0o_NH3ST`f(aVqKP%jmoU>qxmeZ3y|7b?nJY;Qp>sZcZf~bvfCi zPbD2GSBD-o4*ZjJ{KlI+gMSOT??F1@60%2aPC8N^Upnkn`2NT`apM)S-c!m0>nLvb zz&cW{SN{A7u*b5F>dpQZ^0*S|Xx6c;Bjv96-gaoOCLJmFg*~8?&P%gBVqW+ebkcbx zKYJlpBS@#Y-KE?WaR~M#9mjDf<@zwvF&u}Mb);OKF@(m^6wkf5ze{;BZeV+*@rV06 zj2jXT;}y178h^5JOu}_BuEO!2<52&D##Je|#W)W-hIP_7KfOF%cbavk#a(f|Lq9ZK z2c;aYo4Jn7uBQ_2`TDDx?2+>D+3-Pa&`)<;3$H)6cn3SAJnp;^-S1k`QM+wKdAd@* z2kGctNhc;9A$R=w^seT5eh{2j`a8W(i>v*}4zn%4e?1&^#C%`={5Jf)(DUebCFEug z`n=zT-s4Bqep0S?CqE}0W7+RQZi@DS_)*;MdKdaz%I%kY9vp`%#iNkxsiYIxKYn-e zla$A=sGS4rIM$K!@I#6_yEED0xc#Ku7VQJ^Yj))J-;?|-Nb;P_l5A09L z&y&gTLC77CH}H;e^dad;xn~`C2OT$w+E2=%AHjL0egXXp{+4p+U%3wSFZf%^1M4_$ z_qZ47NV!!Mhlb-Y@_9#3x(O`#J;U3)of~itMZazEq4bXAF*$el-NIGSCT=A1*;Jmz}yfJvk^Az&* zyjZxz4xp zPVC3yrJTPw_h;RnffsBm?Dd*E_i2vN4ykC^zc|XmM zFU>m{H&92)`NZ;ZEVrjCyuHv&ahLp-kE_l4O~-ee-@VxO?q*MNX?L@$wuf4#_CxK5 z)JNgHj)yuP>UhXK(2e53|8rNIkFft5c`e+R#7Q4K3GZFydddd<;q&gG-{SAhNk_`# z`=q0qbfjFT&$C{KJwl$&$MN|k9Vt)#jqLBFBjuLcNj2$omHR>m?n9G3NvAAN_S+^M zDNp`{c**UNa>eZn@sjIEx#zgigjExxJfp zq};Mj^La^mikoIXOL>YLh?m?yQr;0aO>rpY>3kqwa(kpa`8Tq^Q-7E8)ZVH|r>oo- zI&Dqk51wa9p6rKs$#tYW`4i$L*O79?aRc#^>qt3_GvEhZ=;b<6p5g}1BiE7g6gS}4 zTt~_k#|^|wt|R51+q+q(EVnBjhU;RPa~8#RQg_|*I@r@yZYRzBJbd1$k8wShq*Im~ zw#TtfV4bdV&!6|nF4iy0JM2$(uufNb@^3hs{GD{l^5h4@?c})KrkATirybfY#RKb4 zi#OX3aRfSDXOiPyR97-VjH*f4a&cUfP<*AJCl^Pku=DL%e`aSGh@XQ}{X8 zDa(_80_#A$%s=l&_nlYctmhIP8iJL02Br!4pD zoK55Ch%t}D`Gf@xu8Y@IZZ>!r+sVzk9_Iffow7W#J?VJMI$h=I^P25SI%RpXKb?b{KD(^ryv}?YFGcRi69|?GN@Oow7Wpc;>iC zI$h-{ZXjO3o}^QjC;M&IFY@z}^1$s4@sjJ5<*9u&>p&cVPFK0-_HNcG%RBtTI?d;0 zh1_u5K)mGsDa%v)rsJF2UCPtvHQSZ+%kt!(bUwC|egWrMmM8xP_G{8F%Tt`B_SUR3 zy&U4DEsMjXKP}#Dzh#}S^5kb|XRs&fl;trSf1q8GPFK0+_J()?dy-CBp6s`*1Lu*S zmy`!?Z-|#%rz}r#qFD#p8FaeJJ-2tWPFe2ezYFVVL$AJgALQSk=Pj^D%JqRK<2<^X z`Eb-RyDfs}CFOSB$5AKj@b=s7g&m>)!kC9B<$jxeUWCuPM<$|R z?EM?cqaOCyDDaP%A58x76NgO#yG-#n>Ik_%l>N*)fpw;r>tsih{DXb+D=Ql7>=7zfcF9v7uN#clF0#4qScdHP-$ zpWBMhC%dFP`2ogf&`Exh@{V>X#%Iuh@fpu68@J2w6eln~!|^GOq&)X0=yc}iQatNd zaD3`#seeI#E5pp#z_5)}Iz{wjb;P9Wn1@+&~>EXMcbl?QlNq zr({oAp8TL$C;7Xp9KILMr&*^gw`_-Do#yi@%`<<3JurSW`?(BH{V3h{q<$vl9sQl} z!(eUgN*A@@KX54kt$@u7}~Iv#Ql)bWseqaGjX zc&Otc_dp#Fxi{+Zp^k?-9&!)V@sN9?9v|v>sN*5`KphXcH|p`Bj)yuPau3w;kb9#Z zAL@9h<01Dz9S^xT>hYnDhdLf|57hCHd!rs7>UgN*A@@KX54kt$@u7}~Iv#Ql)bWse zqaGjXc&Otc_dp#Fxi{+Z;s4Kgz_WG(4##@f`1(!5q0TP7s^aPUi}!A^KSNmiAY2zB zEcD#)_RP2{xXZpD{FCgdiZ`0mJ=)7XemJ&QeBq{s_Nszc)h?~R7uqYXbrAMVfg2U+LEn zKUMJV7(d;uz4TB2g8L?^M@A3M$HOXkcWf{J_uFxu6!){;$L9X2iktZO1hB)sJM6XG zp33+?7as?9#Mfsa;YC$9dG%(?60PtkN$a|&P&QwlYjg? zbY4>Kn{=e{-+Vmuckpv_yp`pF?J-{;bS&t^mm1q$%Izon90NMONvAAt)s9v1)V}`u zcQ1$diN9!U_p;n`zbGW|W!EGfDOWF2|B3^@x(V!2Gf{g4qyN1H>PWd_Kf85qItg_i<#rcxsXtpCpZcSn)bAXyCpKNb%5p!H8PQXoQd{qzByfYgghKHhVG-TJmfC8e{#3Ke-pe*xjmY6%uhz&jGv!< z?z`IH{Dj;*OXn5dowy_D_!qb82Rc%&Stqu;ols{q=}37vhyA?RzGr}r-Dh>QN6O7< ztaI2H)Nyx^j+FcUq!V}9;1aOMJaF*6;2$YBZ;*~TWwXms=Wk1(j+EOcNXPAe2R^Ta zAK%v(?2&Reg?0Y2+3jGD-Eq4+K}XEbCmp-<0{;OW_0e(nppKCHb4f>!o(pxtQVw;* zJY9FjpN;*>U$FVzU{4yiU0L3j>V4mJ zpd;lmjnC_hKpi{k71WV({TA8d$FGOiV|V_IJ@CAw{883fdjYyXn0vmnQAf&qkxtm> zxO>4rW|4nff;v)u3G3|ZNN2WLNk_)4dstxV)#zs-H!pF!Z#NkGY3O^&b)X~W zx3WF+pM*Mk$8p!Aj*#p7xxKD@2gfnJ)B||`E9LQ)H*kD5@6Lug_Wq;r`Yh${WwOWq z;K5tre8LKIp`MhRNu(2x`vTkBu6PVxpM~5_Wj`PKGTztuJ${NhVtyO@dC2T&PrUU9 zbY4Q9uD|w-C+Rx)ukG+%$}K+^_^r-HJN!v+;eDBy&qdeM(C6pqmw5V}bpI>l<_COz z|HuBQqx=5^b);N#f3%}VP#k~yJf5GFs}s1rcK;>ahmSvvuFpd5&LExe)H2+@xPx6~|X8_gBz)sgnj=2K`hI-2`={JUY@b z%l;joE6qA<Mja_vH<3Ml$`|@v`xoX-M<`<^JcaGj=^^SBelDfH~TpjzYliSPp8E_`^OzJ|7I9JP5rAh=Xg^G zJsUB8ir*cuzYDo$d+e1fJP-b{KO_H0dB=GToZ}&|$Gy(>r1LGwZ8wXb8D)=2ewb~u zJHS7FCi1hCYu53HjvbAD{z+qdmE|GX^W3S|qCHL59Vg^=$NR2Cdy4CF-Y?2>$M(e4 z&be#d!aw0{(vk9XUWEj{rZrwo>-f;O&+TB3f4cF!%JMYMusJGj(m4K<<PFaLw1uwR&Sw;BX?rB_wl%zPBKSG?(>hCK7Cc=AW_ zJ~{VKWqj)+Cqa9=pIkZ|-aB4Z@eTvJiGOC4J%vA^y}{27?Oqk1QRg*-bnIyqho-$x zLmYnB-1px4G3W<+)AwG7ck||)c>R*{4!8X1y$PV>-e3JSc<*>s#s9VZ+jw64eLS|o zo|0VOIQ0Vj{O=!q6W^~n9^a)ruG{~nHgHByjds}mhofCmZuef|8a$7^ralMn;Rk2q zcqZi??Xvx_XF(_S?Ty~pBtvQSxW4&Ui|xV|?ZFXhR8a}U|0n(UGC zq*uImi|bds`3St<^&?MexZfzt-MzhN9+Pz(>qvR>OZwjMa_9Dx;jR!%_n+?BFFSp{ zD9g>uoj+fc<)$w^U-(1m`6BT1g_OH>==s7nJzq$GQ16(=v@|8|e@ zc`LfF(?4x|zK9j^?&hBvWe@lh?lVH+=Z5=@iujB=uNkFd+W$fKg}tt5c)s|~`O+KW z^Mzk@3O--xW9Pu<3nk_37iu>hPp!@jSKWccsD9iP@&++-f_ZooD z6>mCoIt$~-2ziR*aQkq4zOaKI zYIweoay$4C?C$IIt!VFouLp^q6otCDTrvhfGln(U=(CJ zC_Z11MFjIe#70Cm0R;g?(O2hG)t$Q6LGQtly3y+IW2)~zxBvR%{%IU|EN!Az$%6Z95xED(-EP_XpRu!uL1);s1Ib z`KY*jZaHk#IU&2{ij677_A0c@B z&u_g8bh!1};QekY9;)YQFMJ<)qV=uCeRCr2$aoGL?zkTG_`AjP5>(t(JS|7{M4#pR zo`;JE(eOA=1^6WSQ^l43sDWr#Apd>>6<6PnnJW5b^Lm!4s}Hi1SbIL@(qa?;c%J*}<87~AG5Pt*b%>jR?xbxq_pCId4v0f}Ke-U`7csNG(SIySQ<8A1VJXG9y zOYnHNES(AMV!vC9{YAyS+2Xwk-`S1pSNQJhB7Ug&QR4j__nW1dAB3Hvnc$B{#NFnb z@cxItycY5}k99&GDjqHo{zQ%Iiut|k-Z7wuj1Lq%&VP#c%)KTPA3`1?9(9-fzIEJO z=r6C$81X(D5qBPy?VA2H<}1k>`8CeZRGi7b zE8!juwBtT z%|{>)5f7IOJ$~$K92d^er^W&g75CM=T5A~cxNF3FzGQr~&=bxdBJ>SnxcjhZm)G-Q+rODgUU7435RkHvW-Jb9-$exBl-Sd-ImxM_P_rn z#yt@a9v6Coyh%dOlhZ^#MZ}#yh`&?83U3ta>DbY@&QtNQwpf?hw_;t6E_)w&s5pci zY*C4PzV5t93D<2>#iJ*(#>4$nuT=7!BY3DdiqUv{$#Xb3QwNFi(+c_76b{w9+#ejD z=T3SD$Gg;&Djv;mbtha8SKs#}4;7cyV!wk9#`|5@1N~0HS)KBKQ~>E2FYeNLQpTIy zgZYl{&i)_Z@tfQxc&K>BPF&A}u{}Qop5WF~x1k;?e)r{Hg3qkyAbeiguU)hqd5Cy0 z>w0`&%dItY73g7YJEE^toF9r?)MD2z;PJEbasH67V+wa)`NJomC#>zRM}MRsQ@Gcx zk9gj1*|T|D5A=ZJMPI50UO4o%@<@nT%J!W~Nz z{(iVA+E-ud-Oc;2LV9K}P$r8i8SU!0wo&r|W} zjbhB_-O-8pe9Cye!I;mxmrucbK5UpT@_8c87Hz|PKAhA8^Lgj4mYB~|@hCX<0K{`J zXaMH(?2LY5yc2PD?TDx?=V5E7Vm|MEF7kOQF1yQ#P7wKgl=;`heBKoPkIONi_ouf^ z$mb(NxZ5m8? zfi7*cxG=-|V13YrMdkm0tAl+1P;rvfAGDVArFgA zD;ohNyJW^DD9QNdZFs&E&Rong`0>G)-SM+e#KSYUegyS<=kA>XJYnyP@x3H6e%0Uc z?=yJ==i__2kyC#o@PfuI~%@P3!kYt8_@%K*uZBG08e=5*fqdI z#e-&zF>m&NlXo&6AMIETB^CEGyNl~|P50jndV(+d;&lZo?oP|z(qyzukb#IdreF6cQ1)}uw>!w=*wAqwm}&d zc^jal;_e;2b3l*3CUXTG@7LUe`63nfm$beWj(4)27tgcJ?1K3Q6_56f9|%0|7}1`n zn`j>y&)$40w9C1DEanH!b<@Q84-pS1?m?cgxB|~l*o__WyoHK`6b3&kxA-_?l^E>( zBJr@^%JtCiVcQ1c{$P0{Jinyk!GhLrVI20qBw^k$g-2&Ri0xt*oh;fl;N_7JmsH%X zFZ^*cq(3cdGH53iXD>g1dc1Bz4;%l_k-$U6-L=z@C)#zQn8!ZLK^`j3)?A5yuf^@M z4d;vS^qu9XhlqQ7JLCKp-L)O(L*69Zs5ooW2A=~6=Us(7ex1=V)I-JJTZnqRuL9(8 z`~UG8 zd%EQ);GyE!If*~gEpJT=J#5EboX6Nx+4!ENvMg0R99M>URMc7KPq(o*u)m17s@Hvc z0On88l{0q%kJ?hj-N|QR9>w~I{3+u36!1`S@6`+X!g2l%7xO3ofv-M+&s5wmScG|$ z^H-5?urv2;LtZNW?Dd#OMUTt;>9~v)$V0^0oP&84ydA-et~gHF>}Mn3q2kfJ`!SCS zu95lS-QEV^q2l3rcN~rNcbS9vlXv>?P4JnDNB6F{1dj7>xItX^9Xxvr>LKEsLT&Lp zNddC7xG>^J`QUC8*ZJMtk`d5P!QSp4LrKLwdEdb)88D)PAMf+~4!}dkcZ=(OZo8xJ z2cBU4dci})o!nWtZaH^k=Kv2|U9b-HknvI7@I1-eQ`!=ak6I01g*-$&%KbCmFK|w3 zjQ1~syt~&R9}y3SP8Zi#&s}yd9M3wo*a#&VpLjoxPquIBqu8D;LvWmiMBE*C4c-@u zp4opd@OXoFi1;DmPSW*xf7tGqQ5O*p?3BY{_Se+TL{g@d;YepGJp`JPo` zuxD}MM_TycsoT-CE8TZBFXh__TM4Kw- zEsG~PAU;~(tPgr%*m$tGqTgV)vjRp>ZKL@VBc?^FkhI$ z*LE{%@jUXl8&4k%JXD+=EJPk>RVngBvsd1ZdZ>8r zwHv@^Z|i0pS7D#FrN~3Xqjfbt1fKBS62bGU^KSwkD(>cPLmp?`@~v=u@cHsyz)QuW zt-X;aT6Ce9FE|HmRNTpIhyFMp??xW?`SE3-hl=}uE64uw@4QX)`A`^eA;-- zqug6%{&cf=PRb$Ttp0q=qnu+;$Nb5C@4zP*heSMDQ-b3%D3;IboGqV!rs5Y5%gz8Z z`hAW0le>A}a?leI@$iM;_l4v9qyLQK-T5-W@lVCwh4+a(O6E@?e;x^Vsd)4sO-_Jz z`MpH`)G9F7s&VdWX>V6C(~Rr?vAhcvHX*W%JI zjNc@4tUqx>Y@FCQi3h{aU|f7}o~AW49`{TG_4Zp_81obR5bp<3Tl}ZRg%#EZ>qC4{ z@EscuHXdv|=nmL;h`SMXxNaJr?_B)FF8#d6;=&@gYt{ak!nrCtpWE>pAHOyp;#Syk zVaG*080@%+Taj+#A}&ns*z5Gdh;;QK-QvgUk@2GE>)N2Q{#bvsaIohK(hNH;eu3jc zzmAcijS7nkGxX~ix<96HuF8(nU*I^k{VqD)`e1#CJ0N!KeE9F>gX+E?dp`eTkFPEr zmPa`tO4~2i2R$NeJlJ@!@t`|k<3V@B&JQ*oeu{WdoYiuE5Z->@3b>yTtlNU`IVo}~ z9!w5C1|IjZ;A8!Ik}2F>zhx)t8F1eUU5_c;mwLi7;kWYH6t4FR_@p*t_%Pv%_rB=2 zxE=#IQ z?$Yzp3XLd);d;O5dQ9PVJ>{VaF`?#t6{i64e`;K* z{^5{O+{C&GK2%jNcwyI5bRi*5G6aM_O|6@Us`tmPJNoq&XeV56!BV^4k_zt0^IUb_ z4(IW392F1M^@Ksl+@w&H_5%x(n(d;*oY;1$p@O7AVQMI)9hG#C;;- z`gIkhrviLdzRCVm*M$y=Yu8n-xD`o3Sk&g&3=!ReC|{_Z;!kABUvD! z`ncBhn8Nk>O4nloXFPbJ-V9#CysGq=#Gzk6kBVQ|W&EEh9O4%AFgZ{2UDRU=2VX!> zsMay5#}po^^|+Q;pOrr*aHw0a7vl&(zL~=He$n-q!u7b-^_ar-ajokyh3oU7uE!)^ z!Q(ej;|!x&%-bpA)pnl}>Z@Y2{K6FLgY`il9yT6qJlJ^99kB7ByJ6=C8xJ-fbO&ra z=x*5g!N!A)2i*Z154sz6ez5Ui<3V@8#)IxgwapLubx^H>YI$#g^I0Alx7KGg!p4J* z2jPJA!TO*(VBOyT;t zR`COVnZTLsC|RV%_|oH6`2#vl;NXisuJ!mag@Y!!rN#IHAE2LLK1}w<1P*Zm^}>7z zrP@s3OjRyQJHEIN$^Bw#9384&t;^D4eCctkk1tcWKHl~5WddhfXYt*%7+-o^DStqx z2^{Q!IDxoHhy0L%pmOndCO!2YEr(3v(G>AsK$P@efGOPPzCeG4Lo44e27gT8yxN3% zL6_QeJx3DP`$ezU6t2g!uE!WYT*Qql<4EnnM^}+g}4-Fd+)f^8Qy1SM8X>p!fDJMPd zt5`jn17g?4$@ly49m5Cr zUiA@md&G)M@`?&O#`u>e9pX#1x@H%|vVdk)(l;6c$hQ-_WcTZrS9nXu!rY?bg6vYx z*nLpHSXN#ByLS2cS^W5>Nt%C!2RhD4*T!;V#j(PiSn|Qg@NaZ1>=PTAX zrt;gh&?Im||8`ffF#r6dV^r<+;g~+?3#v@6IR1HkD$1rL)pBBjGB8+ImRXcvRJ=Ip z5VEkrQ&X_)GWjKCS+fLT$0rF>0g#<^6j@ti85Xj(c#+VZ%adw3ED5FQ^Tk2qhJM=Pf~Uvb5;h-HDZ?PIywW%=OUZhNFJYA;wC4Amnn2 zO-Wx;Q$xe7zS({F)X=49a zKhBdED`|bQ=$*%>M2z1ouwU%Km$D$j+O_9Df=QERWPEpL z%lA{a&&$m%D~WwSHD~`6sS|hpG+kJrRCnONhK;K}nim}k@=8kb`p57?4?Y1F6<^do zs}BE-_<)@Qf^qxq&eSA&^$kvs6SFYo2iXtd%Tcmll=vie>B|qYbL~}G(?znYv2vko zrPO|PzwDg6(m`lOpQ5tf`7zw>S_Yw|`*Nu4Lef=PWY0<*Jk8~|YGVv{&Qv1@TV6v1 zb}jy$F0qonk<_i`Eu}v`R<`gj?w=_tNUl90q&vwkDTedpx48o_#avrditB8s%hSlE|m9i_Oifu>ktSwWH}dBAszX3}@%T}}Cwx^fE1tZ`-1H^da? zICV42^7Hv5lU1J|BKNP(g=vYnb$hz%o@tO-R9MJIAWv*c-cAY+wKUbp%mT$%UmcH- z&Z_oWl2%Q}-#w(A4669Ct$*+kHG{_wQMILB9#}A|-ikL@<<9Q^)yPx!pINRQ+4(ox bha0 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

    WLbG5bhDbPM)#VEcr@@YOBxv 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
    fiJfz>-?Y_!!>S>U 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 Mq)|L4^1A!~06a+9S^xk5 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/base3_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/base3_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..8c28d39474b18173ff0fe3ac754801e431c77944 GIT binary patch literal 698208 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 K_q=uYb^jl<)%CUj literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/base_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/base_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..24205e50f5d4903f921979962de71bedaa077ae2 GIT binary patch literal 286884 zcmb@P2iRrP_5ZKlqJ)r%PR5XEiC*3kz1L_FqD2`sq8rSs8;lyGGm;?cC?S~lyjPHh z=xy{~LPV4h!u{jauA;dRxWphgwLYnQwR`aNHd!F6S;60`|voKTFS# zOf7ULD2K;z0=bn?=;=t_w%%&GuAYc(nNYv-_V>OUiP(Ryy!gI}XwLq}5xtVn-~XK6 zkH6e%kn6};^G{xSY2Nzcdxh1&-aS2{k#l2pC%*e=HvXXrJuCcrg+k6_ zoDqnh1_I4tOTUthnCtgF)Rp8i@$plO-+G!6^6Lb(pxAi~W#zuy%CpUhi=I0p`&r1! z{i+4MU*&yw;E!i4w^ys=PN>IV!?wv;!qmN>U&WVNdlJ`^Z>xZ6k@*GF?sturtq3dPB zHBNZ!M&sIbm%a7$yqEMl;Z|Iyk5MCy#s}NpwL+`SBOy(d@N%^43aj0hdMsOT#6HhuJ)1>Ko&t0^mo6UeH=at!z7R@L@s z&yXSRJZ4fh^`;}^Opo5a*9W^6vp&re%fyJycFq1bcx;?m-u|;4vI(ag7iHR?8E353 zIO9VihFje*-FDgXx1I1cgnU6evEKgMwC|5n3@2m-tzKErN*b)3Al`4TJT*}cX;h}g zA3MD$M{y6ZS;-1oeY#!_X|QtQy#Bp1GVD&s3i`4O_U%yena7XK z7Fp={SdP7ac|msa+b2bN+8^xSp*^I*uM=du_zzD>WaWgcraUXBpZdq~*@#(=OvI1| zzfMqcdS$(?oRAgtQ+K;8 zR!*qix)ZX3Rvp#}`m0)vJ4$Us&ri3YH28G_dFmxkPSmc)peO2CBD$WHG{kU%w&Cg1 zosgC4E&Yt5MparT=rLqikKu%@RJ+t+olu=%#RzxYCa1@~t2(R`(o_jX*I@@;oQUCs zte~lN?wfiHX|QsFacs*;w|)&FD`?t=`>`HF8mydPO#I)vPkbHGvVx{<(s!*iF@_P0 zV-L;uMIwe1vVzu~Rxby$N%az+`>2Q33AfttjK}|vz1@jF?eb{6H|sGJo!n)Gtp1iJ zxI3%FoZ}wpaG%Q;gshOSTYW<8$MqP@6E!+hZ+f>#jig&p8vHuZJM+^W#$9P3F8$+^ z@dMv_GpJ*;)JZAX`6I!mj){*u6gl+4!zw8SwYj9>AO}Mteoh-_udY7 ztrN0>R%_PlN*b)3n0dClI*dL}$O?MOdP(1P&lS&hwSPS;Y4GdBzYl%BL*I2mR?u8e zKMkb8$_e77$95-V1+8C8^>Q%o@~Z(W?k?uIlGDEpu+nb>C#dz}Elz2E<%Fz=L0?G! zVxhk>gT#uSuitI-vGnX!nkqq`PS0MQkQFq2EIkXC1}i5hM|u|Sgsh%OOpb;C@W^b|++|a-@GvcyH(V!S5QCiJo82%I^s$^d#y|$ch-$ zNc#Se1}i5hU%DJl$O@X8PTwEWVC97BjdHZVRO`K%<~|U}datEXG*W;~*C>W)`dgjA zN^@#x$z1PDNaF-DZ@lU;c=sj^@;_%CD$1ejDg*z|%OQ;uye|{onQ*HqD~A)vyicr` z!+p7x*LuvqU%8>-{dczW)unGxT&GVzJ@fVX47o%|gB9<^`HqK7`|EpD`AdTnvV!1^ zFtO`dq1kxEHichGtE`4SwsC?W1{!4|!t1J@l?YiuQzOLgo)vGlzxwq7rFeD1?+GV( zlV1FGF4e9RvQnASwd*zN1o3wN^+kztI3X)ybZ!stC46teFNE5^UUF%$a)K{H>5@Ak zD`>S%J%%(`IYB(yraK`kXm9gK#Tk=-6XuJez9{SZUT6O^#;6l$oRBP{-4pS3_CKG` z?)c|j@e8DBI>xROXofy~rT8vS?(($9 zr>}R&3Jq4o5J86Nl2Z;5vVx{Yh+WUh>uQrPU(Bvr>fTbl)d{bk5;62rw)!s~O2lyD zu$C2BDZ_M(qO?X3?~z+4b%-HCR^3bP?J-NwlhLo&bUiC?11DZN@`(;5cS2T*!5WQp z46WX9f_St|cS2Ug@SYf{cn@;tsNN-CIB}j{2wlgTfATL(u5sec{^5~;&h4uN>lvKp z*{;4&CS2o0=NL}7m9FP&4e}^?Ib7p}WL8F`v%;5K$y1wP9ZpYJ1@Zp7KkA+8;RmzL z$DSX@E0;AM=P_7^GbRv}R#wO>Jn}%cQcrIWo+OtE*LXblloQIzHBQi)<*ZVKTQLt( zw&fVEae}8oJH|36E^;d+KRJ}#3AggORyzjkaa`jBvYuTK?WX~mJbC!YY_0jabWMM zh0Jw&PnuA_asv6aD_ifWOXc|OFS2Zxt4tU!8nnEbW>*zfs6s*IipKhcx(g z0y$msDuETWucj);kVY{?;3*x$30Xl?hpaEEx1cmwIic3%OTI(x@Et4CE=h2W17Jk*^*@8uyE=KGvO(l?csVq4;MYu1~~D>l4-U z{kfal=Kme&cMX0;@N|~knQ*K6^PFc?SS=f8MY<34bY|p);OVSUw9#M%YgpA7H9U)W zr>ExZ`?E31$ZnYqUOB5TE7cS2Tpl3XJCT;qNfPb&c%4eBXmRU^n9 zD`ndzJ__{|{*5aEW#xX6sY6!K=2>+jWJL_gt#afo7-LA|evxTet;P-I=s?Jd7?O(^ zeWCO*hBWRMnfDCsa!^kxLRQ3(oW}@#sz3Ct7(*KOi_CkCcI|c|WJL_gt#X7is0F2Q zzsOqG+ntaVF(j9W*mtFIzlztsKd2|##C^Gy%F!n1Q}h(qIDt$ZYBg@7(TR{1o+P)* zk+)!sA&vV*rY~q!aqL&Ld5w@2F(el;lB18Th(Vt&$}yl{6pXK$?@DHl%gCqec?=P* zae`kmdhT{6+)AGGtq3ZgUAo2z$s*cwQ8d#$e028WHfQ%D^X?rhv%foiPqP?;@5<0ke$%)gnA75f{+z5 zHA3t<;dOQTgd?)=u6Jgs-s*(cs1vI!eR$S;Xmy=F(VdW$XIPKnxjR9;?XDb?D2EfW z>RxhMO6@V@g(pS75US~VR?=YQ#B$r8+@a)7$VxHN{R%?;)d}L!HtDQH$ch-=6B~^% zTj~#Qae8@2qPk+fBuh6`A(NBs! zKYX>MHM!3EGR-o|gfv(=(K&__vVz`enth5{MmYu=%~(}G%1Y0uGC>S9SUEw4+N0Q+ zkQFpFqGwc@@T^YT^}u51i{jB9WkMSKI&r}t4r;FhD8}7t?y};#>a89_8myckp5|BO ztelV)bm#W)UUK*9KQ3m-YX5px(%{#LTi@KgL&=?x6|~wW9fP*T$_e6WepN2Hd?_oe zkiE^@aTJ|zw5c!r`p#J=&^RGkD%uJxW);_7(78!2L7oNZZ&1)a6)pucHNg-DO(ZkHupIkvfd!*y52L?3B8SQqWor} zal#3GZ-?3b%ujzet|QW3BIdiuTxV^IR$zy!GC~^4Bm!C2W7TS=A7e=4R>aVXy*eR{ z6Ue%r6O@6>+?QK%UF!(zgfvbd>v|*xS}}&)ms=^e){8bu1o>*;g#0RAo6xT!_vKbx zrw+C5wK3p?G)^GvdR~r6;dj(O!>=Ou zE6UMuLK-KKbv=*4?@j)7Uv9;9R__(HOHV8aX`DdT^*jb;AT#&nR$ONtp;lQm8cs;# z1hTG|V#K~HjawosPA&nErx}FoEm-KU2xi7ckx^|M(32B@_*7ZmXv|_}*D~($zc5#1{2=di<<+QHn zFv<=S1s{isg{Tt%%_}!{R%#V!V>Z31nT*V}$#!$zA2X+=}bkiB>11aROP_ zOGNCu(zumkx5ukiR*@iIjaN?Vda17BJt&Q`(s)H3rpGI3oIuv~Jcf@x(zq4npf9Ay zD`}iS*7ZC_tMA5gpwVi6$;6;FZNp|0mKLcih})pTEO#dX?WdjZ0493!N00$JDd_GtCp z7(*JjA_jfBD2JZ4k&wm-WL?i=RL3ioTvo*3-YnXqG{2I@{UYmn9-}&5sXb&x3`U7| zzj8tv_lvCSr5MF{g)g^KIokI}b-Yqw1h)`gJFbTd5qy z{ZS&wM7`ZZ<9!lod4Bsl(zvFU_x{aROP_^B6w*NaI$-pf%Iul{8Ku>w4ZE zK3+-VR>a^pLs5>>cqNS!$hw}#Xx&kz!trMimupft(~ni$k!`#$&aN*X7S zbv=*aW@wvV z9~cQ~@awX6&UPnc6=U0u+(x5!`5Bx4yl1;StCofsB9OJ8H;>VYkQFf`=Y)E@Yuqog z_9b^GWQ8ZmIYAl7%r)*8S^KNI6SBgSXMb?hv?u4v}Avq^nV@Zr5 zjr&DrT+v?S@D({9eQJcPh#@(T(Hh|*A&vWu@mjmryA$lxWRH6+N0sOey)ny5waqNd;Y-b-qPtnef`kJ0M8k&wpy zM%hjsD&7>;iI!E2Q6gG*R8F)s?iX379OYScB4kAj$vHv44K*BNNaKEy8Dlu#sXHMn zVo1&j`Ylgr*SOypFN~EsW2@2VL@@4R70Xd2lCxJ4#9+*Cmm_?sZjvACeb@`YE+NV6 z|KXdkuIJ?t;Tk9S2CZEMoe8&+C*Kv{-bIHmG)_ns(f(46=C8x=&6c`wOpUnVlRssT zUz)dInUF?)DLJxs3{j5GgsdRW{qtXA>^k9D%{uoVv%c+*EoE3IREzj^;&oo&AK zzLi}m)!b#J>*>1k+I50>Bd*#y5kngMQl|BnSf?n**T-;zTK{~({zMGVN>;>6@4Isi zvJM`{g(qQET8Pa3A6S9I%_e55O zu&zg^MzC&$6(U^c&0YG`2x)vx2{J3W>N~33ms=sTnks#21nZM@CIeZ~mmpZfq_5%a zd(bt=PN+=fx=Il$IkD5HEl8snB2Zk*VghE3wV-g zZyz%2X?Z5{jFLNA)JVt|nTRNtytN0bpTCOWzTC>Q zjakK2#r#zS*Epedwz_Ncb;wo1t&mkCvEaqZOtR8Q?X{rm)LWWRjjH5czPuc*9XxTT z1#jrM542Z8cNF_3)OXw8wkfSNP9U>GNoR|6CS-*t$*ruy+gj~ok;eTZ>lByngsg}m zxkMCuu()&Fui~k<*LQ7+AVZz?A~}!I+Tqr(5@O|kk*PzC)ZsTySn0%Wq$(jRu1ju} zBfQnt{wQhOFETBwCr*9W7SY{`7&W4_2Mb?LAhWZlT@Lm}DJ%JMD`J!h{XTb%6Ugke zYPUxxLRNT^T(o&<*OuBtR>WYZl}6Fn=1D?U#E@KyQS8A|FOikX(Y`;byS7A-m7WHY z^BArDYVod>#{D8wyY0KS6Co?rdYfpqV2mLv_lv9%qv(mWd5w@2F(elReK!))xL;)Y zbUUk@8;F1H#&<7EW;|wJYHcra@%M4iFxHAdt`Pa^wn*pyBBk}*SKF~omteKkQJUJ=fs;K z#w_8ka*g{{Je`HqXmld{EF{ULlE=GN8uyD_K0T>byEQ^qWGgw35z5dPGK+*X?iX1j zMt4G1#E_g5`r_^y_lvAC2BN)JUuP$9>Ikw zGDQ0XOvYEwM6$+RoskkL!1%Y%7?C@bqfW4MPH%DWE1B#1r7!>df1v3aCy>(wzxCyp zwvk+Y&!9L1P1iVq>@nIcShXUC-V}Bwq!BHme9}~&*FgM>Z2DCM;W8(o=+{KM1*t3f zf{?6QFNjvr^V;>?MR zTUoUU_bWm%im`;O;+XZy2ffj6^ZBDoqtD9s{V-l1Hrf7aXe316k}OX; ziLG50*EpdVZGye$oY+Ijb3pJTl5sCeWw_opvHpvCXTe6M76}EcH+Rv(_gWWkD4nbb>M z)@g`P?Q*F9i12>pS(OPiPDn0@0mV@6Iz>+95K+&{HKOrLdx(xDFJd_1R$e2K2>;2; z;Tk98sVGO1a4UIof>`0NfQLKP&xDgK+DqOhD52^~glfTwyc~+56Dc8(b-gp;F`RA_ zoRG!|81f~*WT=zBB$I!m!3k-+rKe7~*R(5Mvg!)D(clez>#mK2eCbXV&B)L`C5;o( z$jW``KF7+l&9mZ!G|tR$jT6*vI|fXOa4TfhbRHxB??69&Nhh9QC7J6wN25+i;{>v< zi)i12_+@Xn2xO0)COFN=3CTLivrSRE%pmbgy}8UOl3bTH|IbU#F9;Eml~tNhIfx+w zS=Y-k$XC&oyW;73nZTDcPIS)73AgeZDaUY)6P?T9gj;dFTJn5GrmVsWl-Pol30c>@ zcFP1B)tl2!P@a6e(%F9yk`)8GTyobq;qh|c;vi<;>z-_-;b)a{=lZ`^`BS#@8`Zz> z>>9;Wo2ysWW5^eTtdO6W>8~+%osgzVob{divr*qVBbGeB|6sA&bi2E=n|^spQ4Y1o z@bjD5d25}PAf$or)Pm(0RYD~vcIT|nD252tdcEW-VYTFUJ$rwLa!6Ap)MM%~oRAeX zv8ls4;k8TdpX_>4Q6}}oa$R|iIzeA};EMchRA)j~WTg!2SxJMH6Z9T3>`ut4T=Msx z{bB#}m-h|5{p=5$`sTqILi^8o{9UK-_-r;b{jsI&vcrfz-|{?(Te&I)n@ zd6}hO$aZ;(yY`=fcqdqYoFHU{C%#(dXV$zMh<}8P9tfGa#{D9XTj9mlUYSn<@lqfj zPY|-gQ~S)!{{-UYK>YFYzCPEuU&TA*1nwy6ih2t5RU;?|R?0R%b?E&-ydO#({_S^- z`$eXvhi%1u-i?qIp7pH4|#QBR@1Vhm~AFEU@YM*ox(%&05sDb!bukQFhI^YgE$ zE9xoKS0toyzsQG8c&t^9R=?^C^;IKeMGU^_<>jE4gdRdqiG(!n7x~GT9*#Ag_rwo_ z_1g(TR>a`jWZoXccq9D#Nvj2=algp>J@ZhjUr|RNhkyT(AY?@hzN_ZDwq6X@ABBIX z9iR7IY22^k<@ZOcU&Z^-eYus&k>4M!UK0D3Yn(u)rn!TQew8F-g(qq~KlzKgqMky1 zHC^L=k?9LJd^I}6psuK=P+v7dR(L|rPcWmdsHae0k&wpyB5NdyBV2r=hQvt5jD;Db zWIb_w_L|R0L`YL5Gy}v={|xl=i@q9zcwCn!S@Zv#kVY|-p|0ly-% z$CCqfGNMjN%n5zrg^>tw|4gsku+IVZvw%O+ng zUE_WgPbV&h-)kKRKXFlV9^7-LA|evx%j zX?H?a#E_g5PltM97q)BMFS1S%?M}!FPm*&Yl)PVcC5`(<)>)(730VjndGu^zsS@```q(R zgsfESZKBnJ{jPDp$h53ZRxPgtlwY^PQ;jIr^-1FdGHa_#StSWs5kqp(ui{QU*SKF~ zR)4o^w>2`vlFOG{;i*i7epRgNlg0^To$6Wik|ZH3Vn{9#aV4NM?pN{J_eU$M8bO9w zsT^&BK1EM)jr&EWMs%iZTw$6dWQ8Zmt#X8C2lt_C+%K|5jP8W2@Fck)ij{!UxL;(A z7&(#uH(v?JJ7nI(Gwah=65gumdYN#I6O7cNBQc;DPPi4DN}G-Txj zXRLjFIb%b8$U(MxpZnPR8w zN?AFfv-`RevQj*qu~p7WXFn=;WjJM7QCcT-u39;Ud=Uc~D`eG3y&S4VtjJKUDNl7m znku35GrJSA60LL9%H`1MVp!=EFl5Hcbia}&MWp+c6UgdUjNs{hMJ8$kGE~2kr+Uey zAuA_z##(nmR-)7WN@xFJMefQ_vAf5p66t;=U&KIGzfz6VW2hD($WZ-Cp6Y}&RYK<+ zb|+*dy56tC7u-S4$arb9S>tIfn@xRLcF_H^N7+yDX!k^j+xI;`dvA+Xit}AKSBvY5 zoOfQf*cVIXZ@h}Rk86;1ehsppKvRw(Uv7nb)e7UX+ZS3S5#y$1FU$^maGsb6Ck<^m z>DG8sh{{y1D||_V?1WB2=}yQBx^rErgjngs8|2RAkfuubDL3W1aza+ns*!p*q`}Gw zon_OVkQKD*txh~Y^5SfPW!A{s!%k>Y@2L~gM88Im;oBp(Nwm2WvVvA0tH)?OKR!Ek zhIM0BwBRBO9Uo<7TPLK!uM>WnRk=N!kd>FI9^+e&UDeJi+>bh4Oxe~6X<}AJ&=Yk^ zS~)8xWaVY5$JqUt8;d(iXAMFeaKz0W?m=m=a>7p$ENA6}te`(0c1wq`#I3@EJmW9l zbSLBsD<^b5V7=r{$O`&rYupq^zB=)z>#iwAPEN_w=%YHU6Vl+<2|qcqTvtxW3R*Q? zkD+l1E1iWTnK8dk_|w1%KRv0Ol@qcehH9i9LmI4{;N-ty2etmjdg=M$gsh-dZ}k|f zu6=zm`shSK2;FIQLK>``Aj9+><%Fyv-MSy^F}yG7v`C1~{Yo0FobYoX%kANWte{mR z^{k}9$_btJ*qx9SwCW9_(ct?dC+hMJNoN!BEzM6LlAIH*@6M5s#tCGdS=6176|p7f zg!XN_#{DAe1fuSQtnef`Cnz;vE?wh(6;CG{<@>f%gr96AIgio$+84iuOXGf#{Vb&7 zYhR6!71>J8W3*Z@64JO|WLj3Iixq8NBVID`&B%hU=~-4 zBndLaO66!1trZYW*SKF~oo1G2)rpW5o+Rf)tIcB!Y1}WeMvU%+tcW2wCt7_s#*oJS zBGadJN?P&tHGWs)7roBj;X4;6UhtJnavr1gO*j(L=*t)cGGCY5XNzL2KS+B+%GaMn?8F-zT65=HKO$WTxajd3Yzb=?Q(?HOA@johUB~) zt*^+j9MZU7WWGVSYqt|2D`H44`c>)sIlkO4GGEC{{VGYwiWrhhF^cc!>Q}N-y!QP; z>#4V=tW=IR(OPQ|??Fna`@?1GuzhAtCqhL(N4xfER<_?DuE3VY31s#+oHOyDkX1KAR@}ilF)uusSr;Bwc>8V+#w+)W%s!2L z+)eG~5FsmKw9nE@?dHIj`&GR8#$6D~k=o56f^uM`a^z1O+sD%H8uyFLYV|9h_)Unx zUYW2vp~)_VDj_SbQ|tMYv$g7eh+PV#UAbV^>Mk=o6nULr#A^7|vTn?nTUz)I!FpXcjf& zZdmCQxhc=e37vUYkKyHzmE!3M>M{%8=ZVrz|T!G0o3zE0kkZ~#xr_LaA za*v;|(`Zx)P64VC%P`@YOq}p@e;SQYj-ggLnr`LwmLvv3$s<7wGI63@yZG0g%R39LPh|EYS=asi zlDyqr`@;Ocs30u5G9AagQFy9`L|V^Hprp^-(`329P9JqDRff9%%T zM+1k(9d6J%Rprq|f10f~&EfgijMz(v1|f~gA;M3MXx~v)LRMVA_`aQE>~cBKoVm*u z*;@x7qM&ewllw2d;X6VedF zi9Pn%qeBZiAuH7a=d+|^=;RhBh?j0bVu+9xF}x=>8m+xc{fzp4+Jeqe;JRe8YJUZA z4Sr>Xtg{HZ6SBgSq*9wux5B`(5LHk*QtIXDQWHjgS?dBFcG;)6CK(!pw z$O^y6r4s~-*^+Cj#N3xZ+o9z01tBYB-WsKASDGrJlS%4zB~6teUb>f539OV=ett={ zuDthA)0{v8K^><1l{8pYiTrGlY78fku~M1Rwk&Pq}G^(_3nUtcamq=EZx_W;neio`och`&GR3=}Asd4xOGv zw)vjw)_c)rIBlw5B}C(Xk*T+QWT51nGNm(wgw!N#g`EEt@_)$q88z z137(qk~HoY`I}d4-{JHmCuBtozQpF`sJ=ay#{D8cIMvpzF|ivVD`N0PId6~FcN|We zift~9`$hip!!29=s`VX*)23>Ktcbxk?|e5$>pKpoO~sxljr&!+^yx`XP!6nAj`saQ z57BvKlmm_XMW&|n)00}?ar(n|ocLzj30bK<(x)fU9%$SzGA)}vJ;@1K5d%4WdXhBm z7g^&9BV4goEv^vKj&4RZ?O5h*o8+9(??Kl%fvkPd-3eLYNpeoK)(*y#TcmNn$l9IV zosbnVB)}j3Qv-ABCNNIe^X0<<7g_tnyA!e^hUA>!_a^J^T;qNfPy5fyrw+-NTd5pvqE%P%uB9AkoIv&+ z>y1VyLRQ3(oR`DbCraafku_p;CuBto$vNTc6Qyy#$nDYR+_f)Ved#y1>RW8jBbz^* zaj9&BOE1qpJ8!nQ^TGEqX*GTx(h&etac0S@z(jr^nZWOr!x2DR$SL!xjd`uJ{#SC+qVztaVun5)rl)lJ*xkU=Hl@$ z*vrZZ{+h>0p(oyX*g^f%tbAFGkQFhsH!IJoxykKqnq;H`YMn*y!{EDc@*kO}t`ZvAzr!_*E5JPgF)yLx& z?Oz~UClb=Q-*U-ej(>WkzDHgiRVoKov;O{y?BlKT-EPXT(O4<;cBqMyN5{I7#tGyZ zKEE>3-3eKdp?1XJJ!UnetYn2>S=EWq9z(Q;Yn(vdWAa!+ikC(5r|;Ys^+@~lE{Z_?Y{3RzZlBHU3;?kLwd zfjsl0H<$0)rtVt#bt^n+=Ubjt7_XX)S6KN@J;_{uV9{I3<5iRK$~E{EQI8SEtER>) z`En~fm9q-tRg>|`HC3Wra!L|L>ZV3&Wdgn9vNy*kfM*zYU7W8p8m*bk5Hp!7AuFzzXEI|i8#XlU z@S`Ikjr&E`^;nL9K=h>uSwUzP1yO!Gs6AuM!n8{SnVlq?FTHPN1%zu-#ODk4e+}U~ zRJ0?eo|W&x@;zTumX#B}U#(nn`Jx=MLRO8`v+~_eyYKktyGSD-K)J3F5Zi36)WYyFEllsuix!P$VzpXUWZKWqH({- zymLygLv}(|#6V83Lzc$doeXVQUFEVcm^Y);ZwB8QZ z2wCBYcYt|&q~43FJwy2=7o6dL!7Ov|R%Av+-}Vj!p2AxqYC&EgOxbxmM?iX1* zZMqY(!jt4k4Co!1Yuqogb`0e)IuWwMljJ-`s4Mnu$C69qev!4ODUZ>KkQFf`=P|-s zwSNA_vuoThvUZH+F**^l!jt5j2gC@wEG__wi&J0UA#NY05)qmQhJp>YMGJx^pLV=V?x zNMu%7@I;n8|6-R^=83M6EP}NZCr>yhK~!Vl7n)Th`IEDnl{AVWf;C0y7*5CvT03p( zC6@*(Cy?(tWptt(RRSxOBY$$H%AseU{6bJ8^?fX^QC5mU+njZ2^>!%x^hBR(5$RU*A-c*FF~tUcJ5cwD0dOWNcSrzWCg7Z>%Bx8 z<*pgB_7Zj{WF=Z9k5t@e;yWLF4~6dw!J2>aT?(#o!gqP(_Tfw15VHVA0Ieiv{O}du zl5>J*2meAy;{>u+e0L{gg(t~5!Ma+;EZ4YSWUct_PRI&Rl5?W9*169$?pN`&lDt^! zTqArXx#UvGWI10gFsNiOOto+slP_lv9@7~Kh3;Yo5%=zFbe+%K~Bg>)xmg(t~5 z!S`C`imq|LipTzz?u7PZDBCvCnwKr&nOhFMlr) zSu5?`6D98)!wFwQ-+AA^TSyhSp-<)(`lCeUjrt5z}5{+sRS-V|C ze|-x&;rm$1C0B32udEcW*p)Ky#pKC-lWyIysV6sGSzj_nLj+mLSCtT*$IuMGtt4v=eVQPKG$}&s^c%{m->s0zP%Gl` zR3{VzO_dN`)D`U!V@Lx*d#D_`UM5smWKtzW7j@N-oiZNw%g+D{;vVu@e*NIIA_Ac5(>yRP1o-VmGSUJIa@pQ?ZkQKDrrk<5F zSUJJ_#C*MIwO=_QE5%5+d9^QT7X+Tt{Yo176+ygo-*rM((5m%%$)&-{32LFf)53ir z%L-X-Q;xw`Bwzihm0(eQI+sjXj=7F&q}K?p|#@EJ=F>2TP3ve zv^yay(OL=EzR%J4ibis0jp&qTRVC_wOUQjm#tKrL)PO-<%gM+j5e`oQ@nOlAI$g(0;qvj4)p$TL1PF8kvQO9Wzu{~pj|;M0rdp&IdH!+dXG4pLn73y_?-3uYIE3cQe_WDXbHm)x@25vx zk}a_7x1v1Zf0t(`G`<;POdn$WvqKE|EoTKWu+s*8^BsI(k83;=nVhm~AFY;^GU1>2o5war2{eQdC zVq81V{+Y6p#{D9{x8yZeSGNaZvsO8rkQFihd)zfvSD`&JwTCqB7x~8JuD3StM97L5 zi%q=V+Wfp%78rV?)k~ytzsOsTy3zV>=!rvbCkR;)<6GaGV0}0A_MshHy&i1Ce=Z?X~Y zyJ5TrJtTX5M=fJKwOm| zWJL_*gZ9#xIR9Th7!)Cm`$gX4=BrzyC|NBW2xaAjtcbDZp;ucu7Vepl4YW!wjr&Dj zV1?`AsGXO5fj}IdAY?_1Z{K@u9P@Kx#qDPrnl!_=VqHn&ev!AH{l;vz3Eyee?y7-! zIYG#Z7>EDzhOGaZc>}R%c&Z)t$HV)+Sahl;zVwvg2{&TiOR||am@7U9Prv{2?3WX1 zkHrFUXNTvYo_*yfC&b+E&({CPotG>ZV~Id~GZ5D$2w4&1?q80}ULM9O zZ;0M~r|aMTkS+RL<9?C#lxQ?Y1fo9>J0%EN;px_YpP%h;2TvS`|1J1(-*gjii7}*c zzsT+9$M8Tj7J9jF<^&-tV)Tu^DBFFZz7PZA;89ofJw55Y7(*KOi>#+ap4CBtcsxPK ziWr-{a%r~hAkUA*LyTX3xkTTI|CzDhHSQN#Pl<4v6%N)(J5n zcz*nTtJz}=Y1}We#{BMttcWrEwJR;gs4tfoI=z*ZH0~E!Pl>#)_6fvE2|`xH`16C; zwCajB|K+GFhMs8Et~Bl!Sx3=YN3~hW@_~kY1}Weo)URE zzF6?(q3IKZtcbD8-~{WtKiYS?=8mo2E{*#|)>ERmqnbM;2w4$h>(y_zdobL!&B4}P zD~o}1c=c6cywVs&3_VL4jfDa+{LO27U%PA8 zIKoMTUlGWR`ClD3Tj;xF^^HJ0pCDvK4CMS7#a%n!o7ZL{q;bEb8jGtbYa`Ti;)2E=_|j_7}A$?5uC<9?C#lxQ@5*dqR(AY_H7fB*2JY}!Bb#91Z~ z=lR^{%(VkK+g@4Sq!+Gv?oXIe*n^sSxAMKx~{KWJL_*{22xD z%ynO7BBXJ@$TLp&yVfYmxchP-l$8^*B8Hwm`TcSAc6Sb`Yq1eJ)7{vq3=SRmLOzB3_X1sjfW3> zZ|L+TUg$e+%XOQ)L)0E#{Hi^;uKmM}#^B}a488E#q`qf2+cgr>IDxF^RiklqcxUtFmQ z%Qan7B@{2OtEJZaW zVg}H>?84TsRNka!f!L%qXON~!=(lM8OL(>IXX<+?{H}Fh$g<*h?Io*U)cRe^FZ$&J z@oejturyUdZ&>pfbG^Du-}E2+EpuPUdRyzUb7J;DOdAN-R0+Ku&VS?ldX3NeZrke2 zS~+Cpb(qiLE(^r(1K}FtIiYvfjmEO!{@ClktMpHM{*xsFT2|f{!c0F9`v+qBK)9w# zwBMdT819crr~IVJuM+M3=UIqx+iM5+|NGpXA|Z_v$eIl{8i!6^cj)Ke9@T%+KEEjKKX)s#)h_c! zX=#|-bQ60+jD_M$f$&r!RNjqJZ; z%pW2ljr&Dz&l6wiLdc33+P&Utk6qX9pLEIm{jPDp$eIl{8V}Hdfp{)K$O=!|z20d2 zGK_HVY_ERuJtLd^p^LJKuBh&{EU?ywrkZ;%%dS>ETTBP>$#3`qj{|8GaE7X`DdT9JSFn zCftK#9&9w5=WJUeWJOlmm)>ZM5BK1st4`lM`K7fZA&vV*)*Q7cd6Sa6FSp`)dsjTY z{h3|YZa&-U?b0}btXXYX!5WCCIuNoVhIX&x zkX0qC{CjOv-)pt69V_ic$J0tP-`x6MJA1eXzqQg_2w#zh{@D78EML&FV#cw>dK2Oo<>H(0(8GanO_k6$ojk@I zuP!q*b!+Y;U(oti;Mo?lrJ)&Hb01|@CED+O_|gz&GDEkv<~}0uD=V+{e71B&AZ~BX zeN?+uqCL~+J;Q$gU8OlwYwjZgzp^U#D`rb012I)=?xS8(CG^W8e{w!^%1@f_x8^<~ z@GC2NrTTQE!E6cQ->tciG*v=pDl{4whLQTjLvHHpnP;CSzVwR)S!V!1>(@)8@nncG z)7^9T{b85Go33#JnO}YRUs9fG{5nIEn{)TwmLOz>C*=HBD#Q$T&pjkU8uyE=QxWp4 z8iBZ@6~hTx5ktQ}i;@pfa@V+DWS#ENX#6%j4eq$_p`p)i*rrCv3Qzj|*=QURo;bIk z_wmqvTm3W=(zst_ohA{^;|R6;z@+at7g}_c8X+rUsQnv_XTy{8y;Bx!{@{=mBO#6Z zMb_CF#qYr;zX#oyTOqf5Np-CnD*@S^#VRdU=4r1CE7I~^*xd+OL9@Orz55J}_A9Zb zO#7o)A*S6m?Uhc|OguyFeP+H_CZvIO0y(|gsY)m-Y9XDK@+AiA;n;VjlBf51dC99p zdY_jQ$XKaN>2j!q%0vWhlinHTgsh-Dm%Q4}+Ve$*o!eYH0I?E5Eu{OEe36N)km)h$ z{e#j}3EC;Wm&^%SDMq?>tNm5?hfa5>_e3XTMGWX%FIwJR&dYwx_*z6q^@=gvW9ZNBbDR?6#+ zin|9&J1tU#Xi8q}H)y(FWcC<9)7#U8YpR6kJVqGb<5~c>lB|(BO%Owx6ruaPC`Z3r zA(OkFS9q!uih-s|h|bH=YL9-E9KTh9_9(@OJ1rojaROP_i@GZ9n^0D2XZKVlTqD0~ zLD3N9o~XT{^gitdLuQv){jWi}CPmc$?oyTT-DleQR?o`!TKeA3Da*V(Ir652D`IV)(ah@l#($51U|rCp6vo|O~6*Rpd~vQj+l z;cXM@eeCm4Z}%NT^<60<&{PTT+WL->Dj_S;^_>>3L3RRJS+z$|te62PD`qwLt(_1tE6_P-XXS*xx7A~K zRkRs*yV3?-TXbamurDLTlaYF+3|-5koanCv+cRrM1;l zo|O}NM_P~JS;>kRsu76terLuH&D$kw%-8SpGQpULM&p%eU5_!evpCN5rGa1!);v+y z%Y;X-5~6cLBamB3W+toW3h~N>Yf?mMPR)}u&h&|{88W$RrmyRzauiRT6d}4G;`4({ zq(P=VR1RG)6RIoyHgH06QS#CgM_GBBrwL+6qpZ||qKQ$Sk?FS#1oIum^WPt3LYgW8 ztrqM~UMNmgg%nZC*TUW6e?ruBj5xnlqGR$d?E`+qvGE zkd^#GlP&Y0dV8q`ix;?6dYM1Ms30cXn%AwJxJ(F4Y_JgvA&pbK1 z;mmLJB44@LX(jo-otLW2WU#vb-#^Y)e|z&te0t6n*$eaU9Od6Wxj~d;$(#I_e`1V1 zFC3h6#bu+_dJkMQ*x3GuQ9l2m;|7nph1Iwkc|=G9T_p~Fe1$eKAYz|oCl-D`df?6? z-slY<82t0;%d`oAn3XidaN>;*@903FAvy%I%AweJF4r#Q5P^K&q`pWmKl#`w*NK}? z{bb_HbL~*FBHj`|TX^upPkxpthcsBpFY+q;uQzznu$|k)0MXERjEnD?FtK^+wxxLW ztlX~?f8BMri7yOn(T)KcV>lrzV!wO(CwHy-y$ut@q&0>HKRt5AqIO*_wRsVv+8!cq z`pc!!6NcsX=zHWhMH_f~bS9)BcPG@cMT`L?tg3|CU)dG}LL{V73=!)21u>8!WCg8W zSr7;@2EARqZ;kctD`c*xYgZclI-z!|$5?#sHw(Yx|Mc$QhfC)7%F+-0JNzk&&D(80 zpsb`Jh7(8a{^{U!tFkV<+Ja8V3c9)WmxH5s+~{kFXSNzqj8~Meloi2>y3z<&B^d3n zEB7n;A`@hdiL^&LhBPT69m5G^#aQ)@u^nPaLkuVAyXhEC$O>9_bG_u!VCBT$AKbV@ z3@2m--FduHk5f5xf2fDnvy!Gt)JEz7Sgf3om9D3sQ4nabsuG=_I3l32f?j30w+D}W zed$EMk_M|MFL-D0i<$Fyik&XGVmNWqZqsMb-3eI{kDi|{xinZgvG_mc?hxbTheu?T zP<~xb&oYRCrb_Iy%G}XYy&Q^O&8jmYO_g}y=IJ`ba6(qf@axOr1TFaWgsg}$G>S6)9(y!*|$GJ0rHSM3X@0Vi~C6^{e zq@N!i16lK{g{J;?l&PWeyu^twCeBb0)K$9V(vX!Cnw`~SI3X)&u7CZ^(h1EU(=qha zmz82LtF04Wa@CKQsZMxloj79fJK5-~dJ-|5kQFhuK6K^|gtwY!c*mqA$}KoRe)y6G z*$MTYdO4hs6*O|XJuZ83$!wMjH;MQ5zwcV6m?8h=%O$erN1G)|E)9O2AVzv->4dCQ zrZnMMU4O#T+27XMu#{oFzxVtbz-;IHtbLi`NFTPkUM83O^Qg@ zl@rK%8>t$hyyYjSzuELRo+n>;Xoow>ttS3%kK!F^XF?jv;lx2R?3+ChMu~b>PRI&+ z)9{zG((f7W`0r+!-isZ7^v^Tis(8F2#sHFQkexVbzdf_Zl5bc%cUeIz!y*PkjIq=W z%NF%B`K2`qnYKxfSJL3uiO(KeJA3XdPJ3&$-~bXcS}(u$Y&=NGG94(`qT;TD1I+Ne1H5A zh0OKNgq~zhD0UHJ0I8bE1#cW*{QlIpmx4fugf!4jEPu|i*%IMbSa(8J&=Z~?RsQ8w z#5ic%ouUS-U2gqp_Vd3t=YK+tAtwf=21WG5JMWp5JCCUy~GJwLEpCawi$0i>MbY@R!%%| z<~AAcQR)O%{NhzsE|-377j3RS3ZZ*Kbh;d>#VYZGX^!dej?4*JDMotE0HHZUl_<@Y zigG|`UgE?tw;$8t_qh|YQkhCI1_M$kQFq&r&My#SaNBwsuJm^ffL9olV*VRtfWyUBJ{lKPRI%x zIXw%PMplZUxpqCq>kp1D+TilFj*Y+Kp{e!KJAeULG<-9cUvGb|r)yUlXeT=N5+`J( z*y%e8LU)uC|N8sM9qw8uWTgz#BLlf>9IO)QuNh7t>nnin;Cg$kGwkGIZn*C2r^L4r zDtUUINI5ibbK>T$PL1z4>M@*<6*2By{IvMap-xDH)io=h7T+x-vl@VPO^TrR)MI#7 z$m(OS9QmvA47rFg?;7EqTX;`J3?CUf_g!gHL^>-ckd>A0n|e80PM&5|8Vp7@)=2E<#oiGd_Mwc`jPSkjDKYt8MUH9;uy>6~y?1Pwnug zNE-KxtUgwcq2GO2QF48?Mo!-!(o_lEY4sRR$O@WzE5#Uqbq%r;>eKZYXqanp#iCkOnI!I?wc-kdo5n zF9=y7$9nUu29%XFDWVhuAeO@kWUQcLYbIkzqfDGg$8Z8!MC_Hx7}6*cC(<#TKo-H5 zlu~;PsN~WRqe`S>IDxDfj2P({(h#Fcq+>XNtQc`5O4gM$#HbSK7)~H7MjTO-F{B|z zl}N{M0$DNQlOY*H8e&w5bPOku6@%wvx;>;JMwLj%Z~|E|;fbAlDv;~ttR@x&p92w4$B&#rpOrNPPxR(yYWXzHovgshtr466yCo#1Mh3cR&xfc3@E6cz+Zzq){d!c#5WDI3X)&=9$_akmvA>}n!wFeI^J|hF7Y{i_bCy24>xiD37JMBs&4FLlM8imb5`!_K3q6SPx$ zERiq#$_knCrN=92s>F^DT%VQ3#G)Kd$VxHN<1U2i%8B_-yD?+bu9w^iSrJ1uT@V9E zXm+~&_CZ#+AP?X5H-lQk!d;LqxinRRJ2*{9QzgE5>$n)N$O<85<%F!Dxt^{oX|Qr) zrJixIeCZgfU0Fd>zH|(&9>&Vo3&*+k*REWy66qN7MGRzRs9LX=Lz)zkj^Tt#3$4CT zk0A|KPN?1rVgLy%UsdYs>6wwIM`~%Ho#1yusT@TNCu9Z9^%6l+F)L}Xass*3cS|wU z2C`C&5>bkQMloD2y)`Jss9GsTi6~;|i!@gH;))!90VI2(G$|roS56?S7UD0NWDIGP zi4*AM9^0iMh7(#RS0}0~D^%0`PDp1Z4Ka{KXmqW|a6(ql$m!lLjjUAi z&d)(7WF@*ZBO|@o+aWZ+a)KvAX=a%uWThBiKa+8S=M{5bT$fvrtn?*DR>aUOs!sS$ z6yIZ{@v%-wgWoEVZVxArHS5!8SC1hLF{(s5h7-t&p=Vb;hBU;e66qLDAS;G`_0?lY zLyRhso{=#c$nQaK>`;6e<$Ag&N<$1MmOX#R@>&DZi+$G#SwZs#Ass^+tekjp*#pWk z1{A{ySt&-kb|F-9C(b--|MHjWQVbEYQjGNILkx`uPN?3%t}@e-18-($VwWlxCj4lS&4wArt2}h zgl@%kz5-E)Mahe-=lTq$6lTNVZ`Kk zZ_AfkkyX3o2ZyXSp5wCYAHznJ%Hc%0c4rPHU+1lhvTg6p_ua^sTY0TF8mCM*y7|zk zo3cGl99b$knJB~Ym+qY%v(9VTMnfxw+I?u6(arCUxhcEi#bbM1;{>vPSu`3Og&4z5VqfVXbRcw{YvIdVK}ot)YXTt-kkmK zv-c*Z2&@jiaPMr*jb6)6K8JT?;{tKTWoKm{uDeBsFTLM;=&_O6>DND^Fhrk!bYbBD{%$tIk+e&$xMg#P-6 znV!wYzkhM;3vFVS(A(#jVO;jeiTyE#G*0~d=8@T(KX^WS<%C~{tacA=zQVH?WCyOZ za*1%O*}|Q+<4rGS2VQhlAnp!5@qle^%FfyC=s~X&uhGY5+&jDC%h$5yU->c+^M#V% z{jHm_smB~U=o%-G=`r~mNS;xDo%j0ewr#T-A*-Xq+3ict{CalBpFa;V#)YiTJNoKu z)!8Qxy2kw?t411)BLZ>tFR#u4OK3XDkjr%Rv)f&S_H^-lI zVYca-^OXp<(%r>a*=Sr6V(k0D8QJ@fZk>5wB8K|dzwR5E9lqPs**#~E2}ED0-Q%u1 zG5c(`{WI4%fvk7djmCzdUv2i6)3TG^-M&W1YVT7dLgGs?0U+_tkax&wh8{)!F?&`$Zt04tMRb z&p$GF?`qd(u5kjn{k`_-P`k^1K1l-@yvRmp}R5;Fgnbt`V}@a>WC(%N{!~8+vRY#5gCE{FCd(-nH-O zTQb+UUu4Z>8;x_h2j4pDuDiqRwMxj!=XN=<+8SryHFV4^y&H$<$2@*sw)J1e^vY`R zqA|USk+0<>tEsOad)LvUZz*Y%6<@8~Q@B4u$@e^KvB7DkF2`^JS>M0H-#84!3B$fW z`0lVeA*)UA+dn&D`1owaxlRjDoNt5{TzSUF1|M4Hx?b0~Uu1ouYc$pmHZ&tKl_8uyE=Z-rr27M|ymms&J?Y>n|X zLROcK+c$f8l*jF{&f3h^BgpkH8waS5Mx4bU-E_R zv;GTD?{$q6$lT5ONo)s)y87|qyJrWkJElg+s&AXUv-jqDFq?I+Gee9ULRM3)b#6A> zH5>H$OmD;R44<^;GucIpoEZB;d)9Y;ARhnKS=oWR|db&V4mwGZs&B7Qw zrOpb3eslgg+=G;mUk%!!z^@5p{qo{|EEBGQ7J%LC7 z2AQ`8|F^6}K=a0;9;2F-tRN^~PP`O;bKZC7CA~*IvS|Em`S%AO49}r~_?vU*GhT=? zbGvVhf4=9a9gYY+k=fF|e>tu9`|obwOAim{A@^_}FxUEM^(%W0JOAX^r**<(J|jEw zx)XcnoISq>rKu9_b09AbchsCq9ou_-xTCmph{2uX@t8$jHrIhY6ZU4jVt%#pbI13t zKmNd8*Em7R6}!=3el`7KyY;@bKCt0>yJMK7b&dOdAp>}^d>)kyIt#EyfkkuMtes#_CFHc{qGx7Xb8wX~!^!7YYhOQhwJ^Wx zb&dN))_9!HmUjEsS*tNysuHsDaV#fhUiIwNn2|9ndV7X72R96}J6Y*%Wcy7K^Q$dG zR$+dXDLQYRloe|d-BUily6LRNdcypw6vGK*trySdSHB+i{hoges}r(f7Pa@}7blKe zhxsn^tB+@Rtmn~XuFG8Gev!30KA&H$dei+qhpk&DWW_A%zvm5`xb5}(hZxMSmjBU+ z-m{*+JadivMQ*PIWPbI|Qj7LJv&Q%uAuDE4KiTHC)ql4Mzj2sfz4Ok7z5D(n{3Eo$;RylviKrp}B@P+Mrm%s4z%r#CRYpr6V!Tf5U!*}o9bKNmDLRQQrPX6M6 zo~JM4_aN{3nql0X?xjUD-au`9#q&KI4ZkhE9c0|)*Dt?>8ISW{!o2Gnc=Uqa&30Zn zA?++1fRc;UFiFaKww)dU+ zw~mC`zzODaPcL<4&$#V)Yrs75;Nws1J!5npLxfwETabC;<9e(7tnQNTT(R{}b;Vt;?p=9!BbHnm-lU4~{+7Q&~F@;9l{xL?WnSAE{3e(>u5qwGB3B&n*mUF?!Xq9i4V0)hlZkQHHPra{6I1SN}N z0wkj!E|S9_Ip-)*$r2^+?sO9rMGz5?90VjsiAs>~Joon7{Z^R8zrWwG$9v9m&P{de zhN|kT27mmYm&dy=w_?|D!AI^JnD7&xLuSWo)z^<6{NX(tm*!OLeytYQ#I~_^g61m7 zU(IIk^@_8O9lT?Wyz-L93HD2`+Tr4X73MxDVzBo*^L?idUVMDs(-+}Z#GqyK^Cj%P z{`BnQ2M;=C%|W+fC-t@at{7+)2c%r}3HDy!pZ?^**$>Vq4bnKluIgnw-!O2+clVE6 zvG+Rk@Tr5FtiD3Yms_z@c<9e=8CYjy&Og|D{pluG4(__;J_BBhUc2nDo_^i~1LJ1c zI0*J$+jCtxSRA(hfNPvU*7MtWZE)#)mky5KY@|lWiXGOQ?tfrl;)$C?4EA16-RHu= z>1O+Az%}j{Sv8XPUN8Fjg@dv8S|emto`tjbdd=o%4u1IN7YAMAe#>?Bjo5oV@c7dP z-&$q<65&?59`orEy*#A!%M1AB`CZ=HkjztaA6&e1FFo6fa7`1TXYTqGR{p*k>ssRB zN$IlY-{F>PphY0F#??C}qUwaKAXo|43D+RAuKmB|N(3}(+Vyf0nJLd9>eqNR>-V`>x65NS=avGawP(qHEumdHCM8NsFplG z^Ml6UN>T4qJ9*#Dglj~r9HL9L+fj6UA(Jb=qC7@w^Nz|pS?m)dMAug?u#!x=zP3^)q;UdS>6zGS*Ppb`pXTYd`*JJN_1%{` zA&nErO3%cSb1&RFdhs<Vz~-AS*o+Z|r-((3I_VOEIKzD`Kc^>Vz~- zAS*o)#Vj}M)!Jk4m4@);Un7xBy4t2rNP}My$V$(|Qa4O&efqL9hS2yoQbZ6#>1Dz- z9>a5+iTvL@1Mu(3NOn(kLeYsK0+|t2U!W0{V>lrzFJHFa_jeOJKfe2nHX8rBlwy!8 zrI!iUc&-3Z6a9_ zL+NG0HSTxnx$>`;$uES`%jIwlF`ST`iN&v(*qPg(l~*v^c>?8U;ljP+(+_wC5>AVLtk>O6Vf<=tn^Im zweAl(k3aum8h52}E3c6{p;~kTS?QU`{~b>AD}AF6zmg%i9`(IGQJIj&31odSP1gKd zCuBto$(i{4Src2gtaoPW?fzvnSrJ3&Wx_S?chp>^>s-F7H09Hm*m4|=4AMA(>|bIV zosbndl$@>K+-_p$xMR;sBb>K^tcaoXGT|EcJ8G^{oBNwc`nDy6(p3ij&GQmzh~b3f zOgwz;#Mb_k^LXXoUlmOZrI!iU5W@+{nRt1#$A`8$ZR-|H3muosfnYB9N7y ziOHL--`Zi5Ia3U2+{$xXCsaZwkd>Z^{NH>Z^e;b2_VU#U&$|d>a9`24sYK-%PRI&E z>Dl@#v+vjW<4jki*|xvWCz)K0x3AC^g%i@?R|K-sbBqI4_+e+`%il}0C28D>82ajM zosh-}WTj_f@E7xT&e?Lk)PmBu6*2Vn-Z~+T6Ua)>#0q`#n>rzl z6Ua)>#FX#v+nG4_xir)FFWpKehHAP_NP}My$V$(|U*hgO-7Wd1Dz-RYG(rSLuH4za*gV^y5kCWx_SYa6)n>PFsET){~1blIqI8 zDlflyQhJ$i4KbXMT*_4%Mg0r>lHF6CP;_F5KxV&8-|QEa?}JXr3PS1Gdeigw>O4B@ zKpIO*zgE!wRRMCP^fKWZ&lTy)p>o8(`HJ%2W{_V9rI!iU5W@+{nOJVleOeoRcfQmU z{ns4i7f(tr6RshK6OuDA-4$zfw*T#dsVA!cK*%qilwKxWQzb-aBL6qnmA*p_Eg72D z)EBKqWkMP!ko7ffS@Un5kQFf`XJY$_tG9M~ec^O{_;0YtiWo{S6RvT;qvom+jyMXXkIvte372Zv$BoL+NG0HSTxRT%~^HUt7=@ z79frS0!G0Aw+ubR~fX^0^LS?QVhRqTcTv3NS|$w=c?#L(}q z)d^{wKvsGtW{kb?i@ST_(zq2d{5QjjVJD<<0$J%fhVO+-<5phlbwVxW1hUc-QQ8al z_m3qLLp5C|q`|KUWTj_fq01(={_wAS)#|-wCy1f+GU1vkp?I0d|IKp-|6N1L?x{{F zIx$2bb2iny7w&|tAe5eC_+GgGcA{dCE2WnS*Lbc-7hNs~R{BjwWch_qdYN!dl@Q&_ zRc~k8e-BcA@uc)J;Tq4O$1djzEC0Pr`Grt=nQ#rX6OuFWpUWn8_INpuqI-9Lecj{X zN$F+6HC3XVtLM)aUR zGS&%coIqB3CO)_R4>}7xns>IPaVxKpI-y#00$J&q$p6iE9Q}SRekDV2bv5s7OXCEx zz9CkR;e@P+AvqJiuJtd9$%+_CFB7hDzoX_V%@gITN|W2>oo#8HK-MpJmr9;uI3X)? zC^-|p681Kb6)}`vCS2owN6l55C;D$l>$jdElwK-Fnq^2s3@0RKVwx)_wjOyR-*No6 zutgI?>1Dz-#Bf4#CLZ1Y@u6Fe$vfNr<$B3@(yv3;32BHS0$J&qSmsCTw^m*^?`%us zR-W5Bp%OZQtn^Ie|K|Cwe?wonB8Jk-glq8Ygyc+I5c||uJaKv2r}pm|O2(7El2|9C zA%+NKrDx)y)(<Z4TFMDzrDx*#t@iCaG{ZA#pW1(eUNSLM({(}`{E9$U zdL~x8bYkaI@8)~0|7yJmVko^#xW;3UE;*zYj0J5K1o-t|5jKk~87^)cO^9 z2>Hd6(#wQvs)XoruCVf7u$NyvDZNa%2HFY9yH0KJdgSVVM z-M5kde(DQTxQF9O>Gg6*Qzb-a;u~@9{Pw!}+}XeICz=>aFB7iu9FCf+bm#Q%0Lm|f z(o5w?`=Zhi!wJcmcq&ej-|e0vtAr4uiJ|l|;hHKTx|FMQul3*C<~ci_Xv34z%Yxmsu6iLIUH%qIG_^qNIw6e{$g52F{r^D7iX2MLG1izgvGu{(c_#DFD(xxym19{E zL+NG0HSTxxT%o!0k7xE`NOn)M^O$8bVc#Fm_i=$~}GMGU2v3D;DKa*S@t({(OiRhsfO@6b!*1hRfFAba;1PRNQJO74}T6D3b=?rk6| zVko^#xW@gCnyYj-@Go=gYupe@FO?&$yrdz96OuD=ZtT!+(A}Z;@4|~FhSJM~Ylz{5 ziiduZ#Cm-l&gB;>)*9{IzO{l5G{lK=VCrXwRW zzL?~`J%oSt(rMmN`a}vPusNR8YhrHIn%=2XsAla%D)Iz6q{eQ*b28Vw@c@pi%%PJjr;ZQI~BzdXCE>7mN9#GzB}#m zL#}ZGnckki0!3f^*>n4JR{Z^#8X+s*^p~u@o8KSQH8|J$$EPpeV8s`2bVdE;jpKX0 zJrl0cD4}oUG{+mY?{zvK{lBp*op|+pE&m=Fqn*Aerm-u3 z|LW52{rndX+*wiUwe#-23w`a+7ama}+{(X~ zQxprv4B#_!4Bzn5e~%qSkO1Y4`4Y-xZs+T!SpaujbJSx6*x=>%S;&Jt*Iu zr`>X|mTR2wt9f+7t&o{N)W;HC=dHuPIv|;EmWcNId3p3fu zo38B|Cp=!x(NRS11mizw_9p>vUY> ze*H_wMKN&wyOZCG9K91cbBz(<(?v+v*U zX+N~n)yq5KR-VI%(XFeGzJ2#()ergQ%SQSdf4LmH9=cX%(|Z@}{BG6Frntrl|B8K4 zjM;C~&Vf-^dz^5>^-j2z=Qh44bK7>E?_GR%`=9TeH_kOq_;>b;;>C4#>YOE$D=6L}Mj6_p4t%I&bHSdDpAOkQId2 zNKuSNxRvA_W2U1v?VL0JOeuzIBom|D=9eB2Pk2AHVCVVHW&^Uqms|ODqmdzf7iXB! zfO{%)XUWWp8}GF(h9B2B!My}e{nbPmLljQ9mCp=Hxhh=agwIzparIyKY3+RGbVF|C zx$DOm4BzIC?>|8^WlT$Z@staIxW|@U;j>3QOtAQyOUpt98GijrY+YvfjoS6dw~6b zqWD4FIXAuN=An1q+p$K-%D>iB6!*rRbGvAZKS!Im#{DAetFF1tFF19~(EZQvQzK-> zeMPeR75@&Wy$osad+0Q8#2r8HWhlK&xGyIdF=qJNYl$usu3=>O)V44GA7VJc)%=I^ zpKOTXxpFJUe0}w{D8|LzV9O`wYu&x)-IM(rTW;lad{2Mk58BT@wMV*YJttl!$@%X5 zYTRq*AA9rAu8;g@1^)(}e=Cj={QD0*F!0cGOGGdEYusz^U3R9{7Qa7v1=lcM=^JFq zRgUq=xYu5G)5y>#F4}pL`}HrTxu>F7Ebg_Bu5$Cx!|UC3gKM1ducyUod(G`Sn?8Ea z&>4R{>>4NB%5&JS-OImq_juJP`Sq^|mdkN$+-q03cfr=5R>>nZZCfS$JBLN_PSn*Y zQCIhFcH#=|%dI@OMR82rYxlbN?xDGU^{Z=L@dnj~&156g$EX95wCGfe-AH)*pq&Yk(a$*;ye>djc)xyA`(?umKLx%xEgt+3+j^S6FJ{W>*5R{kB> zqFC*|qrSfJyz8`9dU*bhYuvAY`?V;x%saxZ*b(ly#tCHR4|zqu_S?^mTlW5KTE{H< zP`gUV%D??u6#tp@#T9wA55!oQ#Abcq;N41FaDzxw_WvcAKFT{(un%7vA_o`vk+ zzbX^*g_VDsO0nxPq^T1A{i|{eCu9ZfUoa~Z`c@ED`Zf`=e;21rNK+;B?WKA-oRAf? zzT(p(hLOo(qQF;YP}a@STUTC6|{O!osb4A zCu%L&i=pq|K=^lY^mU+K41`p2X{v<2`%@?MbqEN3_W{|zGm(19uwqDqmA-g^EKgI9 z;e>yaqudka3%{~L9&g`aDHHl)4p#c^1G0aCrc6jvCHxx@qZ6`%*7tJiC6@*(C;SUE zCIAPe`mBDLvI#ir8j_){T<#iAzxVO4OwKx?&S(0m0X%C;qUO4V>lrzXuWG) zkD)gtvC1gnJJIGs8nD`>sD*dvCK(CE!cw?fvNnsq{&Dxr8i0wKk4 zLRQeDx1cmwIiXtb#TZr$Cu9Y!-cu)}!ODqR3-)5@tv?8V8&K~=_F^EUl1o!1^tNN2 z(ECFWdV>qu-(xBFM7@!RmEK)J_BY(hgfvyc-(wk_kQKDv$E%k^8mye~cjC%1q^T04 zm)r?iLHm1Na4b zD`M2@Y8V!c-n&Uw%RN7Zw{Vg5j!`{^G*!ai`AK!vi=ij@A@poMvcHv5u3c%Wgx*}J z=gQw>aawPW)Cp-kC&;76a6(oP{x(Os9MZU7WPdlKTvvMX9V>q#-kH(Gw}(_|Y>-j$N=R$ji>S zbnHxYiD3vdN9_3A2pV=NkVOy1({y<+VC_V1<-8+&^#AL} zU}sa$=}OjaWdFHWCzKO>H4%AV)N|#8WUM^5A72h9a>;$)2fx=8FN|#T*?eA0FVWfU z37`Jw$e-rmcl)Y@N~m0^uJ(B0*^$MUJ+y(4rb>M4i_ebCJci%9>&6&H!paG(zVV}j zdTm1;V%NW-l@gsh06tE*mD(qQETJ?4${yU5jk z<%F!DN55)ytzqRO+~|ZfRpR(BzBsbmJI6Kjb|+*7tuZE^J&#e8^2cbM&dJEnt-AuTqN+`GGTseU(E6;72a7~q< z7IMj}ZBFeTeA(&geokwi`qSf+Ol#)*N0pF<7)~&{j#=uExDR%TVI-`akd@M#?;j9o zuyTTU58cIYXExEwnoI74te_dYn%l$smA60fzVy2@8_FRK zeyc=tPjmtqD`;{^pRU)HG%C3W?soav+G_1OAuE-fYo#88I?+|+gq|0kIw31!aQ7)) zQK0FHk_Ia$`cGh2%i)BqRF38rRNG?Z1bv}?2I;<#WhJ?}CvGwOg9F^}u!`|(fcp}% z#^8EgNmC{I<8HO&(o~5R4!b$UuE%gfR?us$ed9oB1~3eZhH@|;MAj2qidUM$^$1F< zSy+{b5;WWgoj}Hl804@t7wyH6MmZ6oC*8<>dGv8YR?w83*>aEQ#gGOoC-jV8k3dLu z<%F!Df4%y31I;siX|QraPdCT%p0r3Hn0wJW;&?LROOVoS|B~-b=py zt$(B%g;4v~%OMR`PW*err$?zPCuF4^?~L&oHQzj zYFgKSJy%Z13i_EVUm9R#Stq2y$_b4ac@Ka&A}m&3S1MCnSyPU=32E@_1m$R+GdLkD=%~lulV@oZ9ag`R z2CFL3Joj+|87pW#w}$8PNG*+WA|j38KKJS6$_ZIP>zT583~8`(f|0K@_vyuOLRQdv zLaZJ`8mydP1TXcHUJNH>1 z{B_FZ%k9>hWsd{X+ko;LWk{nl<1X^K$G$nR-}VDB7dkhHD}(s&?sY;|9mC*en(@uH6{gNP- z4&ssqLRQ33%hC$@xj`i5J+97l2Ow8lzj{KFA$ofN>HZ`_exWb@;P8m2 zBO4$6dS2s{h#Nk8(8zP|FOjUcTlU)H?1M)(`1e4*JC}%ayBcCR(ZAPPIfhjZ+O|rl zrpbM|mmz4UIG*x2rV{S=3w4STK@BYFF*E59Y@HhW{aU_o=)sjn7B}OlY6S7h{ zxK`@9@{&8T-BnZ4^*D7xR$dErLf0BrjENd0bZyoNX{rRhr+F-KLRQf9_IE$MUc>bv z4OUKY6`XhF_ZkSbEd;%U5eHd)pPG{kU%YyOBGw`s_g6S9IUr>{Yr9c9?JJNJ>s{UU3`D2msDm=wgd z-MNnwvLc3d)r;ccAkGcqr!muzhVfN?C98)P#j-(64&t}F*9lpv9C;65`yiNGF~@R^ z%AwImeLCI^U-Yk2?u)wme+`7J@I-5J+vs^T==h3{u(uV zVgn&7JRxfrrzoCTW4G2k2j-INOz=00teEz{wU?oDJo;|LnRZ-@KYU5!1TuTeI_(>s zkQJUJ=NROOoVmvRBC{{9)4rk@jgS?dB==&p6+;^Li_BhszZ?;xk&qQJBW){UXyBw6mT16>VN4WJL_gsT{+! zg$QZfFLFA2={{xA>$@q26S5+P8{02w4$Ba*n~Zp%#?J{UU3` z$SpV;AuD1?E)i*@md5=mUcNr&jB%GyI!5ajzPQ&ik}(eYeOGJ4_&!{WqEE-2;J5}t zR(R45Yf(HGG2$NBihE&-Aq_D^AZwPHSM+foY{h-BM#zd7+V_ob=|zn0iawQG8uyE= zS#42V6~t9hhPS%+C?{k^40aQ=nkb6rqXi2a+u3zejmAAH?Q77o$hkcpi*fxE)Ah%8 zG)^F={?^@xi*FT;Ldc3-NzO4|IpDyd7j0~3Z_@oDa}{Vmu_#6(WJL_gy%=r9kjDKY zr|Z90j)>7n$ch+}dv(=OT}k79ks0AiwcAL@iWrh}jA+4*T2LDIi_Cbe{lwJfjfAX- zAvwo*E@Dh?Bei;otQ1fCiE)jLLXbo4g-b5gRT{6Palgpaq4pC~zoM>cgsjvaePT?M zf%U|6d;dsdqR#8EV&_(K zQOP+5*B_-Px-?E8vnSi1!;MDB3Qv-Aj88_JKieIzq;bE^!gsg}mxmQ;m)s-~v7n%M2{#=ynuZfTqF(l_0G3Is{tzF}OkvXT( zX?T2XY7|0Nc#>R-(RPjdRlNS(ryHY2kax{RC70?dU4zoNUu5dAKeO!CRgI7pxs{w_ zbXzbH(zst_`a*v$IvOD>Vn|LghP!#gNARB6Dr_ z+ha6BR>Y8;WBANc8uyE=5hK^`XoReYA-P1=5e_TeImscTn#$21;kvW% zmTTk}E96v%y?M!Kgsku+IhW(9xc*+Y@k;Y6SrLQ2(4Sw8M#zd7l5>m)Vz%^(jaT?` zzsRXi_sTIEAuD1?&M~6oy_K*u?iZPBvsAl{gsg}mImd`HbRuWH@k(tVD`GJE^zVbC z5waqN`}2}+?bZlcsXh9{%Tb1x zB4@5~zsU5G{`_h*LRNT^oXRo$ZnVV<-5AoiUu61mKUbp>vLc4$9HVy%^agsg}mITP>2{Oy(abB+5&?(c=ej7G=` zPm*(toudrXL|I(pev!5JK6OG?c#@onHKS&~5H;)?_lv9(fvFR+!jt4otnii3wHNEg zkjDKY>tti}BeNtcW2w6VcusTG2J`7g;AwQzvAF zC&`(JzS~jXmB#%d>x^ycgsg}mITO(qot3*+lr-)aS!a4vCuBto$(e{g)rr2l+`-fdSrJ2WCf1L(poU%Jev!F0^>ji}j7G=` zPm)uN;Vq(1E!vGCjr&Dr^y!ylG(uLykep+1ZE%ga#{D8QiuT)MG(uK*lAL3_8`t>j z-8PrT{UUQW==ZD92w4$Ba*h!_v8BE%jr&FB-c{=DjfAX-AvwqRe2lqQcCSHc+%K}8 znMp)38X+rUNY2D)cV}5CUVaMcmbHi5Ki%?Yt%uhd9^y{Vt_rK_mv35eWZgX;9Xa6L z!_(;ryE}Qs(q3!0ebvx1E&d>+aRPaR{U0AW^rIu=I-eRLD?G7Fm3JmOk*o6}N4rMO zT;qO`**kk;gtuj{_~vl?#vs1ZK*$PD$oaJI>L3n?vaHZ0q;bEPi|XkY}6c*;LcLx@sh3MGSU7b9+!%QBNJ}%Qfy7dF%W1o-lP4 z_0*xhs)VdaXXiHWuuxY~Pw}zM;kIksuj1XYJ#RsD`&EbfsuGj~E5*($daJ9BYuqm~ z?Qz={yjeUoLRNU9*7MFpw_m0Da*g{%rZ4>LJl-ts_N!E1RYF#zBj+8KZoe9$zFgye zk?Hxl9Nm636xU&mkQJV|K5{wiib{ku?iZOWIJd{t2w4$>t2wtvw_mlQU!@k5#{D9{ zGf8h2cl%W<`c;jP6)`l%6h*gRwW41QxyJn}9wSjvj6AYzXR(KuZTb4L*IZ;g-@o{;kh_iPZ~I%lXI|0Y5j_lvyBzn<=vgSv`( zYExhC%dJT7k8no>@#E#jbk6J6l{8KuFaOVHQcV}dW|6CnzB-1#6vGKw5kq5FQ7jb1 zl@Vvbb8-tx<9?CvJ6)p>b*1`pUv5RZ#;$nYCkX!5J$tC_8YdL*#6uXb776R~B3H*p z4Oa=uft6zCE6PgVagF;$rajI*k@0G3gskwSu`AbA)Ki=Ka*g{%rY}tMIOA2fp4$9d zC1gc9avtHj^)$r4u5rJ}^!!{7>MH7Ki2AA$vLan$S5a&j#2(Q@R*0VB8uyFL6`b3{ zuE821D?DlJ%GV&*UtEW&1*LJn$cMhA@v7UeT5%oL2w4$BV^>jd4RZa(bvWc2_p5k} zL`Ct%D|YQH^VI`~zH`-4gKjnM2P=)N_S&N(+g^QmO4ry`6pIEi!_lh@@#nsrK;G#O zkB=O87~|E{2wCAtV^@4zJ!1Uf%A*EXi=4T}{UXy#E*i&pwQ&$*f_Qz|Iw31OA?Fcp z(;&Wk#Ze>w>JrkpU*y+rf4W-^>MH7Kg!*z{Zbf>3gzJ{Pt-6xN3FJ?o^GvGgqF6U# zeC^0p+NT|vYu5=`5kq5FQT#ZFUoCrJ`)^m|7L>;QB7fzZ8m~SZ#QtB6lenla_vKck z_eZz|f*20s!6?0JoKU=HFK4{^VGuV&u0FcFPEZc46gyv0>jm+>C^>(walgp4$H;?> zS5qTog(r<&xvrv~MyM~>xL;)Y!ud-RgSv`(8lk?bgsezM&LbRk74!Calgo1!MQ!Y5HY?KSM2Ra<=S;ZR>aWQm9Igrzqk%l zn@i(aWQ6~8hT1lM0&hp9J6<9-#7ktpUq>kPLyixtrg zHY4NILSyaES1UisQxx|FF&t|_{xpMRuh?gj^M#Wx3TiTU9fVSQTzAuBwkS#3J` zxjEK2cSer>pRMjVk8;1r^pdB)&$kmEj2O2Daa;o-D`Ft$6Ri7#cr^Zwvh^Su_lwNk zIhW(6$ko+B?9xEUiWq7Ak;-8!mQ+{LxL;)EMAURq{4HvChoNOUCwJ@030VL_{US44%I8s6#p>>>LHG(%EhsBu=t-VDZ~uA_`$Xwo<9-!ykwtco zax4v7Ki9ZlWNP~Tr}!Glb!!f{uLJGz086`qju3DyH){ikS)W4nYj?iZP!pUbgP z5KjbgRs$g`VsL%ra{Mkz{^#f+@t4XWjr&DrPL$i@4^g`Z261@dWo%xoE-d zqo;3Jx(nwSk zhsLb+JMi#BIw{7P8!=h5AYbd6m_@p=${iq+jS-IbR#P9W14 zPT%c}i1Dq+)vtp%tbvdfF_7~Jw|)@Y#?1AIE+LKkMdt3D%kf6!>Z2f@Xdq-o42@ky z0r5zz2S4bRTpIU_%$$gtF0FA=T{$5uVrcAYUJt50L=c17QtnsXd3#zvyDzsQU1L}C zdQiPYepQYgKe0!YW7#PAsZqmw+j>w0xxz}Z^A)vM5KG7UX5H=@N28kiMW&`7+)6 zIeMZ9Y1}U|*GDb~xw;~VtGh9rkQFgBcE#^=2Ju|2{nZ^~hWkaPWoI1ZcVAZu;uk^O&_KwF7|3~qBUh)z%vFRm?iZPr zMJ~sxK`a%-F5MVT$ch*myK>3D5i{_`yCs*#{UWnMqNa=DI}zitBUWk8X6r$fTvo); zNEE*z9mKw|lDNs%gS4&tMP@yi`&H9=P=u_Ap^>O4SmW#$>zik7J*ZwHLh=5)>Yh=K zErU2Sa`lw02Srd0tW=JCMQs+uM^W+z;?Fhi7nz#A`uH6p#<(EXjN09!yT;Kt=vH{@ zk8lG)Y#1$g(Q^IO9b<+Q$h7Q#mfbpHtQo{2L2T4O$ch-qd4z*_FWO?`E+LKkMW*NH za*(TCqwoHvfshq3G=M$rU*yfNzPVct);OIY ze$qh5iWoc_m&;*moRlkR+%NK)C)}87IV(MA4v{n0IDt%G$h+sPojD<6 z{ahtvMLKfx`JgoJ7nz=)%R#@oJ=$W+ZVV@6MGUTwT#jzPYH95(jr&FB3eN4p+By1F zi}kbnax2ogHgkKhN{tn2>zQr~O5+6bW_FE$XeB8JA8yxL|zCiZ1g zPn5>}DqcPxWW~bzCe}G=hhBae2cI5#VnFAE8oP?(Wr&zr7TpspX`Dd*%)|!-F{VF4>}<$V)RG2=fgjLvvpT@(zsv6%e&{BM6M1F;)mU}ffJNN=Ytx%iefN` z+oR+cc2_LYxL;&yI-jeZ7ydsVt4ID+CtRIwrS`}p!}uVki87oLv0UQ>GA)~T&spP4 ziZbwTm5>$b$j#@2(zst_dVcfypcAqphQ_X<*d%hZO_G4mSCanjhalgnv`HaRZ_GH+PiG7(GAuD2NjEN`of;b|G*q5n|J|Yw^ zpAWLeVSN+poYc;;Vixv`FF!t@^FfVWd5y#RCe}G=Jt&P6$anw!{(*cx$Xqn$p+n3^ zJ-Ss4(+y} zH0~GqkCSfbj#m>R2J4&g4TP+Sp|LBkidf&oIw!3Sq;bEBm(QbEtKAdCE#1|G6O=>e zgBrVX$q$W^k91co(zst_+9RKV&J)t<)ZQWMJ(a>*f*G&#rL-nZD3` zKB&>st?&fVKOc;B^C0VI*EoU9^^wcL+Bw$EgRGycgse!{*cJDvAf7m4m7({#C6~ti zB69`j_F%tcwdhly>ej9kvLc4YuK3O3AlQ$IeVNqe(zsvbdmsNtw_g#1-IdsvsS&aw zhQ^pYmO#Y5Ol|ZLp?LXxaNby}9UL>VI5p|b$XG#YtYzm`^Td1}WpmM%Yn(u41kdMc zQzK-Br!=cg=W5K5Z;Kqo2~&z8jr&EWm-NpEZwTV}20~WEK+flboa1m-bWE3!#{D8Q z!^!1fH4&$9>D0u1xfSVY{gKMiv>wzsr~E=Qm&oTIQzK+W3|33IJ?4%UJR(*SS9V)a z8uyFL3@7h1Xmxj410gG7^xsz#ad~&9FOB?}2{ zSfp{k$kbatSDP9kE44>HS7SYUQ~aH5t2;FA7n#10ch6Zn-yDCepWT;Rkq*&(J}8Y7 z$n^YN4(jNxXp0lOF`SSUF}MnHIl3k1neCJ-Y1}U|bE4cHQzK+W3|4))J+6yfaW&EQ zu5rJ}%$9P$>Yk(W?0Jol6`ol2^@-|wP@|6s#mm=6(|Qm>V=eozWx{5bE!Q}K%n06m zK1luO1WQ(U(%4l$AC$)ZBGa;BQ!gZOeQ zVrV34UfnVFIf2YvBAT@l1!hLd|q(|S;ZtcanpE53FTYlG@~ zP`yNi%8_@^w~D&jGpMz?YXkXmE0rT(Q9lgg+*k|p=Nc!FX^(uaHZ?+4c+%Ka6e~xJ zQzJ*GM$TO0ev#=5{qw;Kg3xK7e7O~#AezqyrEvn8p5J^v=!C3@p|PuXGTPF~s5I^u znK@BzkM3D&BOxndXzVJA|3)1>7(G4CI(w@-TFU(*Gh532O6$SX8wgnuLnBf1dQkmJ zgyQAvgSEkCF(aGJW@HeWh3R~dGG&5!;%#wy#h?3f0-2d?K3AI>AuBv-?8@tpl_EzQ zM$TO0evxU}=JP@Maw|MR^v?$`jG3#>2c>ZWne|652Xz(oG(vs3FSjDSKf+P+>te-n zcek#jaRQkYQa=CS)Nj7@@b=oyxT3gH0~Ffm0oTSy9QIqosbnVG$cpln%09NWJL^(ME&((T!+2&phh1NDo4IP{7cZhi+Jy|r;iLAH)nb`SZ`61 zzWd83k1TVH2C-i>g)CpNZPrv_34PUf&4YCt@C$b(xz93|UOm5HF@oNp` z_{JYE9XWpMl~c*}o;buAH(xmlAq`ee=ne3CuAGn+^sHa{-6$oO1}i80-SGZ5;@uar ztdNP_+=5$NaL&l{udSX+&RfQO0~z9XGhCR`>*bIJD<|}wfTy2932Cr$g7>-W zUz>Jc$g)CK+tg!Fj^}2WwO4Z9)rO!(NUsypV5K**k^P5V{`gg!c^p9>D0mL>l}$;cxesOYVfMplMmgn0l_H!O97}!#{OGR?uqMIw1{K zPWapX<#IS7D`>TUJ%*1sj92=q%IKqyH28Ib7Oa229V;hfMLNBQajc#zX|QsF9@Bh9 zIUy@(jTrS9(qQETJ-`0lbN7WTD`br;DMp9?@;~lgdRGEj?`9xxa6`O*e%-;j4!e$et^C!fx~!PVhuh-r4RF!?4v{ z$x7*Yzr7m6>q_;b9OfP2DnU-rVC4kz!M{DMp?0eTR?y@ypI}wXA&p{)pst?%g8i~J z1y3b+LRQeo`2?$44sSKRQ3X+J!Cnk$uyUgRW>__b6S7i_=DLDVX`LWmb9*=;E0w&t zuDpJnphimV(JQ$VvQmuZ+O0lq#;h2EUUJYX`^S@jO?9>3Tt_7<%7hgJIm~nFDj^M4 zPLRVq)2|ZJR0+yA+m*XEC{M=dn4ZCs-X`r3JQ$BI;62q`q zIUy_Ms<|AVcPHp?rMl|Ha6(p!Q7So^O1Yv9bSI;2bT`nxA9nSUi=a#z6Ukxo=p&74 zK?FH0jU~fG!%CVeLHU};D<@>7l8-+6s2nOS1U1q;?n;A|6VzLC$(@jua@AZ8&$|=! z=~7)$RjIC=kdW5mO5 z^q%Mho=P*aUJUsnC$dtmn#nb>beK?H=8-9oD^lLspI2 z_aj{^WJ+Epq;UdS>6!S%VrzC5I&-0p`*JJNwL-2F(l~*v^h_+X*yHVo&)+)5kjAZu zp*3}#kj4pQrDr1lcR0n6#;u6K9tV4XbwU~^kd>Z^*%y0!=&5cwq;V@^Xh*M3NaF;u z(lfEZVr#ah@3x0DZbc0CoV33i?_n7sjT6X9&oQE3wbZYqaVuhIPqt1-;{>wOGx21^ z*z?gXhuoK2sT|s^Eea>d6&fcLuTLx*CI8@zg<9^*tw^U1wGS8XrWzrQ6Ua)><#_!I zj}N_g{?;jmG;T!<`hs>+AV zL*rwekj4pQr6*!I?jh;dNoV`yxDi%G%(f+KW~uZXLj+^EG);td?&58|qG(OJ`ui=n zLS{{+T|7M13B^EDB}C_3MU0MONCUy@SLIN8nIMKVRYG*HyY9@#wO%tIt zPO2-)(Qzwea>y!0p6Y~as)XoNj^S>5q!`jbs5Mn1S{3zLu;ZF4Av(uUFOd~9NXeQl zL1<Al)bBOEcL5$yzWCYFqHbh`aY zej#GKO)G49suQlM5~6bqAFrf=7_=Q7rI!g}NK++5_e$RDSJH^kc%}3*K@4e{i2CT` zR>5o?; zTvH`P6Qh6b9R7PVFJ$I(tZR@t8GY{kCGyT)8mnNdgsensW?7D*IW<V+^)Cn}Kk+Fi{l>L9tl@nT7)?;{G$%+`N zkvic$gWCPS<;n?KQ+ojAUgEiumFlWTq9vN1e<4D$ss`(1JFUOFkiO{UC9K#7@ji^48DaVjT z<#0mxk8%vgKD7t3YByT3d@9px4{3-|C7RpA31qbgBV2QPNJES&(cB*7L?bn_+5=kS zZn>_cQ8}DwZVxArRlB8;n%>^4D``{?C+h9-mpi{XWtka28kqN#X9keZX#acQy1idc z@)xF`X7J5h-l*)>V)fc4GY+nO{3l|>`R0@{OU*EN^K{cDdFQLf4$iUYC;I0&DOXrY zQzeLT@g7B=h@x=+C=;?Go!p)>+YAka=l$>>zCCc%SKj`Za;Sv(bprXugZ|r4@+yH9 zv~o!9`@P*YiXnpB{^^Xd4dsw82w5SIUh-2Pn{#lHNB)y?^2E1hNv#Hf++4ff=3XY+ z=?g!7vZ3VC;MWP-|JF-h`WQl1(Da_GkNZah;pLcj%$$SgUH*EhO!eCJ(mL_=qh=r6 zu=9LB#xShvgkFs-D`e%c9z&Wc@zT9B4<546)BPBrDTWiWg07W(ScG3u5IrfcX|PRNQ}jowS7QOWU(OilmofN2_HI3X(twJhZ*is@oSe_zaA zmz{Cx()ghqk}gkmLK^&vKvsGph9gExG5m^>?6K>F`xW8wa;~CH(wrAxeoaVLx~@T} zGJyuaA|&^TZaG@YFV~uKf~*)CsZ;Gz@qD}~t`qK8gy%35 z>c99>OJOBh>HTt43D1@4P4S9iVEkO2G1vXNedoB9J9D+xm=aM3_nQ96fdy|~bIPLQ zJ{&lE>8A%szj$cu;Cd4tkE`~c;nmvj|L2MJ=b!sgBBXHwdFu&d2X8zO;;~m(Z=dy- znc6?Ub@v(}D`HS1^DpyQ5U;QKkM`0}Ts$)0Vn0cQH0~Gq$~|Ws{OBl%ZyYzFz3ss( z4*v0;J!^!li1F)vW*pppJ%|PNTdiFjaM;l87wnt}Y1}XJ`NOje{$V@D-PwbfCWt>b z5V9i1KaQSd@QklO{CL|5?H7JGQ)kBY*H1B2yQxNJ{czxt|2$Qy>7rOFVx0Ed6+4f8 zV~GyYOKs34pnvlA+XM68`eMX*G>B7zxUYeb6`rnG>Yafb{|T|cO%vL?@4abfsV9mQ zLmKys{Qdpk9$4rg?ok)+b6WfE$y;{r|M`_|_vKckPyWdp1B?Fptsuruzj}MUvv=s6 zz3Sy{w?ckru{Q>`JNd0t@;8$_$ z=4sVZC1j=a&(HNy5Vu8)zekMQH@|VvHSSmO9$N_F2m7zqzG;o^J0~4@?NF7V99WS~ z9p1L>v@y0{{??i81Aekq=k%8@N`y4-7n#~U;nNV-9xc}((}E}MF>T7NJQc;`(dK7G zo8S43C0ZWc3FM2T$E^2*86(D5qa23^@uvntR(PVn-MbpZKenIHz99PUZ0oO|Vo2kD zk?GUVY|89)<~!bOA8^H=+Qoru)d*P;gKPe_Q)dd|wT;$j|NhUnwohGan?y+Cep9>{ zefGW{;>QQ9*4}TI8%GXUYR?+MNQ4zJxaJp`>ytrjabwZ>;t6k!EV;z@5+RNIMP`gS zc~yuBCr)UOJ95RrGw#_lwTCoVF-pAp)lXJpjQQni?N@$z*w6(R>|Bc>0-BNG@3&A_ z??!vP9K?kUgsdnBX^;3GE-A@XFAS#(h7Xv5PL5>p*<8O zAAbJ96oV3?algpaRUWC&eDc5TCx1WCdheDOYJ{waLCcQ2_SuMW&4p{UAHII=)=GnO zbzI|qk!j7Z91gL5j6M^#owxPQzH8P9S>Z|d#P|)KZ{FLU?<=2bE&SVYiIB$qBGW6G zeZ=)~*@X75kAG$8#&O@T5we2l-)nC=Z061_8*R{9fAs}Zo2#X^eRAz7=g%|O;9IXw zQ|TpF2Jz>Y$F-JR>&Zl@|2ToX^|o^iuDL3`ebXS`4r1R1LRPB7d_~O{#DCw2)9{;@ zY`Mn$B7gQfvkX4A5!d;KLA)BoDGh|IRJ(a(_)-uzueANpwRf$XVrXP=zsT$UJf4QT zkx`Uf{XU3W8VFetLt|ym)fI1?IWqI?8>bl3xL@Qoe>8S*!&QiJLc~}jh^J?(6S5+P z#{8nVK8VY2YPat>yp>`|<9?BE{Pl+etAD^=#&SV?_U3l`(?`?^SrJ3`uA*2Wh;M!V zvz@~hpFPEp#{D9%ecL+&FMOT5b32G4h|L=aSrMaucm8t_KRqU=UmWXXDb`2aWrceDtl%$Uct1N-^>rj$CaS zxjOfh)6-a@xtjY$rWPiy#ypXd?;OO{4TP*zS9vZP)m?|TQVeO_FEYLI?62~B!q*0IPY`!B5V9f$Jv6Uz zjt}C+f1Nq<%xoK{7}B_3WUj8+S7lZ7k03r5*T+>2gsh0cm6q2y=LYf9xN3L2Yuyw> z8uyFLC~@S>jH1^Bv2hSTZXjeu42{R}%RoWg9;45uH!qoDNaKEy8SSoL=DCRReh`-i z(P|)MMU4I(=cORdi&1p0wVq7Wu2l3ekLRQ4keI@3*L7Wgo(QwBRp?KVVg1BMB&M~{r z(pvnedj~!Gyz72*$}OkNIe6#DG$~#8tD=}Sh^4N7YiQepP8o7vP9Wbuc83>=*TWVZYVR;p%Qfy7x&4zF2Nzt9`^OzY>=VSD4TP-lr2AD-oJ+2D+h}Cn zb!SU4q;bE<2OTta@aJvrwSNranO!#;nY)3I6)|+b%EZg@Rk?@nEm90=+%NK^HU2wr z`7zw1?vEJv1o6iPLRQ4k{VJDy_iOKKKlA*}sXe4|zsQ$f_U^!hf3X+-+lX;n5c9oI zCuBto-LHz`vLFs#Zu-u@-uzaIA&vV*{&11E2Cln_dla>MY7o=BRVQRc4Bf9{+zn!j z7iUZNDA%}O$;ZCUJ?i5KtmG-*)ozFwyGO46@aDJLu5rJ})WY@ma*v|qhXnC_10gFs z>3)@Kw;i?ng%@s4F{E+7$h77QC;u~IoD(tb31X;$kQFg>zbc9|gIFZKWIo4zMaMPn z7nxr9;}zLkx-E$RM!$OC-Z~*GJn4Q_6n_ZfoL_7-GT*whr5Mtx8U`q5D-)d?H4l7Y3`T~Z#&zClAY?@h-LG=V zUy9LZ;#JS2_K?Q?A~V{}_8j*pM!4OA7~4R|iWs_I6~(+!jb6JNI9<^w2!_*9ln>L-(tqm@$Z_Z+~m>ggF-;a*g{%)|pN`l^Mi2 zL42oykQJVEzskhB8~k8!_3x~jVo2kDk#*`+6dy&&_uB9WgJ0aNPRNQFx?e?`N3Q01 z>7*&M46L1ENaKEyb@E#jZ%2&#UOs6`F<2*LMGW1qV)s0Vk=d^u`OMwpQVeO_FLM86 zblS+(o3ma!^2fXCgsh06`&CguOqzF|_S5&ym|{rdevx$&TNGo0csz&?8VFetL-(s3 zZ|dt9;eYJlnM+?YqXM7}B_3WSx2E>tmB3milX*kQFg>zsk9K{>77~ z{B``=DTXxe7rB2X%oTNC5HkpgCVzX6K3~AgiGNVL3siyBf6C=Z` z->DO_B8Ki)xvswW=eGuLo^#<8LmKys%xITS+~1F0vces24X!;`osbnVbiXQ!4}(}Q z#@%=B|9k3J(zst_o$$vxDu@$vHOJj9Y=)XmCnzHxoUOF%Bj9iLpkR}=Db#C!u{s}TvH|b zC!^hS)Lsnv62ZBuJn8hc9z$003&D9pe)eNv_9q8sTxPe{Cw4oq9cK@{{b*$E*0Rf~ z-Ql>-V~=8iSC((ZUk5AS3)SAM)6`Hg{N#D-wU$_5-bA=x5yVh>CcgL2ty@oj{;`xR zY22!uE0`A+8yuW_(thcjQ|Gl<>0FguDLwXgx4LLx+Ifx~dTQxiQ?8_O0=d7xJ9NsA z1}+*taOnM&cdHSy@*2tIC{}!9XuiXLT&pV)#84e(V&;86*Lry82{l4i5URIC6zA?f zOZ&(p_9>OzOADb>@_1wU3o{J(|n-{EBX97wNA*&Yb3|`cHGrwU-+>U!|O@}F_fN(*W%7O&jRz-YFAbesyB%K z41nlYes7w=3s-m~jUTiA_3eROKljfh)ARFrt^bR!$&q{806&V)rEiD`Z{4^%&Ar3Ci^RpR3OyyDwx}A&2ko^---|X{rRZ{;k%` z={hgBhZC}b*411uhcs9@aY8(=z4o%RG{kU1R?xau>M^9j%8B#$n0;{j?br*imfQ(h zL918R32Cr$;>k1)l`&ZQ%PRL5-C|w@}D_n!@ z1o3V@ho{@RF@}+c@3L8YhsIo{6K5zP7#E_kWgRNaI$-(Dhg+q;UdS z>6!TOk#`1{T6o_SLmIathQ^gTA&nErO3%c_JI>Mi^c5SV7}B^EF*Ksq32B@_R(d8@ zxNM8o`meu|+FTm9B8J~T;za-ZntYRG-L z73q|ZJ9Vk#iIBz#WTj`~nrM&Nuh^jFzTAp*+KHJ#osh-}WTj`K+pkg#Y21n!^f!$q zv0IdTVj`q*0$J%f#wBrmw7&nd8X+rUaNTH3ED9&2algn)&oOq0>wL>wmPj$AaVuhI z46YN>IDxG6O#CLst8dQsi`0VBxD_!p64eQ5oIqAOM1Pinuj}6YaNzXQJ~N2?vrmm3 zbeTI|oj7*E=?A{B_Si(cxYp7GXRSMHlKuK9$55LS!`oxG_CkaC*V3xFlBPF z2150QEKhYpnkq4RT{$5u#b~Z8w<1@}UZzeE17FIO2+CKVU%4-2Ss~M!&AF1MO3*f? zdEzj&=Dv_+g{g8lH`7X*01 zVi*>`@`Wrbr8kcZ8fCEZ(P#A9m8MG2HeWtw{)W18LRQ@zrj{l5<+}2ACRfxbggn&= zX_PAw>eEvvWCgA3rcOwMl@qG=1$ZjhLK!@9M}2e@80vy0J1#w2!viwB)?UHYjfa?SNm(6MnYE5A+OX-(B{n5 zJSWKXY0dh|{YsiDF?tLqWThDO{Swz8JHhx!y;0zLuJ8pRD`fgusXcmi6+JPH$XL+^ z^d)4{nQ_!(NK++hEjSG8zC@@s<8C)niqRvaX(CE@&K?nW=MmkVe>Ug5BeWVc>CL@e z8myey=cjXyXx?6~U2>%uJ1;xk2zO+~DCLTRr;>ZFoY?5SnMX?Z+8!Yde#r^DT>pCv zCn!^Mzw%tk%4>nlq>>LKDJQx<$RTSEW*9mGttBG>$dV9!<7`1*yrfMUD6YU$` zpQ6=7Ifi`US60YtZ1ArsrG1}X3~8|1_PAH3@Xp}>o+~HtRNo_WU&@JQmg;Y0rd$qb zssv>!%|(Y{v2sFIq^nnASB}9F*N$}?r1`O^u1PU~{gd zA%+v&cNr^tF@}+_aza*0|M*_w1TtfAF9t#{2EOnsE9HXibf9s_8l*4St=V z$25TKyTPC`D zmK~xyA(?dD8R~>I?iX3Z^?p}DRD{0({7=G2pJ8OCOJQ313fvof#W5qaWSjWyLxVGJj7#cC^gfvbd zD?Jl2$10soFao%hV(6-cDidg&klZJ_<>;MFIDxFX(sdrc7Mn}nJDWh`evzrGK2bfJ z5FsmK&`z3V^x7ls&`aZfk(Hk7%1;`kaVuib6LlY~pG}}~0=Z0dqPLH?vk4KhB8JaP z;?qe+NaKEym7dE{J)7X3>Q=WYO*BYlNoRG!|WTodAeqJk$TM>gh zgZA6w3o+5=I^mVZ31p?`7(OOS<5tArj-x$*Uf)gQl{8KuD?P{X^IB=#iWu4ts1wpS zfvogQ`01-OZbb~{587uapVvy`1hUd|3?Jd7aVy2pJ{(kkOoTw=gycTq=e1QrJ4KXF z`#!yLq%lz%_lvCbTn---rEx2@dGmQKEr`YmWTodAJ|;@zR>YvcX@{lPuhO_HjT6X9 z&oTV;RT{S<2G@;tSjy+M(l~*v^c=%SIBDF97+n9_lPQmh(l~*v^c=&_Yo&23VrcBD z6Vf<=tn^IyGc0H{Pn4{3^k;oekSjFuD_ZHLx=JI1G|H7`;nbn#)V;b&gfvbdD?P{X zS)Vj+MLFmTnp2nOiPAWMtn?hCIwoqKC@W&nr?uMd_1)f>h{pXQmkFQsN#j<;;M!zv zmviNWG)^EZJrh1pl*X-y!5E{}U2lHXc8wFrWuiL5X`U!6dFs#ls)S~JA{3)f_^b~r zCy-TF{aK$Alw7kurwO za}1yLN#j<;;JVR%NqL?qjT6X9&oQcFqUMRRA_mug^E^=+_lvCb9K+{{(zq2dGh~)Z1=div-}aU3q+#AEnsb#4 zezjVB>wb}R_R=Sa;Tk6-=UoHE7>&S6p2%TQ+#5NXbGmVz6W^b2dDpmKy> z=z;hxtV#^>D~%H#yPT^kp&WM8;|b|eVkC|Gt(SvdNIQ0GvG?p4IkeUsEY)s_u)69! zg$Dh<5mxxld5Pu5m(g zX-w?3xqP{mJmr#i$HdkN@6UIQYn)JS^XT(tcTD78tmxt7R|K+%Jc?r3x$VlYz7_v= zHR(RlCDQ$a*o<~R`_ut(|LDdThH#A&9=k^rO@wmT^%S*Bj5osfljA2{`F1}>(zxGp zIcSI1x7w%k_M|z|tS__!dd^BR^c>x%(6BEPt`UKarx(R}k8RtTaMgV&hHE4fLr*AZ8^;;98)BbgX_h6%b%xJCpvo*uh6+sxG2V)IQ?4A)2|hMo$9 zE)%X1fsLmZ#rW2-?M=@8MT+4X$;99(8$CN%CR`(e7@p4m=YPW~hHE5uWAvU+%=Sj~ zG$ODFxtE@DHKcO5Msl~V(vyeTf0VpOMBaNE5mAa~Izj)Mt4qzBRu0eK!b589om1D>kgshNxe>i4<{U;y@kzz30Wz2>G~jhz4wICVC96L*QUA}ZX#p_O&zxG`E~yq1V}NYQ8{$l>*vnp7*5Cv zn!XTg^@bSIVC95P#>q=Lh7+=a4#QE(Aq`eeXjH1la6(ql8e@6{LaHlvgqzOQqQ8xl z-VGlXAq{@nv*t_?nO$z3D3*J>6S9Jc{x*_-W2D-5rE$NKb(UI=Q6;c~Ahy1$QYNHv zzsQuS`P&Ij$OAW`OYPgAz6?EuFn!lYOjmm*vWa>@l&gB?R z$O?kKF#j_AQd70Aq;bE<^edg8mt!~~D+u~@b2+4OzsMSudbt`#a$jzRtTCoXAoNB! z&d;#&Gd76QJ!)8lG*v?9c-WQul@qdpW>gyW&Y3h=If1N`(Q*v=5}_Fxu}7UVBu$l| z7Mka9@&zF)WZG%exlhtm30kmu4kup_vO=c!j5>!)nkqpb(}{bzuH@_gH+ClQn~mlF zKlaHsG?tbhm9(IKwzST7zGa(I>ThXRp`VcUg_3GQ3x$fJ5Lr_RX{_@+4?+mV*o7!* z?3qFK|MkA_`*WVpdCqwTuh;lquXA0W>vONyea?NI`#B(Fg&Z9>rXJFaBA6?BbD+uL z2w8z<{&)9>G*~%;Ij=V$njDUh6=zEt+eIqUr#P)UfFLa_Zy=@xq_4t@V$OYpYtrE z2)By8{Bz`~iEzy*B1U>}lLc6L%h#WwQaJ)yR#D1xhPmy`l1ID{5#>^zlae6oI`zx; z8o#cgR6$k zF)~+O2+*=(Cz7_JgsM4zXQg_`3XZ602geXID`nirA%vEF?hi_WhD@bo>LEU^HxaJs zLJV7%oK*Zv^${`X2Zw8#h}4^@ zw5i^+XeXpm1b#I?njAummTD9+99M~{^oOj(Cytl}i7(qaLK;UP>w5gwYmOz8iY3wn z7f~(c(m_NdN}2KOJ?41_VrWJEtS*FGsTDFuSveDj zYaF4r${BaHR*c4|N3-lvj~*p)^w1uJYYN&CNd}SoLf9y4FaL6N{GNZ@y(BcyQzvSw7XRIqEk+hCLBd;C&2e3Vw#n+Vr9BJO5- z{Ej&2Cc@c4t0eBJiSYKpui9;VTe-#&lrZjv^OJBI>6DNE9N|{pBF$2{#u006H+8t< z)#6Yqx|O$Elfzq)Ryb?*{9X0&ZRMI#M0bBU0$EnxPt8)f#t~OPzp6*fc!XO$x3TL8 zxa(b%vFZk5D&fVm2 zjU(Vw|BpwwRgBQOeocgH96|k5!X|=}sOHp3EgF%u&crnlu5pC7^mv3@k;mirotURh zglin(ZP-M34P)Nb{p>B$M7YKgF@uM{#oFj|N4OQ&6_48-(l`P>we)y|TlolWB7D4h zZ~DAxBFHr#6TezUyOR^vZ+DGvUDr5*Y;XNLUX8YLgj;#fHcLf6``RZtvhVd9LQRBg z$kFTVCim1txW*CQBI6Nmg(t0WZG<$A@D>@5a4TeaY9f3N(xQ6P1%zgE6X6<1c)or- z!ma!*f+iv~_1i6hsNb0xKN20`R?%+tJ1i}Z`V9zLS8uv_{hA2ZID-DyJ1pZ7ZsjFx zB3$E$kk9Gn7(vul<7@6M8a-IQ_2iz$m&y^`CF_l?@d&qqL-VnXkj4@4b;ox1*voV!ZnVFdW?Dg@V3HA{fwvQ)K;|>r43Yf57rv@ODl}+^BUn+w0d``Toa?R zuE%pLl_O&0!`(eU>QcFt_fxY!T;mA%#?JG4{J52mw=C0bXb()+)OaE&AA|L#&b z!mWJtv^m0e8V!z!7(C17+V|DSpXoa<({4X2iZ2Rfw#rM@7wePD5AuHM~vViqlVb!e9#g~De+;8}OHMNxx za5NF4-&YetRv^@F)Vr!~kMFDPZ{Js=RFp)u1;IC;_P_SfsK=|~YfyW{*Py;=-&aH9 z2;^`)tVgwEd~s@b`@WhGvVuc${Eh!^jjwavZQoa;9_}}lD!#Aw_%D7U8OMXNP#g{(Sdj`D@P^sTM9lHQ@kitnp!f9-my zRJvYO`%imd`t#!ZYWvyu)p+y75y;DcD-hJ2cFTzJHNi&BH4;@qX4DJb{N_Nc95d>( zF{8d@-&aH92xR7?-jk_kZQ_tGx1v-{#C>Z`OiZ)ytKn-DLA3k(I=oMPQ+!|Tg!sPN zgneHPjU$kWEBOtf18&)B`VZs#YD?Sq)r620r6P8HedpH)hph(n7r@jX#HelmuvX#| zI=60#aP`;H)S^Pb(L|Ie+Cs>xSt?lgTH5vYeKl4utk|j73MV<23dGH?o?d@nO*2YX zp!p8kUYD*KHGjeI%cL!YtY}@ zZSAt2M+8Xw>Xal#dwRPO#Bo2HKj(;VJ`nY|E!OijV?Cc%*7IOZZ~S5Pn^!zGXTAOZ zm3mO#CZH@fBRB7A_c~~kiBi~C+?>b_&;|)vnKKbrjG>*$V zkR9JkZ6QFf`KPLP#Cm^^ns^1nhgM(zst_U5~%9wf&;_Uh0+Q zd#Td66|!17Ax6KKno31UA{x{s{P3#F^xi#_Z*7f!FI5^xAje!8)}!&gR7c2)Qc2FG zx-{1F|CaS!8utt0)GMd;YX+a?ECS()Td%Se_vV8W2UAY9aj5oymF5(g*rOd$x;46$oTqZy?foE{$6WJ^Wtkq0xgc z+&O7#u3QW{3l-}CwyvrFZIk=&*PsWbv~4`_fn;Ct7fUd`1ew^ zPGIFLoaD^m-%FLo5y*IY?~50W)_v`Yw@+U*R?ZE|_fj1pD_U1Ak~!WKtJ-JE_fn;C zzsS0t5&peYY1|4~?N(Jcm-YNrww~+m1+<lyKmsQEg!o~tCX0zE7hn33o6*cZvq=Zs2wK2O&>pU+zeI2gNQ zpU-QAth_~XJ^cARuB3N?-7m7PXT<1wuGWIQc)73fm(rx(fxcbjU$kW zU2ta(e?E7FtSFV_jOfK`Q0<(*e=d#t1;NUYpU?ZTp7U(ZGrDUWflNGREL7F#^SOMv z6`qLm`T6`;v2s2gE9bVhp6f20c&_L3AqO?NHdceb+j_2%C84<5ta5*V8NFW5#X+xOrQRGqh#UT#s@`)@of@ zfly0lgg>9F9vX=%A+wzx-4eIq={XvY<^SRKu9wovhgf#dS0$JBH!k^EjajRyj!1(jI z)(NawceTPv&K&-HE{!9Q@syv>uNyuIr*Y*7S<$+zSHrPeR<(qX#{DAedM=eepG)Ib z$ZEIv<-mAL_Ji;I^6|Xm4qiL-_wO}0CQ6ZVAyIofX~8?;{fkdM9YoQP)l2Wt27b!yh*nW)EIrPie+bykL& zN0g&3spk3IM7)1I$*B~6D@+=zd1)&@`62}VDOF?;la=^rE6F(@{cH%Vn}rFYCAmt5!(bus}-sW1m(<#p$0zC zycL8DBEKO7V(DXE^NKEntlFhgf4ENJ+O{mJie((r7AV|(;RSsIO!!XJ+}16L~g4gg7HSX z4MzzG>e56Et#o~eIOw2FewFLdJS!37s=S|e;IYVget26|)lh?9A=(^=|MzdN%q43g zq9qE)tfP^K99Yj>^`zs=%qeeRPDv#R%ZQ1&v^ipwc|LhboCA?2&(1Wvl3z;2nTE_E zgxYGT86uk8&xWvA!l;i(RALFgJNP=WXHDkF2(JgFxo7h|CjYh1zB5id<*v8zPKn-c zj@)*7@0IJ4vCq+(b!1fIRpkQE$~8yx*nja$JN_eJH2rIf0Lkd^8&MEo;qzG$q4qZ%P73GJqL zQsbF$3_@0TlAP;NdN6Ug#%20n@9bCAIE1X=keoPXm64b@T;nq1cvz2d2wA})Ideoi zO;Y<&jaxAvhpjsfAuBvd&KxB&q#ksQ%N{Z6Skgks3J%G+KgLBLw}MY6EozP#_=?e& z@=^GTQPRVT>yk4^%&1AtLD#q({om7>hBOB|5we0qa^{FpGDES%H7-a0*JpFmxavg6 z3J%GcBSuMIG0`(r#vx<{hvdw`UA|(wYg~^0NG-i^gsk9@oDm+cT;p=|e| zAI7V32wA})IrYb^GIkZOYF}=}I3AX2970xbNX{J5PLtGrRO436$6@P^L&yqGk~4?L zE7!Q}5u=VJX_RzX!O@9mMIX1q(=cA$9d{V_+5J`2IIWN|O5*-{+H^Q1r+QQ+QcsR* z+$#FNev3IqKwb@62wCAta^{Fp(zw6UJBe-;{a?T3-M+sPLRN4{&KzasOr>&-%h4KE zk8ucD!67+wF#o9isK%|LKT=CC93d+_NzRDq!GU_vH7-a0+uKy*5VC?pa^~>p;~JOY z)7!swOiW|9%S!baB1&5gMm6r2cGLU2?fWbFk`mDK+GyLDj{6sGV@U_QqRE_LRN4{&h_wk#~nanZ-E@T9kj;~gxES23>A?kVMsQPNYqlAP+nT{y9Q5_Z?P9CfJQ zdrsr36Co=+NzNQ)#Yr5laXEUne#^goe`WD1S;5gnjNUEj#DH5x|64uAA!G%IZr zhVd#2mUbY)M{U#o-p1SS#J+gF52x#yBmY1DdXj5`qdtY}*M+JPWtTkh)iNc_yPU=U zK)CSL%e#O>MA@?}=vCgb(qPRqj_KdA(OXkCJdo*K`PI&U`L0(-Ldc5jQjE7) z4LH+q(mVd%KmFE|diTF#r-YEk{UV>b=ah-}Ja|YTHvQ4e{`LF6Y2w1G_iQ0#1&7X1 zRMl$V+_XP$@BL<6e!}MyLK^preEh8CCU*MR(ZMk_5cdS)iVlRV;LwSPs@i^+nf<^0 ze(AvqTWys%)Vf&l?m2HHz@e6|s_kCm2{xO00M+ZVy zcsgaBN2YJ|&dZ`65BF#Gx7_RfgCE^iB@SuaFLGo7%L#?we*I_ttIqxS;L0zY+IL@W z#r1P{ig(Z7`k&yqe96uFn;x~>;D}9r*LN#qy_?@e{Ndrv``0bI=isdE&hEL!5y(8J z#kh|31yR#=;<9@}L-=Uuyqy6H|KRNjM zzO!eHBJ`#`*J;CzpLuC;JiOq@{?~T;zro)3{3;=&algp4ZsZXH@qxk2{_CSZes^0n z=^A961!!{ISo-{?jn|rVjU$kCz9GIT5aa5|7$rA$AY_FnM&jJf#{D8Qrg>ALs{V1={QfUaxun13zVB!uWCaIvev`qQ0&(g8+q{3;Wq<5n`;MIx zLK^p*`05i1w?@t1@ujnSbJp3jh0xgpIGFQi{Pr!uvHw}sVDp0)^iEpq!wDgc`$Z#TN>pZ+s z)Z>wpXZBY(_`Vs3Z}gFbkjDKY$6F+&KW@J9g8pZIz5L`p_e^ggWCh2ezgcl&i;u1q z9BX`Yv;OgWt~UAR(>F;7Y1}XJ@IC!2qd&Gk;=PkE*kth*LRN5mdbgD(K6p6i4R+mY z&B4n)u=?aBhuoFshcxaNIo_Em=M7%I!OZ^jukASb@qgbi!!^h{q0r>`?_Qhsr#`y- zp_W2>$@U9Fo(;wgc+=-!PcC*E;;LTDs90{IiWtT-`q*H_2by*Lo(1Y)fYgsjwt zc}D$_Qaw~nZg>9Lldf^U$g6)~xrrlAA&Nd8h|>e{<_?6c)Vet`{5KHmz4?4qEBX5u zb4T`U2&}}B@8RwUj{l2N{o>G{r&yx9JNJuBE3AImpM&GNKzuR~Cv+fWrMAlVq97i7 z>FR?mU$w%(HSQOg-rV??iZO+ z`Iqk;9*FsYm>r1YIuNpggAtmaacJF3@@P*S(zst_X4k614<(3H{jr&C=O6+|%?^9nJh!+InJsk*H!J&8@r|1H4W<;MY&tE%nNaKEy ziFU8q$@1 zR@Fs;I6qc{)i+x$A*6A?$gf>e>-jSKFFW{gAYRddkQE$SSE_2+KpY&1s$<0wLVT<~ zRkh?<+YAodeYwdE512dQ?5l41t~nPRI&I=Z+pLmiu-2=pdh*O|2Jbv`!HmPcedrAL z!4#_)7;uR&Z#&intqy9q*o+)+pDwU&%i@@S&LJ&xXKCp7N?jJ-!#E`uF_z z^j+hAk!gi>m%1`IP7lPaKwRH}kQJV^Ud211fjBW*cZGT9Ck|=cFEYLP=(N*$@XRn>0;u}X}RC+AiJ*SKF~M&)%!@+%(n$1;Jqrvo7?JZZhk^>}@Z_I0$@XRn@8y zMVF2!y4$x8O&rp=Uu2^8QpesF97NHr1F>HRLRN5Sy~?Y>PhvIr`~h=&u5rJ}FZ#wx z=!Et3EW_2KBg(s~(v7Q&ipF36@A;ib(Q&o@6+jFq~@iS-KK6B*>XXjV(R$X-3 z#BRH-JiUo{A`qYb-D_s7c>T2rp_R-L$ZtGgg^A_2ctvnL6Nrrh@%!uA2wB0Q^(rIg zUbbLj&6U=e;Trdge9zovCr;dt{i`MJ-gEH2K+K-jM#u_JTCXD85{MFV6o}bKFZu%C9LmKys{Q1)so7nB% z4TGZ!#D;-btpgz|IJ90>75#DX)Y-j{|7D}ZA&vV*UU$kf)4%icb%JB@;F!Ps?B1WQ zY$Id^ht{i%IB(Te`nS%Vk~pMszsN`Q|2zF1e_5^c$C-h+p#vc+IJ92H{D@NRwc|wp zOLKml#+5Yg7kU4WJv{yJomr!vj+!s`@rnL99SB*$q4g>wR(R1n`_ayoYuvBoefOLn z^Bj(aA+VCCys9xuo``zfJm<$f*SKF~T4Al<{53cjyZZ*>104ui;YsUNM$C!Uy=v~1 zzH8hsGQD~7O0$E5k@&AbEOt#BAuBv-y~>DfVq86OLP+C& zk%Q<9?Be+W+{%?ZH88KQs`pxW0{$6&zZxs_MUi*fdsy zIWt#I9MZU76R@SH|19AUxGiUs!10gFowED#AToB*uSaF09AFEGQO^>YQqLH<{ zyksq7M=<>&2+wC{mulZ9rJICTpf9wCmy@4|FV*`l*SRrzgT{m-r4)| zYb3Ws*76sTwfsWKS~@~j>_A3#ApMp}eCPM=fA7EMwv&1TFY?E(t$G*j%CEz$ z5Qs$raajjKR&a3EGXI{;^FBGVKPNIj%a*LAS{EzM*Ydk4aHyrL>J#7EwEykMF8#UW zAf<5xGAC#AFP?0>@235)2I7|;2wB1Lnzv5to&8UKBW31Au@@d$vZYJbQX2P*%vsy~ zRm3T?e%9Y5vX*z0tfeDl1;?vizH)EPV-^I*28(Uh|4L*n_b*vXS>cy+yZi!46YtfhQ80y%OB<*nkSBWro2Wi1^cD{;JRrDvj47YD}^!EtBFT7p31e#OTx ztW?$aVu${!$XYJ??VPoA1ogm5t$Xn<{Nl++9zC-E^2l1gv}7%5D>UvGnHI^vcw+sL zvSiX=MGx{zDou`UqR+n+eSSj8K{|&Jpc!NQic3}Pw$G;hy#w*94uq`WV7$%U6vX#F zHM9TK7`xL-)>0bxi_DnL-%DNg&-45HMAot@SxZOA3J&J{#fR~$Di3VCdH=%5S{_!i zmeROiWFkiX9hM!U9^Z_tNr6Xho$GX?fpL6+C zepTg(udO-QE3%eTev-46(zst_PEP0fvDZd3`w#B9YiKpfkFkQE%)&l^Sjvg9D8ala~I{#~^bWBqs_IDXoJ zpj23?9w-0wfrviqy>4dzd6Bgol&mH7K;wRqX^|YMkBqG4?UA*7ykspMAuBlOr;TR+ zD>(iTS<9OuYx(AqwUoyFBGa4v@>^AH6ZP0SvX=LitfeDl1&7wes@n2hbNg#V)^f#? zwUoyFA~P!Uw`CuV9Q`przHi3a8+|10o;yNTAckx0Xx38w!BhO;8w=(vxPOt6Q9?H3 zve*k>yW}7>N*sYaar0wy-o6Q={r!P>I1u0HK*&n1n`hLE12JWOHTnCJgVg+RzsUc3 zs_NacE%SWqKs**%fFE`sWTn>4k>Rz0I6ra|vr7(A^W6O+pZSj^dWWA)+d^l*auc_a0ulx6Rw&_-Y`w4#a|zwRD86;7|mwsy75; zo%8$s6~CXemeROi;Ng2>(7Q*w~fxL@QyUAj{5%!i(i8MQ;? zKb8!{?>i8(f%i?cyWxxmA;?zoQ{wc9E`X8jPsR1 z+z>g)N2b0v#VcvtFEX=hg-v)W`gR4IKzs z!J$laS=sVDmh4L+%Gaw`=d9o4n7u$p9f<34uq`W&}tXE=YcpSGK#yF9Hcbv z7x{NbJyh-hz7>dj0$y!R|evwbyU~2Do2eC$-8yqhP#2p<7S;3+8 zs;Z6%#BGuD+N9(lrE$N=|NG77_h$ZQvEWdaY@H5-tl-dkmHV9B-5LvW)>0bxi@fBf zEA`Gek2PwiDAl|`%<4eM3J$GTRrR?*oM%}}Y22^mA3n?)^=t^N#F1CEy@KOUQK~%` zW<(bGJGcH`Je+KD>$@XjkbDUJI@CTgGj<_Cj=?CYX|c%o!29U&_?v|i=6EFO#1pgJ&TEv0e4 z$k&`QzpPQ@Ag>6-!zF9!2wB0Qb!C{fysl&|rE$OFWA({dnLoy^^H0kjvi!1deDjHq z%(-fxMN$q)>s8K8>=Jw7i%9++dq0@&R4(28nsO9(0}ga*Ub3zwK;3)h{K8% zrP6v;Rm*|6biu^Tl7p1S{UX0`??rkadnaquvVqt?5FhD4$O;avSGiP=Ms8xWlC_k^ z{UWdY%o4pVe$4toKI&_c|9ExDS~@~jaA>`1XDy|1zsLt4w{&mCHQ{(9IDUEWPv-oy zWGx*bD>$@XRn?<`*m{N8y~9e@QX2P*eD77u_YR%P8Z{-_YHnmLzh1JIj*t}`TCb{V z=|H?Ma$dhEIY?>TFY+0Wtk}Ec2-YZa!nX$E$qt09;Lv)Nb47mXUn*@0MgdK)1tIJ92nS-YiWEv0e4$V7?nzJw=8#_pXF8SXDxOGn5G z4y{)?i~Q=yL7rc7kkYtcWTM?RgMSAHS$XcEnnV*#{ zYpGwfCRe1hmTKvEHi&G-{*hg}$a0YC10mobHi3( zBcu3aWE8KltR=oEiGG&2~BWpRuvX*GvFEZ_x&sy#i{qfY--aq(3Icq5mR`ejh z1l{C#cjWHA5`8|~a**N>0yHCr->R;vkH@$=BoOCxAY=sxBQc+~w2b?tYuqm~5u^L8 zrF^*+o|yC9XDy|11TqmL|JwBESxZOA3J&Ic_gPD6+%GcGXY5(aq``_g&o4|jIY!S~ zI)@OT$+6_$jvhU0=?GcDL0suRYblNUMJA_{`{Ri?Yx(8KTJCOHOMJN%9PAqAlVNMd zSdHQuUf^sJ>cjzDJrq5G_*BV?u4%`@u4*x9~3_Vl;493&d|i_FeTK5NMieJ>Cj zb|7S>*6luPsmS1dk=a4&K5OX+S;3*G6#G|Es^jv>u(TRT<9?CZ*UD!tIiq-6ATF`2 zB@x-J;7|mwsxJj%t;iMKX*o#N2}dBaKbOy1J{XAe@|n0)D*19NIJ6SQGfrgUZj7AQ z=9YtGy>kRIJCpgWWmncx2wB0w{Z+mL=*n86algpym*%sUU0F*ZWCaKJSNTq+D+h_j z{YuWKQl1T=vzEhqI1npE4)SA`wdDTF{UXx}`K%>v^_xJfZCOhpWTm#s_oAN;#LFUU z`CZFFqH({-^m#sO`Ai_@MGwBA10gH*c|L1N*7EuoB}ZD;5{>&sX6)v(mb(YynLym% zfshp(jJN!Z!)QMvM*F3fgGA$gk(piHXD#K+t>9p$b)U7A#u3OwiSDzOj*t}`imvfp z*{BC+!#B4aB$3+vA`|WMSxX|^UjngJ2SQeGXkBTXSWo95rE$N=?8$bYwRD86;LvIp zJKIsJIgwHPtmPnC2i-3+ySRBhSJrZu4uq`W7~TPNWi7Sh2qC_F*7B0rb-q7#onL8L zOAy*A&{<3Blo90BZjG$vwU)I+;|OGSEb>{)UkBo)v3tIpWi5q}6{XU8mG|_Qh&}z& zEeFYZ=YEmdN6BX`$^1+S#MvDPS;3+8s(sc{8uyFLeo*&WOGn5G4y{*l>NiUDVB}bI z)>0bxi_A{g@T}#nfq0>1Em6LQ z3Xb8b_W3|ekDS-fECzyNz z*^S;3+8 zs(sc{8uyD#E~NXcr6Xhoht{j^tR?H6`$ZcMdTg0-KLdXh^;i?AW!*Rmx z4$DEZ-nn07a#Q)NWmncx2wA}~T-C^VZ5KJOpIHu)_0IhwlVj^XYbjrD1;=nz8$D|& zjU$lBN9MDZjH_=(wr_XKTCzgA6&zZxx^s}McaD&p&suh6Eghk=mT=@%Eg^C)HJw+J z#{DAGR{5+Yh&=*&VvH+hYp0S)aQ9s zgJaDYSFjMC#owYsm`fR&Z#&%2~@}V>LM3a*(WdjzA{6nAa#} zEp^sXzT659tyjaWb&psKv-@XwdSvD z+%NLZJ1$-7aYb0(8i=JzspQM8@WhF&{LPnJ1F>?{`j*mG(l`Qno!+vkrQ;2V@O^Vw z^Ur;`71!gps!M+?5r{tr&kK&uJt&PMkT3t)a^)LbcZW6qt}A`+2wA}qzqwry{|;;Z zz3Au}={Mq~alhjG;HTzCHsgt~zB&F~6n)~p+)DL`tUw?hfg@@i{|2sc1Ty_`)fx8( zf_}Iw5Lb5~WQ8YMJ%3|l@jyHkwZ1Y&yldPqGCh0HQ@r(ZPn2p9i1^z=$O=!$`CBP! zr}&!?(zst_Mt-ixg5bD4+Ud3qgsk9*s8H(hk3c*ewdS8|+%GaSIQIt}w~ax_3QzGH z*yYmHONfvVw!(!_MCfyDK>2-{AFS>`LQ)#YZHH zRV{kZ;}yRPuXq)+sHb?vZ@K4hrHsZaY49rqa*UW>j#t*Yla$vHvf_G-tMW~xOQIgT zMXjer>0IM}kz*|Ma=a?zs?Xn1gsixZJT_h>jr&E85mV}MUie-mT6Tp}D*19NIAUCt zdYl!Abt7Iyv`(dx#u3OdVp2=TJ4NC9lCWOTfshp(F&0XHjK(Wz+%IyBnAEfJf>4yo z@k+kjO7-ZDSCk5kBarEjJkRfpQq7BYdZx@;N5~2e zT0O@rV&XErmP#d!BaoSoxj+6JHGe3q|JH$!6&%dX+#jRyN*ecz94lONT-EW) z5we0qF($sO8m01hC5`(PUyfI-gEvMy{k5#MM7Zc*jgpB)ADo)L)D&YOejR^WtT@#C z{;2ie%Z!o+zeH*f$gB+0KK#N!{4Ed<24V@jzrvSWQIFs)-$Y9Fh#tH*kgjnAa`f!P zPp|l&;3(s&aeu{^PuvPmAoBN3n6dwiTJzU6jzDIm&h=o8IwKHwbRcAfC)V@))s<($ z^6qG-7$u2A8uyDFBPO+5ZrvDHod{XM5o4kB2jgmP{CmFLU#WG4fP*_HdUhDEVogu? z)biz4aBvru5u@=+8b_!eXY6`!yaCa5f2DCnsjyN#^4BrSxSEV{mF6I&LgRjsY3V}_ zzA-qSj#|e^oV=j}AuIJq{>I3|fw(bhtvea|1C9GdW|SQGyQ_nv>;6gzS;2vvzi(2; zRX_fwdPw7bk(nR49*p+;W3=lY&JnVLgZYu`aYG;$-*C~vBcGIvgSlu&bO?e|yeL0Q3}7&DAlueSRujS?ZmM_kF{%HtIgPKX#+ zJ;f_xWp})i2ERfe$B60Wd0xiVAjVaiwT_S#^F}as>5Iyn?$sUPa7=Vcw75$j+=&>xz$Lcl@K=6Kb0eKD$76{jF(A<2q; zby;1x@rp^-FA8GUtT)Txc2ysE7u z^t+P_N5~3}7@_5kY_uNUA8H>E`hCDQhcqg?Y7R#p?V}uykQHeCK48r;3ki*W=@i+2 zgYLHXESFlOjgY1b(HK`i6NmfNukV4zQ#V2ym5`lgWc@y1cd67qvI3!2s1XRMRMNO# zWc|+J!V$6p(Q4hA!$$^IWcXC7yq=HtAf-Yhze2#5bC3%|$O^Rjsa+3guyO?LmUF42 z9FC9`XpNpW2bma7nPEldhf{6HQNQveJjx->C?dFf^DlU)W7g`-APB5Z`f3$lhsn9S zd>U|+0|c5;#KJioK}kUCoL{@<(uhL{wL%-Avt1y_%5dTgIif_f=Ci=MW)wl*D4&TN zt+{-GkQK68yS(RWZEj9eI2cbG@}Uhf1AS* zvI0#%<+HDaV-{G~AUi_it>!>T2=75}X`PR2Bcy@D5y*_=XGdtX!=2CFjkcAyF8#r& zX!z*aoRt|xNQ0Fl7%}E5$wH@QNSvm=<5=So6?Uj)hHt8SQduBFIMoWMcN$rCD(`*C8X@g&#hFBU>EP% z+e%jA%Q=?Odc<>oT@uQ!5?uD~&?S%4!I3nh z2==nZwpERgmC)VeiaipItEhQh!l>VK;21@W9anX!@T+kZZI$@iZG~U;8YQ%G^&Cp& z2=-^5y{%+LTd76brDA_iC86vp;d5)NQN-AB)o3e?E44_wRG~@vfl~IgkB`g<&HGm! z<0@%J5k#VAN61R(djF~s6PerW&|$@#U`Oz|mueJ|_beAy4{D1Q9BPqvTj7^IZ>%UG zWq&xMqxFapSC@pctAx+32S*V(Z!pRsU#cxu$ZCk>x&o&(1yV(hr8>w#a5t7xml*KRBPs@Eu? zjjQKSDn}5Bp1rMPMO&#w+NC01sU(zLC46peHHsKJt{QEnaitcaRPlCARSm8={Ud|* zr@V$c?|P3+GS}ldq29A>BBUwzpEX+76UD6Hm=s6c^(9~BZZgTv-A1S+j&Qz&i2vn# zEPTPCrxeM$t|u>0O@!`Vg>b&iQR*?N^78bfk|2vi&mXC+sCh!TU+N^ZuGbv&M?%nw zs)uCfZX?{U5MIKJh?=L22ENo&SV`9PVLe6>UMjVl_!_0sxJvsXr6fr%ZB_5dG{;r6 zNxkbBb*j<2o;VugD%fj;gmqh`)w8ro+BYn1m1JGlo(!nrxN^V9 z+OyR4%rP>q(mt+A!rM*a&~9yWT)AKB1j0*LbJXLCR#ZtOtF7|eRA5SE&}gsy3gIQp z96n0aQ&>rcL+EaVmrDC^O++bGJ+8C^Ma_}LF`Va)z?a6W5GrAfXp9nCR|v^!D?M$u z$CXMYgxab`MD?4a#Aa05zkoyNx~&=`(M#p%x*qgk9et>+B93Hn4ClEcV3%JZsE4lS zQkB+CqlDHKLbBQl?l!{x3Zb?dB1XrRYOdadL+HA#>If%|_p@Zxe7NsZ%9~cQ(mwSX z6`qm|$1q=8*lVk3pN8DcAz$LaN}d{sR3X=lBBBkOS<6{Ku%dO@k1psG9}BvUyUlvg zx6Hdy1Z}A3(`>6z1Xki`AnJO6kd^#`ptOoUO%61pb6Xr5?d^J?Q9WF4v~Jy2lxoyU z91TRH9@cC1tfjQWvAf*g9_g*K#y2M87k}m~ef_b$Mc4W6^aW3CTgzO3`%e$;eRK5# zQYJ2b^VJa2I09MMQ(>xe51ie9%SS$&IHYkaIIdpi2fba7{zc(%gfxyo*7eMB`lnVL zta!@Si9;H#|Hnn9FcM69iq;UkYu4j%C;Sz^5ZUqOi@>T19 zuW&d*8b=`Odd)EraW`>D<5qB7zUrw~kKm{g(l`QH*E7f9z}Yh*?j{at+zO73k2%-+ z!x7Rr0$JBH$ElxMadO%zTPF@_+zO7fFT2Rbl_R8a1hTGYju?rP5qA@ZG;RgQ@{eC( z^TQF+I09MMGsncqJ5Ijw!TZu2l*X;#*z1hBHqRX)jU$kCJ#$1XnS8_4FDDLZ+zO79 ze|=qwN^OKRjzHG+jEE>YdBA)2ND)pNw}NBF($_cRZjF$}5y-mU;7GAu8n;qChU-Tu zRYFiIG>#D85K-D{hWm0WuG5CYb$;l^~_O5 z;-vd>E3Px9hxa9pkj4?nx}G`8j7l8RxD_1C&Efr(BcyQzvaV;25*ZSQG;Re4F=lw5 z=m=>XfvoG9qeQsGA&pzXL9FB+wT+O*5y-j@B0tk2p}FYyW?wj>n-}& z*Xw)V4W_&%aWoOE2Gr2~BLDOUpXxpIru{k)(u^X+xA0O?c1i;JmG9ZHx5hVi?ck6` z974Qp`#Yz1*TWIA0{xlwK9X9bT`DxYKJxQalDj|m!QPI09Gv9Yahgl_aLu-o2EU_- z7p?n|j(UJV(?YEHfibP?h}p$TXnM0<4=DPU1izMIqr~9Wbdhxm) zHJ1jzj?f5gb2vg)pfw-c2x+i#1hcDqv^zpppvTYi_+DvGb8x5S?&+!KZ$AF!F>_EF z{5s<3hi@8Fs{dQ{>N?iG;?cQv3|6#j*IXJn9I^Lzt{W2*9U&{wagrlN)Ha7SSUKX> zm2Vsq6CEKd(CeIYSFd}NNQ0Fl#V z;BW+d-I2i&vQjH_$1AOnSkarlGu6GSd7nGt(w(mwGj<&zEBG`*+igX!X&q#g5YIvA zuC|TvlK5SX_}U0*@aqWOcP$(tE7haBKd7PBa7XC=vCZKKS;4`4?CwEnuyTaoAvYtn zBV+|yE!{4aG*~%8_wx%!$O`oM9`rt!6$p*#HitCs7gEP2WH5Of(VnGkY)iWn8gGg3Nf^?d0!vAfy>Zz^&bnCWj+r1$um` zyzE{ldiLd)|DdB((%{z-#A8~d-MWsD6=-^vc55TNt-MZ*W9^YOYc36b9YM{fuKw)~ z4oAoeG~-x%eN7H&uyO=#xaEv}Iyf95E6|L5?O8TCq`}G&wBhLo=AFCo2w8zb)^|aaKG}Z#k%I8BV@JkQgQdH z2*=$kwFSYGUU%y%%3$TuM^U0(4{1gbJTr82I6_vSxnJq-4=;)DCkx#!l{ENu#MQQY z-kgJukd;c+J=!TR8mt_lo%?pF93d;vJSTR~T4}Iygy$xj^>Bo&K=ZuY9evd9Dv8!X z^;5eZ(u^YD=w5LgAuG@tp=}OnRCfF#^W@dN;y6N9AT;vZ96Y5mpRwX;l6i;B^JjM~ zk!BPj?ly-bWCfb%&+eEg4OR`r*jeic&24dXKYxHgldOtgWZJ5Gv^zppAhe^?uDLYs z7n#249_@~h6$oV-+Z@ukU*z$l-4U_^p1`Aw_E;5hwBO2|9^5Pw`l3?-iN0s-J5ceJ;%?Li4{}Do4l)H0@SDpEo$vw^$*wCzs^1 z%iZQ+#IXyA72}va5@hCPottQINHdB6tsKkny(MQyR@u|_5|7)Z@_INzt*~%}tl$_w zcBR3}5sH;<4oAoeG-IK@%V@NfG*~%8(Y4Lt2w8#F9Znk|4OWgAAE_N7E6|LEdL3-k zLmI3cp}VtosT?6I(2DtOgfv(=;%dKpZIsFpvI4D@sLi1=+tx)Gb8Z~!>tU%MV-O)!HtQ(u6uFRWO1H7dp3Mo2S?5cjhnY{gNYs*R8) zaTsEJJ=p8fTC1H@(AtM>b127x6}uD~C3x!YbM4{?!7M^%|Dk)n%yq`|Kv*s2w z8KqeSf-%;;en^9rBiJeKUOyZmE6|Lw?inQwR*p~>s9keM$O^PZWg8(4R*q0MYvBl4 zfgV5FS)=rn!d%glF!HlMK{|rc*87Q#u`6GyEmp|1NWGufK=>R)W*-KGc8A+Fmj)|G zXs3AL2w8z`H;jZnLTVC3`M zkF0)bBcvHc&?5DIVxtEgAuG^CiSBVF4OWhz-MV)s93d;v+Iw%;LmI3cF}}|oAuG_0 zOhcpQ(qQEXjj?vAs4dTAAk=FrVZ9I6;GpbiMiCk@Z4O7sN+s-mj-u>nuyTZETAPDD zSNu@+74-PXAPrWIP;Ro#;RsoQW=wb2LmI3cq1cQ_h$1ej9{!wad!FLbJsWm z8AOiM{9^A_(HH#6_$WeFT)%1mPn3Gh55#GKh@MOcY1}U|Ppr8frRJ%<+?QK%{k6yK znp(Z89uJP&V-&_O{U;7-9D%I+m8yC)5RAqPOAk6iR&X46@h8i;qOJIMYC%Zjev#P~ z$#*j4*Nszqxi7a;J@Wi`F#P{3{`Jaer&MShA-+6680~zmfPe1Gt+-CBGdJTam4V<} zEKe4MG>$-~KXSafDG+x=iD+f_UgDy%JrvjzPiM#_)3_lo`+bK{$hrf}zmET}7$HxTnma;Pa4fn0O(kB@y7vSk=3wHG#{DAe z4zQ}2gS6L=OAk6iR&c!jf}6^?x+bibj6V5pK}h3%k%xC=W$aG=yo^Lg$V&Cd@k)rp z3W8E8UI`(-9Irs|ZG&avOEm7wt+-Ab=6J;%Wd6lGObBTlfvkJfsseFml!*E6zTArI zjD;Mph@#vt@YgktKnBqrujI?E@T3@1Ream&U(px$7Y=D0fvmVvReY7}@)#kkZ1Q#S zOTL`mr^Sk0HLf!^_rG9P?7b3i9}fgy$#aeTfF?o+{ zu_)D5F*o>%i)$Q#OkBwbzQQ*euh6)aO8cSHeiZfKD;V+pfkAwmtd3V`93j5E!&1i8 zAjZ|eeYq9aY4t_^d1!Dv790;mTisgbpfrv^rls>v5%;3kM-N7XNF0uk6&#F(3tr7x z8CEmC+ZTTmLK^pr%=LWorL2SX{goqR1qZVr*Mqj=8*Zt+Oyho$nIE|x*9RiL&pA1z zw3U3h6&%dw+#j^=e*^Knf{?}$$V8%HfAAf*SO-%NIzm=(5M%NvQ7jQc8uyD#TxlXa zUTIv(O7+O|gVA0^slH|L3XS^}U!EUj9h{7HFwH3HAq4fnO8vpy%yW?W7xOS7XkE=( zA>g1tn2%M(iu30v5fQ?DxfR#x|4o1Txj=9qdO;xg>l#NOgUDHcGOp_TEBSIOJTazo zJ)R8T2S)GRQaGe>1hOJgY3GiuI1_vKbxr`7X3e<%=qBR9Sem=Mx90$Ca5I2#;@*k?#z;d5VZ z#dZ3B7_ZI_gyNMnjzH#mcf4|htl&_LsjB%=s@P}fvr4#BFa{e)4~B-ZpVaLrGlr_pjm^eGEcYa7fM^8;Ae% z1LYbxWQDAEzZQ;=6`mw##QD)qKZ*8ojr&C=f3Ejl^Z#AW3Z7LJe=9Fj94M&dwYR~k56R+eMo2wA})IU`~Y_B98kfx~6>|H2WnfGl@OAj8$x+C^?!G%e3XC?$8biKwi>90yrqK`wUtb} z>3nU9aI|gy_hs&&2!*MkZAuBi} zXO6ORCJt%faG7;?I6uZAWCe%h%u((c5{EQ!xUAk>I6_u%NX`iT77H4!km?Vjfvz{A z&m>saI70GsLnvOU|GP`2D2kQh)esR+cPZaR&TGzFFRgQ1l#shHc7eIh(^B529z{sw z2xOl0@;-IkQ4Y%UVBdYY71xLPL7r{O^I$?q;|OGB{?hYcLPUOWhWm0Wap!%}c#;^D z=fQ-a9%vjPzPv9Q&p6~!Q!dqgxfR#B-_84?qX=mnflN!+d7MFc9-MSvZpC%(uj@R{ zpga#Igfxyo=6by^Iw<+U7D85V@RX735zm8z$m8%lm=MyqU*usvs??n4!4^VRa4370 zz8adcKJh%55Yo6`WS$3ef3U|_o(EG8Izm=(C<~Z&CI&p;urK2p_lw-f4-T|1Gm4Ov z>XGLM&&=g{uKLD_Fl2uh`RC4~6uJWl%dIe8rS}BS7#Xfu4Z%+tm+%GcMyW^E3WCe$^PANA* zUV{Dh#37CQMIPp(V!wS*_S;(sS;4{Ha_*1V3m=sI_Joke{UWoUJnWCM-=2EV5we0q zIlYvr9ymf8_lvAN-VhP{?P(-BLRP9rj#se*IVk(>2|=mQxL@(rdFMgoo!M_6xG%Tj zI<21PIcs^@Z%+tm9Dz(r=XgbIFZ=B+gskA8|A+C4xX#^%Yuqm~i0*hLUv7mb#h9v! z{q{lGZ%-W3I09LbD80`xDDN}W2=-WI#qKE_%;vl=dR=go_ZbpG8b=@#iRwHKqlEVv zQV%*pR&WgSgYiDY;IF|G?=vKXH0~FqoW~)qm-iW32wB0wSjhXL+#{Cv84^Mo z_lwN+dSA40f8_{S!NDxZ^gFEo@K0`uC z<9?Bq|EkwP-e*WX=m=TCp)6ok#rq6{@;*aCNaKEyi9~sao+wI$^LV9kB`eh<&krHu zeTFo4DHR&`E570UDDN{2+?QK%omS8J59VNbpCKWnaRf3go%0_c%KHp0gskA8|8pKE z-eXAbKl0Z#?iU$EoyTe1U&)tS;fYz0>%lWld7mM1NaF}(Mt+^g(KAj$a7U(i#a)=< zm9l5)ebEL&8vF`@%=2LG5AGSt`=Y4_9U&{~p)6ok(MF}c5<(jHi>y3e_w%5}m8{@^ zJI@c+jq<)|8oScCU-9L5WlzGB?#r#XP8;TVK8ldW5y-S#p68Lr;l7>sMH7c3WCaIz z;dLH|`}RK1Ij(WP$RN7om3+Aso_Na0^&qateLL@qCJt#Ffy|Rdu1Bdk?~Aq&vVud| zv-G}bdaEYh7flFh+%GauNVz}aebGUzI=nBMde9NFf}D>xVnb>5kM2HqD<2x;6eGS|D~l_O*Yhhj{6UzB|Y-WN?A(zst_ z#g)9{b;myY_V3+%k4cr6=M3dGk;RdpalkkN4m6HXZgPm2zxYOj_?I{wAsG%LMt(Mc z!x7TBUu0d!KBC;_dkmi1XWu&d;LEMx&`wwzA&n!Db-jT|BT*W+Qa$psft4yDC@&gE zh;N7}HBUY02+8V?{A>V+BWO`H?iX3tb3IBA)}urSS;4^=%g+X293hSSMb`D2V@8at z#37Aa!NE)$)+0D-gfxyo*7eN6n4$hw|6m>bmIeYq9ahkImT z93hP(kafMmk;bkxZYA#F{3sj=L3uUW9j)t`qqNne`%mnJ1hTHzZ8aI=s)djh96XT?`y<+_Mo8m+k##+D#JHM_ag};d8n=Q& z`&w;;G>$;l^#&qEA8Fi5^%%yhQmTZYREk%Q*7ZhPO}a0YO7V(z8_x66RtX`EBan4H zb9nTT#;xFHEOf^!X&iy9>orFmebDfnAuD7!7{~e90L*B-LgNVJCc>kSG;Re4vo=4g z!QlvL9D%Is*vDPQNW8+ATfsq;$U76G2x%OFtm}zF9BJ%I<5sFiel{?UgrK}=93j3T zqSQRiK}Sedf8=KaI2=LiqH({-x}NJX8n1+q6&#F({A>Wm5z@F{WL>X08u1EWZUqNp zdRUJ#+Uw|}QpqpqCL(HHM;~e23Jzv%qjhV9G>$;l^<0n9c%>ec6&yr~#<;2@oHXti zS=SpJb-cotTd5wy`7s)=G}`4?d_zQOt2$l@K|PSwAH#X>2wGS3TnIRHz0v1&gcCwm zaL}81F9S^J^MsJb{UYmn%~8iI?z|MQB*VdT!mu7?>?RIr@GAteu4fMJ*>z_rja$LN z^Ukn!9U+Y)kaazCj6M&lKV$_5&v3(W>3*J;DyJTGmP5YjjTS=Td%M;~e23J!X+J6=iS2xMKaIqG;Nja$LNbHcD5 z9KY1 zd+dsd1%+)ZlkDHmo1R!4oRddRESgz-WS6{4YdBk$z{tXSC+yG?!5iB+wU;= zuernaFWo-=xBY7b@HZ9h2kXV~^2<~ATsC#+;$@2_W@aXrAHMP;iAjTu^ujL~)&~1d zPpz1ko|&9jx%2i2f|k69~*1!yJ(%kZ}(p@_n66*i;8fQ%V!o1dTwLE@|lUl zC#Dw_#sx*K?Ij2*V1Rha;IAWM^6=$r#(Y39+Y|u?KLborkUgdcN5-0yDO&$KLZPz^ zC>xGYviWQgtAv`7eCAC}O)p(@K7)9TWkQjBR#US1d`w8ifm!?vO7_&jFZ)bS9zGa> zm(^*pb&94P{7|%=%0CvUV%QK=HnRf+x65i=F;4Bjd~#;dlEup=_E@}RW^kw%?xj;l z9lC5H{C4l7jyyDWr}^bS{LP%3gxD(oqDZhf5>tZXlb=>};lWS*rSZ!0j|F*y!Efgt zdFbTC@|k&4%La))c_4(}?YHM{i;B7`<>Ft&OlSMeR76v`a|{3AXAq(2f%7L0TYS{A znR$zkoS0r54yacznwcIP)Zu_C|M#?kZ*Y(kp)dqXg%e?EvhGqq%D*=&g7@Y=bE zGx(u!LkC6C)QgrcUa`;eJ*EeRbBPrH`dvcVu@DD8v5JaB7Ohykd~m{@o(UEI>L3-x z3co45dlmmHe!e2G7nL$Cx*9gM!m@6-@4;R%R&5c7Oo}HxdEQYgXQqw}#oKT3Oxb`G-G!l#4i=XF~zZBUO0gLPwE}nkV-~cF!F>h*c-aBgf($x)jgJksL)&KtQi+^y` z^z@*=4q@z2{n+3q{^K!zIl1UKv;3?#e`?85M-D=-d|pwG!4D@;>h4MN1|^vZXNcty z63<$VXO#b<@nj%-wRS7I&!7W^{}qTuOD2|2Y;B^CoWedI6PTrni*CJWFdJGjvCpAz z92`Soz?mw48zL3|+c*Xx@uA-M4}-s+8xFm>%O{T<^v5M{+I!Hq&0$->?9cu&3e^3BGojZSt>k$*+>p$=AJX8HdI zic{m@hs=x9Tk$g-u^5$$2ADfD7>5rX%!?n+2Rv4|#mut!*(lDfj(zRKkt>!JV?@z3 zdmMVqqBl(}o0yqe-j4q;xQG5X(xY!GQX2ellA2rou^2Rp!spLU=bu;n{A|wr%5NTy zXex2r)#&2*Su}av8i%#xuPuIBtvzEgzzhvb#nHIe)c4N4#_@9Xf9n*DbF(YS4S8mls#Pg9-QaimA|>iZ+rndlBSUkwu4jbs-LZ1|6m- z;(k*zi;Dw!pTiCtTwH}S&FcoE;nehw^F#ZTe^^xfi`XW!{pK~XlN01sg@5o9&)Njp zck<||#~tI=HODBXk%Oty-&T%i6erHX59L@;{;?=W(Yi6l-&Blt3_*u_;pz~@-@JBu z@$!{}_8c@xd3FiYtwW~<^RB`e{ui?Pyre4aI>Z@V(LdgHeL)-)sgE@TS$xdn4YDEz zp+>e@T_Z)`9WBWLu0H;K9Lj-?^5=0VZ*Y{|;@PW4i54GYOLWRO6kDP%k3+E~+PJvx z82nJ87nFb01AL$9!Ogo+E3=G5hYI5*s~OK6{FXstFuh+gvB%W(;6yPwv(NHn$GTen znDAb}DRcG&WXl`9W0C!FG+rLk>;cw>ly=AZ}Gfi4~s`i45tj|g<=_CayD z7WW?p=h-~zIjs$!UR1&AQSX)IAB)BX@;p`> zVTYaF;)Ps33p?h#yCz}{L+IVL5w;-f7h}`lCs&Zg$Jl}_6vXpOBFEQ)MV+xaAf=qU3<}{B{37AUeEr`oH!&8{pOq)fToao zTwMa&vG1!(u-)OAo0Wyk=3slnzt$tHp;up2mtafrKwW|@#jE1O5E}b6t9w&%THbSF z>d1+~HS?08+1ultAKoOP_Ff&Tm;7sSCu10T(9krfxBwpferqtX1&cn`hxs`>!Z3GuFtsBr+JP zVkwJ?FA`gH#ME16yLen{@OKZ%Kiy@Z6+eT2TAUmAo;ZAP59a8J!4tN@!-knfM=T!P ze?DqO@#cXe&im&8NE5{&VsWJwAMT|)$qSY*ojArn_AVaDbc7iHSmand1l?nLVq$Ph zwkYW=_lG{U=6}4`KJ#~*I>!CuEuT}Cg;U|sDYv*Kv)7Vk&EXUKY+36ut)K)20w#3EUs;f2%OLL&xLJ-Kik=S$1Mxn z>dS){m47Vw#jN^ulPf0=om@6KbFBWc@Cp3`!rFZ`tGKvb&1%L=hQ))&H;dNrS0P66 zzwoH7_|5;)&z6F(VAQ2fW|Jl8M1+oTJ1N{BQhnVyq5&tn1+mi$^h&im<3Mfw!1}z#e+BXy|RC5&CcDtQ&6@lIPF}QPkSV zn?JLrSw2hs0uNP(ezRXhQ-?bgg&X|DDv0P>S$=fQSc|y!uAFCU@|y)cbS__SfZls*`pCu07A}6={KmFL%d9?^ z4;?&D8OTNILshWmw|nLs5@FQC?g1SdzL?*J>C=kE#Tz=0tNX8#T!-!=6r=ZQ{E}mb za(0J6qw(|?midwH!qw>(qtX1ym4kN{mP{0{_53X-%s0g_91bsA9i~WoILuJmnX3Ml z8j>Ff>*aH=C=$>X##?{r~lscl=<(S^4Xh@7b(;)pyIk ze`0iP9)Eo@Q@Oq7@;+8^Of=R)4`=pbPImYS>x6&9nQ-C4^3P8myaqorIe6b_>D6B- zp{??7IzM^#xy5@Pt-II#)SZK0d!OFq%Hq%cwO@SZu-@M2fNP3BtH1ltAHQ%-y5m&z zlXm&wSRDKh+;Q=6o+%%rySVK?{piwRPCLV|>!&_Dk`KD$RCMaUE(gD9Uu{R5PvlhU zE$Zai`@{2ZzjM$(=qKp(E7g;KpLd3K$M1BloS0A29S40}f2O@EaWni>pOO!{>!0*P z?Qa!-W;}G9iXJ)LnX`@w{Wy-#&HY}nsyNT7-v8>tn+m;i$0hF>_FMhPOr_OpL6`W@xhH_>SugYUHEC75kGoklULqQ^pnP|SAP7?!7u%5 z?>#5{IqKaNulPivH@^OG&^vpa9p>py?_a-Vn2+_AzN4I1$Np2%Gn@+FaHxOH-{tB2 zt{&)bmHf?dQR)A3JSxZeU7k*NoJ#+f@mcFF=hyK>>!)*9InJZw=XgZdddTUHgU)!X z_0xXNxwD>kG#@zVsXt7X{lCA_I|3)^@pyqx{tfXv-Emz0j+66K&)P1k=QvtF_`9d= z9>#~>4}WrFF>avuzjSOlp2Tqvz4?`|1b^qn8-(+IPInygVV;oVIDhXS4*Fy{e1y;OLc1q@!6$;h{n0;+`kgNQ2aYRm!*HCxAM zf8#A{kJf`Jud7eTq5rh^x?|+Hb{yxYKXANL|4z4@*nhOV^efdn>wKo{Z_=+^T&Fuu z`}IE!eC>yhlk@BG1xIzqAy4gxj${4iIPIQy-ZjPXOFqogRHuDgzxvbl!+xhb4tneR z$K5i_L3ia+9lztKPM*p^*KvUJh1J)7@r}dzJC4&6UpT$3UV7P_qCG@+9OoamejEo~ z+uiY3Ek4G%tTSf?GiKE>br(SqxWcIjNQa~MC9{>}G( zq|p2S=QSgG>gRfW>ioAh0;hfD2WxR0ziT-CyZ`grB2UI2@^_r9pX;W0e;{#0w;b}k z<+b5FnDQ}tk9wPb{;0p^I0N5tXy4W+Z?466ejOi(>vYHI{&wAuhJGdGbsXpK{li&- z)0TQ}t#wNnXPQ4+GSc5#3!i#(h`Z5uNAynPKT1xVM^P@PJ5I{~IqQtnv*j?Ji+|j5 zIezaAC)`k!x3_d|n72?ar&|v7EXS|or2N(Y-@gmz!RC8j`q4SXc*FfSr<=H`KghV$ zGaTn{zU9c!?u}Rc=e5K6INfpR=Q@5mj`R1P{njuJH?DZb)x-HP{^+>Pc-Wi&x-*9T zj7zP5dES}By5r>h+;614h}(R_hd(gPXZ&ej`0=ww^jNO`YYz+OX*iU(qQ~*D!indp z{!#yQ_H2BuH(Sqtcz&p7E!W`uIJ<7nkJM*fj`fdOKaS(t(bco_+xCseqxLt(J?)>2 zC)y94?l|bJ_K)8`((Wc7j#Hf%!O=XO?l|--onJYQ^V5!+kJBB8<4((KIq~?a_~ZP< zwXfDc=fTzur;dy>u6>>EIGo2DOO}s}Czcb>`|9U>R2i>g|54q=<$TwA!CTAw%$&ar z$NA}3I=(sGaX8;~9ysOv;p4(`;`vei^sCCa>c(5c;e6LScF85f`8dAyyYVnS*VE(0 zUGKQ#(fYse=5U`-j|<1Ky5V$p*`~a2Dd%g)$@weCW1LT_ZaJUXxGb;C6Uaw7E#q$= z_0wDL9L(o*9N_v?`#IO4dfud6v>!U%ak_hcKa@-PR^Rcq(l7H97uV@s!)dHLr)+mQ zE*!`CTd`kheLCH7n%{V9xNofEfa5qn{YuAAr#nvn@MCTZ{YS=C$8mnwKb>wlpPu`% zA|E}EI8Mv>$389&KPueM(fV}#-0FtY{NCy1{USNu9Vh44aTt#3mJ{>T`G({4jGu8v z$8FC0mHPwcx|?xN@9SoDxqhdg==~_miQ}sJ>HnHP$93hpmFHY?ACKcsue+^oIE)W^ zKhSZUpW{yNOE}$eQvJw%2FG!Jj^E1tqIg`ZZaJnME#LSVH~Mm)%IVquCjB$zulLR3 z`K4d;zMSpPhQs+z??XC{^D{o^aq4u(VcgL2I-T)Hk4G2R>Tw)X4&$Vb1CEpR%l&yb zZZL1r`zO>}<-V2~9~{TcyBy#8%olmCzAmfkK4M*FN z=RV}A=Tp`3^V|);)6@Mob3MiJ2nWC3Pk^sFe#cSWanO1GmGX)2K{>tqsZW>lH+er( z{W-pJcuuFf<2e7g_2W3`+U}0;{N%43bl!{TZt}};-xZzrA9#Nco#VRyhPQ|J_j0=9 z(9iWfE5~SIls0$`KazV*r3locLar*0baA9+&!EzjC_e@LrbmE61T++7GEu`mKAPmiHJd@9XOOz1!Y&QE{AB zI8k?;iY}byO&5jh=*GwXEqqT1pZ6Qnd&n`L&N=f+{}z8K?;B@y$8qI#eCO{U^RsY2 zs*-=yd$0eO@;k>&eG<3#%Zo?+PEYwreNx_r=#Jz3w2S7CuI24s^FU~q-q{l$8ty0X zwH=*qIbZ%$;J4TP@_DuR8Nb#K`BZenAU*8|7#-SGlHy}vi+_Zq~7WAicJYt;4U-dA@V)p>7U%L~7*A5QOtXNUJen*H;_ zef!3>4~6$GXfLPhe1LXWKYC}K;{v~T(pBNRHsX$}JAPfAxaz08b<5@aTn8!N>5jvE zQuA?~oL}cla8!33boG;echl|4_uNid66Qtdt><;a`^;^p|L}^B6z2>4X&kFLkJ9>q z)BEs>G9Tfi_y115f7$Hf@ctOzLBQd9oPLYmynfH{9-!*@^*D061p9$9&#O*xo z`f&fDdD^SO_a>_M7akhkKSbxfW%WB9euWdqRmSHmKjUw2{LYa)T|4S=L|j*&4bzUj z&wZ?HUx`aSXg-`5I={VPB+u59uM6J;s*ay=l{}s9IOvsnj`gX0=hyGH$j9l9L;jkN z<5<6ZFO%{yy5qS1N&nH~*ZF%dxGUe_A{Fd`C9H%qC;`yV_ zyU=qSy;eoOw`SLgf9 z-ppAC+&P%ea{phym#nKh4m$Uf^?P3B=lqVNy5pd8pPc8*-MC(g<2Zj^-Ni*Gu70Pf z{G8u$RCgS7+C{(1b{yxgtGl@9^jrOIUHLh`+0X>9m8o{ z^`yY>-gSB{zVo~CI^A)|v+%lSFpmG5-N;XJPSI8M&*#u?Qe2i^HQ|F&aTA4BKWyjMy8gv0lAmFoh& zQ8QRNna(?ZHa8!33^3;CiIL=RfYJY~q`>wn{th&~NzCVc{-Emac z_v+!~+OalA*2~TDX&0`i@H?I7=2}1aovwU1oTrG3?l{grZv8k;MQ43cT^}jdv-4~I zsh`O8DeX@E=>7Jj$9W+0qO30K4dU1P@PqFY-c?*ra{aFBJgA=hvL2VyX&2=reO!+5 z^BoG`SCWtFE-t$Ia~$XAI~U$VhNHTRi?040$N9;V?``3z?&6}WKgV%?zCYsoZaAvD zxajK7ajZXn=f(Hwe!ipB{-e6%psSyJRL}YO z4pfgX)g1?2{p6#1&QJb2{;2La=;|jQ)pLH@m+!>ksO~uE>d$eUU&ntqs=K)8>W9O1 zlb*j+$IrSkT0g22S2^hFcl?~6@AtL;sO~uE>L(x7bADZS2#)HGgRcG@$N9-$#~;;Q zTy*u5kLo!;?XKgq>W+i1e)3U0=cj+_`Ac=jL03QdsGjx9x^{^py5l5W{8^6i>pE|6 zRCjUF)t}=yzph6IM|Bq$UHv(Z^OL8JKdQU9=;|jQ)pLGb=M9ePj)SiL9LM_O{WQ)m zi6gp;n{@FjN7ohIDg7Bu0sMxbr%<1{W*^Fr*@3%pTJSw#YIWWuKpay`r~Z?bQd@2;?Hu7pYfA*RN$!Y;-afR$8mnnBYJ$P?&6}WpL|r$`BR>8eG)jTI}W<~ za~$XAJfh>X>Mkz2`pHN2tUsQ282=MTbjL}$_~CF}1|Prb$uH~JINfoQJ}$@jxldI& zf3bd%tb4%Sgsk_AzphSP^`o<1BI~a@e$MYW zsyhxk>q)ZiH~Bb@^Vii~Ty)mkWc^<9QGU+vII24iI_nCu?l<{3j`P>mU0ih5A!J_( z@=<=y?>MSEPSRyPYVxrh=dY=|xJi%eRI}b=%18KFzvGDRIOwzs>)ED!49EHF>Mkxi z{g(A|$w&D)zvHOxIOrVLtd~nZj^q4wbr%<%agTLz$w&D)zvHOxIOv>5STC1+9LM?V z>Mkxi=godxcb9yWpYuD8>W-6i+4qWkEXVn4>Mm~5Wq+=ekMOg8#}VCe(Ai%@k1zHC zp`Yjcj-$HcBwhBgqJAvL`D^MfE;{>k==jY3BaD+dzvHOxIOyzWq~|ZkasIlxi<@-W zH!8K4+0SdRj^)TcQ^{XbcX5+0`=>a5*6%o?I}SSSqVq%QpLtr&?>MSE4m$l-=g*Gg z{B?B~H|cSoKE1wBe%9|eqB{;cMm~5<+_;T z%kE?4{55qK7oB+p^}}~Vte3+2SE{rA74N}T{PDfqiXOikMTe8#`(^#@xK5qp*Y&6O z(j^~s$EoOXJ#h5Kc}v5-Go3AWJabO59z@(n*p}6ie*Xg}4 zyrEnlQtH#ib-Lp;{_k|)YyWW^=Xb}8(;X+}DaVWBI6w8tamsfPe2=5+ho|p8;&&GK zc`mQ(>O0+W`0k8#v2uLp=esSw%LG{g$|V_r!b4Io)y4`L3icNB!hqS-(Ag zcc!|F>)IE-u78f7_0P#4zSf)59fy9R`xiKl^YeY5=Hqn7q5o)kozC}zT5m3{(;bKJ z9JL=hj`O?Y#p?0W+g>zpc!pWS^Iu-*HrT9CX&3()w{6=dY`~xah3MMZ0umT`cm<`5i}f$3bVk zGCjT=$NB5(E-pH8b^K9&&hI#?I}SSSuH&lXIDcK;#YLyza$e|4{~^zu-*HrT9CXG9 z;->TRidU5TlE}Kdx{fY>)*WTNT&Jh=xZyhv``t9+K0%F*es)!HAA*aw8Tb#=!< zXP+0{uSEGdzvHOxIOzS%{x#&8^E-~}j)PAAm3?z0&z#?JRCgS7+C}%-aUAEbtGl@9 z^jqBrO8GgzW+g> z{v6k7e3N~ha(>5A-Eq)qcO7pX$NB5(E-pI#mh%Gjqx_uTaa4C4bdGE4N7rd*9}0Bc zw*sB>AnSGKbjLwwzmK{c=SSx}4nJ2e{FDp7)5+8EmBadbT)*?&4ZiC5EBC82`$;JW zeubmYFL>U^eHEUYM4jhBj-xvLT=PL6*AFM%4~cm?j?*27b%YY%-8YMI^}b3fm+V_a zJ68CSqdI=g)9J)j4!Uwue~>)U)endLL{j}w|1~+e{FQJ0u3e07IWhlAc@2kpaDLS_ zF2_5%_D}R2hx*6wINBc=uNaqfoK#)?xpAKUqa4+h!}zKBsIK|ocRF#EgRXftpLIvL zUc=u%_miu_bL6;xB06#VC+%`&@%QMBAO2JLv(w2FKOEIL@6_esZ~kVlj}GV4`C8+O zaQ$g?7nk}W&m7I`vkUgWt8U(_LJxH~1Wndi=ssUHv*f z;74~H)$uc4F|O)9cdDzOamMMyRgUV)(dQ%hRoA%W?{vpO*F01Gv#+A==VkQDb1Tjx z;wMk`J7a%U;*P7Qead2<@ayWtRX_Dpw_MK8{80H$cO33FYCevW^`CcMxj$xnA0u%@ zcN}z{v-7?|r9Nf<%~TIjulQp-I-UAaPDK|E{fc!*@vB~m>++OxDF?ph$#YEnX}_m< zyySHD?;}tA97ptj)zwcuINfnnheLUZOP&=y)?0-W_cwI9Jtur-QQMq^*ataah0Pwe&v%7I{D|?m-b?O ztGn)TUA~T=%4eL{eeskJr{b4>qV=Hl={VGLUB2_9Yg~>a_N`$57yPQ@uk5Fg*|$PD z@Er#~>oDV2oqW*A-|3E{Ivn~T*RAA3f3~{p*GxX#pHYtL_$e2Dr<0Fz(3L}Z*(Vo1 zy87X$-|3E%%U}7{AI}Sw`Zv1e#N)J5Uc;fh&R@|ZpK=Yp>j?WOQ9r7~N2gt!?l`I| zNB76Xue!!1f2TVRI^|MMYpsRlcLXP`9rn*szUJS5_EqI~0oOfi#P4+CDyPza=nsbP z{GFGsRldir`8$1`eNH`;CsS&lG-KHj@rJC!*SH!^_E(E=Xd3Gy5n$sX?Y#T`L&*V@%>WX|6w1W-oiuo zy>oCMwR7XEKUw_RyRRAQ0YC5mu)zQ_)@AsCOTE zv>fN9|2U5G^WLNOpNj6{qHlPAd47-kZBfsbWBj}qs>fGFcX82U{pk2(ImS=^I{s92 z7dPtk2OV!6$N6br9iJ<@iyL+NZTB0GmCxPc`NDCWA3dF4GUpxqDQ?V%@r3%}yw7z< zx^872tNR&6U9Y?0I32#u$MkxW``GwhKIr&0uG7iW@f}C^nQi^<^bZ%$0oi}E?mnmL zcN}!~{nY(f9mo0W>MkyNZa-7<%=sNhb;m)cT)K~{<2Zj^-Ni+xUDAH6@qHxa=lqVN zy5peJZ*^a3$8r9;x{Hg>zQ9^P%Fp>7M|H##@o2RHhJd!j-$Hcpwn-4|8d80{<^x0i_USK>L=b;*Yh3s zGb`si@pHb$4@Y&!(eryZes{z7*E*l!yI|&B`0MIvJ{;MbAHEB-Eq)a$3u@V$8r9;x{HfWTpfRupYuD8>W+g> zyD(06?l?*3eKX#(iq|`xpMB{g;lB6lANyc&ot*sgJ|TMZhE0OM z|Cx(N{7z5xz;q;|`@OS^`feVJ?CcZ1L=#E4CcHY;z zunyn)=?@au9T$#6|IzX~y?^op;eAf6Hy79Gj?;d{s=(KN=r~!w9AAkey5o?i_Cv>U ze(ICsl<_ceVmqqN`&#Hae&%%ej>G$DgY~S#zU}P0q5C$nkB07V%l%u{mw@B+97p#< zbR6`GKkl=mc@np>ziQkMMfZV)U$Ojvguj-$tm z_Ge@sqWNx#m*f12Fa3deh>j1;uXI1ham$tC=<$-{ ztKYRtiYx7y$}9Ddi>vi-IkL|w$Jpf@kSDfqifFA3kR=XCZT(S2mx{w$8~{JpdP zBjnTj<3C?MTn~*uZW-#KfBLsC8`gDy4f1#O=5)u={W5ZV=eO5ilOwvdnGIKOMh&dZJr{iplcEw3KwKW@J#cN{t0a42tOA1K4Ieslab zI-A{69Ph1%dL!kcAF>Y@_37%t>5fA^>;7Mk&*T~=1Tlb!OZ!OwO$1(Ov)cv0N+iv&og>E zIP6oY`)xUn^Sk~)KWG0V^5?i{#r=y_*ZB#4rz=PIUCQyD-?fX=9f$ocb>A+>aemv5 zC!Z4fkDhnnRK{mB?sbgrIFwh%F~@QK)V{JWr#tTGZh43Ne#b#i`|`-XMULbAb#)gPJ-gpf z%robA9Mv5MJ(WxLIdUB5udBPb=(G#_CDDJBpYuD8>W+g>zirFDZ;s>qb#)gPo&CkM zew3f{JC5p(gYNc&a~$WdtGl@9+5O;RKhOCcM|H#P=3zu zII24iI`1d*{Hq(^V{{znudBPb=)~3iN|c}TJC5p(gHF4!PfAznhdgtB$5GvJ(CN3j z-;Luqe_h?hMd$retsmv*{Enl# z@@_s6^v<%MzIQlJzN@ONL;KAa2Y+L~+fE<$ca3g2vd^QEx&6vNouhSjJ)sO2x zu0J%s_kPL0zp>gAVrw+HTYe%cc{-zxIdF$k-*Wx?B zs~@L34#%(N={U}>^~|`$^JT`#o~)D5x%aAY+~H?k6vi>DJ5JPDx2HAzmT;WrIL^Sm^Al)n50@;d`{4p5w6pSB^tm^}GGTh|7L?@F}nE2M51yxg5vs!|3?V z4`17b{n|8t>Osrv;yOLYVLwFb({a$%@7jg9?7s$|@@hT6uiIXZKYVocQ~&6+3x3B@-Eq+I!{_;+e&3p|qxlY6zcWRb?{*U>>W)*< zYx*nSKk9erjw8C`ptH{f>&c{YQ4ewbnWRTPemH!$p3`$2@}b^(%^SjZ-|c_=%Js#0 zADy^-*NNVI!_xA*^&=XqhW$==99>sG$9MkrSfipu>xT0rAKibU z{nJOo_rlFTp8L^ZztbHDUF$8!Q9t>2w%co@U7YUXy7r~s8ecwSq<*MptsmOA^Um!? z{7!cq@~q2ue#%wJKlW$U9f$hVe&Xt<^^OZee^b9JuhT8(o_hjc`=R6XGXC5?8XR|y zL!R0X$w&FlPknNnGGAi->V~XK&wA9oxIR4ox;o`jKRWALvyQss=lqVNy5peh`sd{1 zIL=>JcX82)%R1`hqx_uTaa4C4blQ>i%*n@boWHK_;-b@US?`^El%MlEj_QtsuItj1 zkK;IhUERe+*LC>GNBKFwo8;|#|xWAg#;g5RnQwz)W-rq3y#$uic z$LWs4eY5U5?;GK`d~*D>p1I_&y5pet8rR-1TrTo=9QAXbll8i(AE&#x)KBBJ2an|A zIL?o*>x$=ejm!N^Etk{bE2sN|Mdkh)QqPX#{5)T)v`c)hq`Kwkeirm|qdN|ILywCL zr{dTBETli{@koD2`%^?e^{>a5({r4(-$YHm`d$4vojjF8Khg3!j`P!hs88P8WZiFF zmsr>7#m_px-MdZ?<5*75aafl)$04rz-8#m^WgTz$lvmfOhF`Z_j^oyKcYNoEUul=P zjjS>$aEUxOKuE-}&LwE<8u$Jv7z} z<^0&XYED>(C!Js7ei^)n#(JJ`Dta83Dx9eI&-h*7r}Kj2XZ*a!%X+ZnQ_&pZcxb{Hf?J zZq(@yI^H^t^V7aMK38-XH|q4;be$soF!3{fIO+TnIThV;qRx1d>L;#O%=)pcd(8Ql zb#7VLl;??cb;m(xonBpkRrxu;`8mJisO~uEw2Q7M z>^RO}S9fvI>9@Mxvhs6&$5GvJ&{+pq>&J1Nzpn1$qO)FcrT@fr#mO`0cO2Cn2R*kA zGkNCxj-$Hcpp(CjKaS)4b#)gPop#spR{1%<>y73$zYFU=HSYZC$ogq+9k8_CMO=psj$4OHb^P6#V?x~K_-S+{Z4lr^u~SnhV|lF3x2ake$KD!r#U~m z`pLhp?l|bp$s5aZ{qm8Kb?}s*^XvM1&Y$!#*8{YC;lOWQ`pHnP{*~)rSv+^3-W*|h!-ud=!p`Z6R>W{9wDC@lC{JMS`ez*RZ>iB!#xH;t0-u$?*E}YY; z2j!rd()`i8Z+}Tx=dE+c7ehV3SHII82fg3Avlc(+*L9hkA6@Yzgs6zb^PrE=ZAb+@%-g<>Onc^E+6IR{Enk~j-&NVxio+D z?k~11>p|ux>L;%1j)UGf?faoWH)MY0IL@!@3OYWz`pLhp?l|cEg(rk^F@JXatY6k| zbbfTV?q6NqanL)@d_vh?ay_E_oL{d~s2|lG2VMO+j{4!~bph99Y5g%-pH0^b!q2)x zjcecizG8lu({miwN6K-CtA4kh5^-5i41OxFtd|A9Zn+%CtuN>J&Y$?wE@?e0$)9@A z^18TA&v95Uj{0;QboIM-Auj7vCH|#b+*ZtUdRh;+-VyY=?Um|HIBwlD@>jm~lPBv9 z%6)$QPLuoje2>X@-Ni+Z&x`f@Zp$%#^4IUXE4qstb^3#T|L!=>Py6ck?-kv}jXKY#bbSEFaej1N zAE2VUxKZbMpVp7#I6uz;wSFqPiyL*Ghida>*x5K(mj-T^8j_QtsuIn<9kK;Ih zUERe+Cobzdk&p6oe#cSWanNZ;)>$GS$8r9;x{HfWzhxaN@=<=y?>MSE4*DQ|xvpAV zcZ+-+$NB5(E-t#R4@N%9&-ookb;m*1b>Yazah$)d?&6{oSH~aa=lqVNy5peJE;`;i zj`P>mU0ihfE$0Q=OZhp!LgW8>7zq{Aqrx`iI|Dt{YZYXC1BR z=l%cwZ}t!CL)Okm;_|&unrFg~>nW+8$|W4W>(P81-}-f3De^J8q?Q2(H)0=!u*GPobEW(f8(aJ!u_!v$N7^k>o{d~iOcsUS}vz2zHsQz z+Fp+1{Cww<=J~O`h^xmVd_8{QSNe1Oo=bJdAs;=C96#sR`hlamCEKx;^Nu|HHVg>s@djVSNK#ccQNDIOwda zpzBU3Kj(KG)g1>tw_XH!=KPMMy5pdee`TEtSsx?kcO2Cn2c33dy$kw}<2Zj^-Ni+x z-}YtQ9_8o!j-$HcptF99){o;je_h?hMQ0tDO8=4dk#c^=QQdLS-FiWe&m4qq^gu)9yOnI*#+#)m>b4`mL^yr2L%Uaa4C4bdGE42VK{5K-YB@&{;pB zJAK5B#k@DC=Qz5aLyoV0U59~uh^yo{&b5XX0Z__`j5u5UwmsRu2u zi|h0pN7uJ;9CY=&b|Eh7X;3c8tMve1+r{aQqw5zD*KwR5KK+X8Cg#tqOVEDub<2w9 z!K&luIwH5ufa9PmC#Q2gNS=>3AIDLhd~&+32cmxRR9*RwgYNw3)Tge$L0mYR4|$~qxDk4xXra-FW<`9|Gwc#f97 z3yyxCPw85RKlu<+~wn>(=iF ze{Y|^20wcHeV+?@_ltiC`Jk)6{g027`M>QC<@a>o+A#Rh8=wAm(3}6$xT3fZfZi8> z=NW5XSzPaQzO_O5z3Mj2z)AXNe_Q7Hv9$vSy?e+-rT^Aj!}qO;|1W0*y*ux;QT?39 zg5KGvIjXySBrbecF4f7iBOLVpyB`hZY90UUk@|5Q=WlQP!@%iY@$d*obr%=Cb-;5& z{j_emJA4;Oc^$|3o867d`oH`8BOKLTT=f33sle$y`nK?#hI|~y`TPHNaG6i<@)3^e zE-rd=_pby_f4#NCcYNgIIL_Z*^7+7NyljUNj_NKhdTWnX`0lU2#e!NK=Wm_*^1x}{ zUVf)Zxm0&?(c8!0I%__TWBt2+eD-`qcX81>Cu|wMbJ6x{8IJQe581x_UPjtWbr%=C zxBp3jQ|Zsb&-uGc&kdZe^k>x_2fg*idjm(0cgJ!5&K5r|^O56Sbr%=C_wq-|d}KUy z9OrM|uyHt_>UgNSi;LcT>i{~AV3&(N(&RWkZ&+qX(2;ZK+s4-_pfKK zAJJW0^zJ(kEBkYtKcsvN$NBq*9uPRqI6r}-x{I6ipMN@Vdf(qE%+sxF1pT7$j5P~vW9LM?lTiqV=>A&aoVg3V0br%<1=O;Oi^EVIPwHy!czI-Gf)m_}A z%lw3VEXVjeOK+bwAJtu4be-prkK;Ih??bzmMkz2&QHk4ajgHpuL${6`m^XR zF1pT7Qa*;`{LRz;6!OvIU3C{1UFRp{<2cUWedF`OyhX=D)m>b4o&S)J<2Zk7rya_9 zUA!*=-<`koJeB-rUZnFS@>C8w^P=7%UkT?y$ItoUFdu`Xy5pcX-~8urytm?cImdB+ zonOIG-Ni-koiH8xGxLWW$N6=B1xIxk7rptOua?LA!JCcDe;mj9Wqt);=S%%~|E)Ry zt>HY?x#~4x9);f7{0~9z?fIS1f6(Mkz2&QHk4ah$*RnK@w`)Amx`#Z9`*Psqn|jKA})Rpq=z`m^dTF1pT7 z$j5PCmvTG zUvd7B<2b+0ui&We;wJry@5X%A8+mSMImWN^E1rAmI(4wm!e&gBCi1Ws>o}HfKXr7LPu73JSXP18t`E=v_+37isjx&yfu72kK z{rh$d`EXy<=~<54|8$(Bi=X?kot1lre7L{r^c+W@3ph^F<+*v{*Q}o`N1l&o`QoSk z>-L|-Hypjsoa3vX{#p0nA9Eb%*L9@fsP5vT>-A%fex%-1cO3M}`p+>R$8mnWPA4DLU0n3adfG7`$8mn` z59Fh|i;G@ampkU;IOo~Xx{Hgh*Vp9ZIL@!@HpAEJaro|iQRTx? z-Eq(>>rThx%W>2XN6Uq->rSKV`?2KT+hg5IOD(}aN z4&QO~K1`0Ue&)m7-5MdEzPx9vI()~`=W98>`ng_c{`|o(&NStHUDe@Rj=X1;u47I(*BK=R1y*bn#RFb^A|_qxVU2eD%{m>mFb59j7Drb8>w3bNssTL3Q|!qwC4T z*ZWB5x=wiF%l##%I}SSc8~btprX0ul(YY@QM|Bq$y|Ugr<9vL-4t~zB_c_T&b;m*1 zb>?#%=hyq3a8!43(JSlx$NF&`>o>=R>$l1wpUVCPCFU7yNvoS*OVIv*ZgcMe_G6XUx%T@Q-y<5>5Ja`FA9=I`?4J5XJR&FPMVu6gD- z>L-6Kmn$#d59+#Su0EZf<;ePMj+1opyZUju2c&ZIluOEII24i-$z%D)A${9g`?~0^F3_*PL|_~bv$%^ zQS`yDVLe;c+eByG&c=SXoj$z2jni`+U0>93(ABT&f|4h3b-iNB+gbM0_twduxLRJz z`R0qub%1NukFGaM{_u5uT3v4$KlPyHb@@9z$Id<2XNj`jxKN!MKFZIwU$yvhD|d&hM({ILdc^bk=FnxXK|P)pH!>JHP5WzA1-% zRIkf{@BHYLSLbQOg`@eP=Qxh9dX7UsAujo-?l|bqpVPJfs6Uqve#b%QIAwiE*4aaM z>$$NmT=S3Tesp;JcY2P)`gO#09CY=&_3ntvdXMlaFY7L%!>?N|$8qb3I==J6*LGpO zLCv3f(DJ&tPS0^z&$Dj5so%8=adrJb%B%I@@^`x9xb-9*$NAyYE;3 z#8r;da~$P6zv{Fvah2orx*Yh!l=p-1d@nTHxsVFzBva&hOeq*Xu}pS%)O)CbRCr( z-}!C3$T}GCb-fOBSD#LI99?fD$9I0$F8Ul6zOGY&?(%oK-E0+sW;V? z?>Okrk50YmeG=lr(R|Qz9OXMdI`a+q#8r;da~$P6zv|k5ltVtM*X6*+&-D)Ng3fgf z^@GlJR$bk3&@~^&&-ookb;qF|7&j;{{ekN>bn2gZDLVbRuI@PK%;$6boZoR&cO2@0 z>mc$;dfYb(oqDMB6L~&`pSbFG9CU5p9LM?V>MkzzK>z98ef0Hr4(@;SAAabD;@9pU z&Md#lQ*tO?>ytQaGe6Dwd;x37XJ3S&%Sof;8*ni!7mDW_kt&0H>`JVdFeHQ zFM9vsZO$t6)@45#;rEX?FzAie*5$f7pQqQ;Gn~%y^G7)CUrn4_@HKAx z#9f14$#b8{^Flr!`mfRajqW(zgZ?q_d%{82Jkcw8n*95*-jsvhebN2pdO@+C+dr8T z>RI*X>ux+T)X(wn_{f~19WwsL=huH%;cwmXy%E3DUEIc9zd9vw{$aFV*?boL&ryZH z|N4hU`lsVt-EbNQE?ZXcyPIuai*NlG-FR@pX+CfFYvv4or9PW4yF2uU{=ut8`X}w~ zbZuY!PFGIjkGF;6PW9fp$DJL@EB(avAIEXJ2X|IuH`-{?)las91-`DZSiEpFqMV=gN6)`{;P?Vq3D_2NR;^Fr6?j?-E7 z%fRV2?+V{Xa9lW!^Y_oa`jR4_{;D^P9AA#pxZsPIhw|!qD%Pi#i}q4I$IN9I4|qnxCRzp>{!<+yal?IZIsr*}8qG5FhutTi%@ zCBDuxO}QMWx8j~|I4)}PouBbU>%r-c)1UvT%Vy2zH{TB9UQ6pOj)zXy>jLs|x^mhZ zUKR3D-R0@ZHxUOWrB-go=OY7fpnlHO9)SK3`<2ZlAwb%U*d^jAx z@A}V?a?u~OUE23w9*%3x$LWrPUa1GecmB@j-yDv2&By7Ed=n;zbn`GCNAaGc67Sqv|n*(D3>1Bj+65@p8kpM zoZ@(m#|s?Q9f$s}emBm;*Yh%Z-SZ%R<@Db0n{ZsHj$irC-+OSu6=58cd4knV+~n8! zOg#T;KIEy_U;TOg@_Z`SW%!lTe%qhQ^PTu^F+E034duzzEz4^@}_XnB>-xqYf4(;FePeJd$<*y@tr#lY$)a5%r z^{*UPuFg3(g#4SwzH%ggm#5Pmr+4Npf!{jqzeeucI8M&5?FC15$LZYr&a%9(`r^oO z;qD7H-g0;t4;xSY;Yj_s`$bN7oZj~~3&&UGzKyv*=KQYRo$ff@+pa6mgYq25ah%`v zf1dm3yfL+-%(pwA_|}!-e0u4>j$EfS|E+)ZY71eY32}8E<#fj( z&kD!o8OIGRZ~y2Ihkoet)c#Cd)mx9<80tsw8#~=`&~@C-an#>@UN7XM&&8}B>!-p& zm-$bYBYxUfpQG_yQseg5KPNnw)cQ<*;alBs+RF|Ke61hHaeh}Wr{_4DkK>@L-?a~lY9K`Xh-;}p=#UH}>R%w^VUKYk})#+E-?oRI; zPUDdCOa5jzjhx>d$N63VbR5RdO8%xET>Ur>x{m)jj{2JypBKhw?Qd4+{3Y*2P!Dza z&X2D7oe zo%ehy^N=`B>V2x#lgjVGRcG9@9GSm4&bawEZazMgt1b6ADVNU2obEX7Jzf;}jVF!X ze{&q`Kj*EXUGzR%``14Y{XzBSvZI6E*+%ZG^WK!amqmZm@;XlI%})>f-UV`B-SC~i z{k-pl_qh6#a$mjm>TrIv{Y37gHcq=N__cpJJ@q%?BwhMjmLvY=(Nm#*G#{tCxU`EN z7nT$2U;W(=K3Kj-C(k3C?&5YH`LDpy=NNW#^Ek)P`7752F(1{l9JwDwK6-uOIK6wn8Oo*ipB=~gv^FdL5n9HLkn=(7Ev8avad-6f2)!&VS^7HSMeSv3bu~;#e9fn^c+;|fN?fOtzj9o^avbYFd++l2lIKJXqdSf}Uflga z+E?$7q3dyx)0N}KJ;$;B*zT2ljP5wpn{tva*T3j`ozl7SjiJ3%?>&8P*x#r9mexhX z&x0Dr-52!kqyICaJC4&Gr}>m6<^F^7HoIgvuFD@?uj}dOS}v#OIOFmw{x}X)@^L!- zLE5oz?vv0DEBuUKuTSBq?(V}dAFjlW^K;d6oJzeJ4sq3==E?G&mD6*aarx@!{=@}`1Inrp8DH--zVcX-xccl!f~ALIDG%8=PAd@`Mdki8+|`Bes`(- z^c~87{^`Pz^Hi)K<&cl+mJ`31>D>OudVJ%jpJ-gC^WBZc#qV^-SAXiCQqN9zaq*AK zSARNwB_F4|xcJBAt3SOjB>6bq#l=4^U;UgHw0)iK;^H5dul{sClKOGFi;I6;zWUSo zTJmwai;I6;zWURAM)GmGi;I6;e#IZ>x7vT0XI6CX>&m!?e_VdW&%9de$LTSD$8mb4 zT#>K-bloBOIGyVk$8oym17H1Iuc_bZj>G+^y8N79=Nsgsy5)TH@^F8wCFg6$=@`Ge zE^hwi!@C#rfYx@GjeP&o{{23!$S`Ne#!b>|+J4bMZ; zc~kf~zs~pIsO~uJxDG?_tGkZ8N9s7v&wNSS*XfSKdJ(Pf?L9KDa~$V)^IPKTx)an- z_ocgxyuaYdzSm$$vP_CZ5{~s<#e5v zH2%wTSgRXOy6-3J%s7tob6>F`>*_e2@m$x{adDmQIO#kh>+Lv>^K)Kv_j~oZUi-dZ zg?6l*kD{)}X{t}Tey81a{Iusyb3fT}=x=(yaD3;dKJ`51bjx|ud1bxH`P6Z`8Nap* zoQiHZ?Ir&e^3nN&<2b+T5B)EF^Ml3wp(o#obmlJ$>lEpC7K}5MdXDREsqQ$8x9WGg z0|hny2IB{Ms&XRCk=-Nq2o7LfIA3ypz0QTBx{Vv>X?k7nILr^#&-_#G8@Tn0+`3!t{OI%?NBfWC zpsU}VADy1#jLTQQn|C>#JRQgBdK|%5Kldy2y3FZ0jvl9s=Nh+t{e|Is4Smlu`Q>9&QN9)sZ(A96x`*Gf)`Q$j`^3|W7_sKlL>E!P? zs^`{Q(CcF2>O3T;E61(F;5g3j=G#tp9O7#GI!?~-II24iy0#bjIF9qz)m_}A%Q#Oy z%Fp^8M|8(Q*LhdU$8em#uI}Qx^=-&U`OaTiPwA6C4dXudZ~NzL|Ni0Ubm;n=G|eaF zIk?l)^#Xnu*XgX^Xr5DZzDs%LIGjhw2R`SEnmXfQHf|=L3Mb~1`UCl7IL^;|QZz9bjOK0_basCDtzaUI`i|y$>_|Vli%g<^vJJph|BZwT)jCze0^W; z=*`1%+WW)vZx8oxfA^QOi{rHay$#BFU%D7W+4|@O1`-09o zneKXAb;oh-;`lkgyRKK=a!k9Ek8;NCC$661YrQpYSrqEOx9W&c|Lrf_cV*EoPIsK7 z%X7voNBsStl=-wKV?O77D!f1AbQf23uDk1U@ONGq^EqO&?4SEikG{_npPQ%Wm=*T0V_WcbjB;?Wc>7#^!|_WHxDY0>;6m1 zay2j9H;kXuzw)hr^K#tluK&%Fv-j5mCs+U6 zKcu}{o6arAlUv?a_UGr`eo0YYr<130k}l6-vmEhvSC!*id-rmDYutB0$j9j}F1prd zj#KfQ^OrlXxwt*kUY2A0I==Pd`M2keBXhj;FWM!vdt>UC;kaw<@}h9uIh}HGo=V3r z{Xf31!ut<7j=ty6+Hi-EPj}DnhkSZR-*HCK4;vS6HljDSzW3D7KaIb))2o8N|J{>5 ze&^tyH+MPnJ%!)tE-vNOJRQgRyE~p7@@dYT^RXhI?%#jsy+uAwcbv{{X9Z4U{#GUD zwrx%ebdpp^-nK2PIvjE^PUplv*bAHZ(sebkWcUUCxm<&xBWci<8&7nJ-zP~-^e%3@0a0leBp0x|GChA+7E9Pj??a!-WBq3I`yC&^fWHT_ZV{=^>@Gaf%15N`L5hZW`GWU9a~$>e?kdk;ofF;>&R^ZNeiia@ z*N?5O%6W40(G9{pu(jjmH-zIQwmau*eSWIC<20F9oDt{eJAHGF{G7j1-k7KAj?+1@ zoVPUp_=|Gha@+4m@==cUn|gNj?>IVtXkNc(XfMZcex2uZ&VABN!|llZC>`H;?wNGC zUzEm4r_)d3{i4L7U3g!S{pm6s?nfzy`(t%=?#m^=i|h25e}xlu?ki^b89(P2t>=pF zI8o<*Y04*~bDuW(V?9*jIz93$oT&4>FUxm+^muhR&KX;W`=5*tt?wTfuICv~ zxSndCcvX47_1C{08Ta@ehw~2SBh_;p{Z5B*iF_EBT%KGX^;T{X=DYp<%k!7hEhpBq z=I=PJysa0N*I$jl+wO#-{`-%9HjK|scbrDN{_39prlSi^`zIeS$9b1$)YJD+ah~Hi zPA4Dbp!2;y^RyhN;*Zx^y(8Az|IVUZQ>TS;HH_}!cJD8*zuJF3^^FCm|AZ3*$LWrP z&iVt)pK~1bH{vZC}bs^{v zT)$^Ix_(8xK5G5yfwvaz)w}7zFrIN;R?#V!a-z<0$9<9sH}@l+#^Yu8*1*9Nd``j*FYZ{V}II4m#%x z?nCA{>Sx~GU-4L|-~NA}749GMe5$imdA@F+dU<$`spt1}KUU@g=sd4%FM8F7it=_} z^VM)Z=Q(5RnDx#L`cD=HopSMgE6*34?l@dO_K$w_oPyta*NJBpzdBCN&pd(qz|PNg zWnv2jnRug0_D^P_m&DJSQz^aqaX1D7qkv#7WDeYE3n zo!CGBin9GS-ulepdRD&m$Lmw=hpvA*j?S;RukJX`uk*lkA3i>(ZoT8d^FujrpA)_x z=lOE$ZI1@M@s+*9bDY$^=6ip>o8~({$8pD_} zOV5$t{-IF+o$ap*&taYJIOzJ`b&jKco+Eb;Kex=M{ps-B-03c^>b%!omxG_@q}?SK zgnar}ZxGf8u-8Z22YYfHXSN-^55_p7_t`4C8ato*57~YHS(=LJ`Zg?v@o1E+t-xu`M7p; z{e5hZWamRNwIga{y9^LrXBO#ym>0b@`INilX*LKNqD*pJq zTklJ_`xP!O&%3p~EXTAj&$|cL5hM3ih|BlyZXF)JH|)&W>H6aQt$wE~-*M3KvtEkk zlkU^T^^1tBey77%4tl!pn&CS?db&?5>nu4v-Cxbb&6P_zF5YLZ^k?qVX5!NBTHX{_IOyrVYliRq=q@hD zUGDfLfAu?^xcI3z^`qk_&q_YOpS-acx6t9J-|6tFPdMn@Cr8h5)So!9|G>%W@%?uE zF0RuPUpVL-FFAhBPdh3{b;m(xe5lJ&KODv-IOv)W^`<(0&LhfEJ;&j^qa2qf<2-)H zcRKki2c7d&j_>^FTCS9j+1EqYpU1E3@H;)lHGIZl*4xi<)DPd~VtDk(_z7?wD*Z$yi z;wlGSIp}Ub4&@M6{Z3DO*{37we-nj`Qn&+;CKPanaSE<2e7g?WG*@ zQ4YH9QIgaZ1$K_KGmGwYk zJ)^rk(cM0M%Fp>7NBa-uRX=?7J3Yrye)5}rx^-V&;_A9yPKWO}s^fS2V%xZ~A9u<} z^u(9)Ccn|`{!p?H6dc`;+v()v_~UY%U+a^6R3{(hpsOE_+kZ-R{90b86IVIt%$L|# zE5}iP;+S@H>jA1xTwR~g>BLnI`nVkDZ^?e^mJj$iwO(}}AbbmgGC{oj>CT=hF0zT>Elzj4}S;k%sNe)q&xztiE5 zn}4tM>X1+8OV1hEZ^Fe@Kl!LmK8~Y0e&yu&jBlF1>W+indeV!-e%5t4&hK=0-d8{Q zsNd<-o8zdC->xqw>);Vr{Z5Ck>+<1OJ^9W0axQLP{E06*e8*88zg=HW_{3Ge)8UVs zzpFPFSN-IpI{7$`>dC*!H?Aw5yK%oAy|wF!*ADB%ZHwROIgax2H+FvPnj&uh;8o$h zDRdWC{p6#1j^p^vi_g1qwtQ4~ah*;+%0cJ39`%sps2`52ht3s$xMH|{@oPTBRln17 z9OdKhKlZY#XUoUMRX_Qt4&QN9$KN>Q{4$@-ZW`H7NBP86ztiD6j_UaB@gjK=SN%?h zKW_f5$8HSAMWeNKI8GB^bolg7{7!cq^#1zigz=#+$N8P!UUpF6>wY@wCm;1Yo$@-4 z>iEayQ_q^e>Ml?8=JR@?ed}_Z-|5UTQ)aq}OWAJ;k5bz;-|9=n_$_JebIqUY9kg`e{~j;nw5!&kr4 zsb|Mg9e?+>>n@+|JlOl*W|t1@#8to3;X97i&%7nf6I!SJ*T}wgJ<*BVIp>DpZyx)~ zYvv5*aZXS92nT&!j`R1v_SSNqv-!;<`Ka#VqN|^Bsh;!qZ~Lc^Pya1{9mz*^$3a&= z`KX@rkK2D7-*Mc!xT=%C>sP8%F6E#*e`P)1_@2LV$VdH7C$8f-y+5yiS#ezR-U1xe zU0kO-4m$6Z5jV$Cf8y-CSvfwO`0kPGwdNT+f4C@D<$VJwFLBlHbmF@DQ5}Exi+hLh zQ}c0g)lWXE!*?9j@weahr|xX+u6*LE-|6rjM|J#-TaLMCwtQS%^^=e4@Eu2W{GC<5 zytv4x+q`S!yrX>Ls^97G9mnZPy1$ zxav(K`KazV=;|jQ)pP!F+spBllj6?*R2WzFy@I~z_!-~uJ3Wy5&j3etmnV9A!>h{k<{7t->@Vy%&hK>BPt;F7>UTQjbsW`` z|NhIvb%8!_>U{pqp&rnQ+ZMmm;X97%_#5{>5YF%Icm3zcKI1N~`pHLi_>N=sR~#DZ zf#>OoBRX+go4mT5pZwh;m(CfwPEp-)(ADqwIltBe9Mv5M-T51LT^7#ob?Zm{DW5Sp zZBzelUs2VG+m?M!olZR{2Yp zG#}Aj+@y=2dTxoH^N-tq9N%%;n_L{~zrDlhBkQiKPX5{-oKCrvgRUI(=F6@N_0Kqr zt{md3-|0Dy^6@v;IyKBcH6IsO{p6!Me8*88fA7{ELO%LjUirjTztiD6j_UYZ$88$U z7n+ZYtA6rP9lqnJj^CYUl}}vtI~~5`sE)t4;-1i6Iv?(Cx??zxpc7a9PKWO}s^fS2 zV7j>KCm+?}JC5r3-M*R1C$9RP4&QN9$M5RR#Z^D~s1Dz8RL9@_{I22pUEeFaqdNZP znE5D&JUK3?2gi4Qbj=67x9)Lg&(@Bb4{_D+boh>=I{tC_d=FmfhpZPJk5iW?diy7H z-alJCC_m?S95iGLd92ojD?_cYR=3PjSWXbnV4rp2StZ({mi<<8ME9P#E7d z9~W2st2gBnSN%?h?>MTnZZPYmr*(s6-F|epPOn|Z)vS}rdX?-a#d?(; zw~vz9Z^*5S>vXrDk=sAWah%_-8*J7qb{xBZkl{GLYcHoe4(nIo+X z#I0lObjM-6dfkuAah%`wlejOBt_$rrZr?G-cYb>uWsXPo5#V@q^_J6>(|_i_g!lE) zyI;HZ9M%JG%Rb0X zcbufpE%!z3K3wj1oaKn0b;5PuWUI&aZ3~C>z;)j%r@Q>oyQh@-y$6>QC!| z%RX67cX3(ATlcqey5l50?x)EHWSs6e%$IaOM8|P{x6h8#EywIn@n+eqsI$pZw7sN5}sh-}$Kr z;^wX|9EW}ahwG^x`wN^I_v@TC+m;%kW|m6 zT#nz1`yKRuxnY=}Hx5|&fuf%{-Eq*Fe>OIZ`{o$F^QZk0UQ*7V8(%*m?7!o5$65h~1c>U7+&2{xS;%A-z?)u*>^V$1rf#Y-+7oF=k_DjlfDt@{C zg5&t;T=(JE>(HF;IC{Ma$LT$}e#bvwN<_?C;P!(rbo>%V{IePQ1d$8mmF z4^DR+_E+k!IzH5M^A&T-eOOGta(>ru^?0P8yKz8u>e=ba$FDkZ>*{b^yEu;Xt4=<3 zb@E|fo80jW-}&8m#dyyAQ|}L;bG^@e5}o;~)0Gd0c@Z3R$8mnwaF$GeviCnNL>s?K1mqIZo2=D)-^y z{;K0Uf0|FqeqK&@9Ojd{ZV8sAcX81x`$?Jor>tN0 z?_*qYe)Pr;t&59!27cysm3%UM<#1l;Hy^oZnD2DP?bZ|CH{u^RAID)l@80&}3y1S@ zeCKDLS$F?*=XZRUzpFRZdpcj0{T7)w>b{4}Pr6%|`(rjAefh|IwW7!Qo9+{*?(wr_b$RA5CL#!k7!*b{mX}dP0Rw^%2Tu_$Le!5E1zJTYE{zC*AeUxr0SjmZ z)TV6^xkV^wX++wjX}SfKaLS+&_yla_8b-7l#dt?Sq6C~w?N#ep)P8q8XVotm{yCht z-}8LGd)@cmYp-IRnZJ8@+I)<|`g0z?uV;Mq+x6DqWPE$#Dn4kHPd62lK_c+XtJq~=< z8$1WI{7p9w@9XpTzD+j{@7eSB!A&;~`lhZkd7jzhq@VZo`FrB3*Z26z;XQl)KDg?>C{( zPWk&~`ukt@dsXs#SeC!(_PbsA`(Ip_am;VOXJ^0flfOem-28o+o^G7{-K8GK{P{aL zjU&G|WPbbIBGs?_%iVs=Umc&Tqj~<&?)RDVyF&9@J2c%m)=rFLe(Oi3D@T6c(0(r_ zfB%L0&EMbY>Bh0&>#=j}PvZQ4;vRc$KmPoE0d$LNx^eRN6ncE~+wXMP@7mb8_x3w1 zrW+^E!{@q;WB&ZT7&xXI=h)wcfo~kEU*ntKe%Hh5aW22NVtmt$W4~i!9P`_C<$3s& zbDn#Tp1&8+(~V>2|J!-mdA>Js^Bi(?JD1+h_s;X);h3%*Iak~`cD;GtJNcMy94j9? z7dp>*CT^ay-P4U@=W^Tmz#p>zC z$@8q>*tsQn4hjA|*Qlo($Igwh^N}pBo-ZWl0vX5hF~0hbJV%IfGftkjgFnxEX?mQq zfqv}yC;06=5IYye&Uwgl8yf$}b3E`HC(o(qKDWRA6=mND&+Uizg2T8oulnqIPk+|1 zuLON@>0j>lZB`vVIvjMqn?UEi13K?7(0Px5ZXDBl9Qfp89Q5>CIhfw#WI5x{ee$Vq z<2`r3UN)CKu6$2z`uaXM8h>|LzrQw}_w2m?&F|S$pS=H-@4LA!;~U3xI9WdUsTazJ z>oxsY4&{u0`9-r*{>yhfY*fzli`>_`_=0Daespq|SG|6yM>ttNsgpnY>~mPz>(77GQGE0B-Acway~kPp`F%(E z7zaK5i#W%Cax>jHv;X?8@*Pl?k8#u=-}|?GL^sarx}PffWP9LyF80~NH-CQb-~4fI zK+`Smo1a+n$$nw{h55hrx?dgUL-vQaxS}hk=9&GAd2qt-_;WmgGtq@ZJx<1-dR@se zzm9Kpop3CNc0Pa5ua3qaJKzTZdGgc8;F)$hrtU*IoHt26>`4{&g4bzC(+1A&hSvbn@x( z(@*(uy~mc1ak8ArhxW6+@_yyJRCLoSh{Y3G@b>BeCm$vlmt{yMK^`=LCuf6+d(ACc$kp1(Zm zkEZuHr{$-g>&^U4C(q=t4rHG#&9Cg1#&^R^w0%FT4+u#Y|OAB|)F`PFaRosSUDNlZ6R ze&0&@C?~$3#ZUg(4o%m%wSVRPqjBgj=||6gt^MN9Zcv^ZXZ>0`SKT;2_Nd)+>8LN| zbo_Z=24|uhr{NdB%MfaZk%REgyfD57%pY zmXC2LXZ+NA-oH@4wywzaJmo{4@M+JvE;_0GF4uL+>G-La7T5f>f8{!sxDyWTHrs=6 z=r6gRH@^9YdLGt4nUCo`PTubr2R;4F*LidVGG@!)u@WHPy_5ZyV}9F*kh;Z1r(bXXKEA)J z`-`|Q>-l+qogDOI$0e?paf9+Pj`=Bvd>)=U*OeS}>XC7Se2im$>NlTq^&I9fMO)!9Fg?;R%mj^8*F-8fZe|3kjNHjep^ z)-7(;*?*GdGvRmq#+m5GsXF_evOO5b{735+x9aQ%Ywecv%5wjC$8Vg8Zk)(-JMWF( zQ|G?=j-T>L&O|p()v1?!&u$#^AFW&5s?%i~@>ntDRnEzpDteJkq?eLDFV$NW4$XC2r$_4|nSJ}ByUyAB-hTbBKSw8Q2% zPSsmKiuZ%YG5^uJ#jQHyOui4D@H>9vOmyQ^y^X_BKE^Ts(YnR0I`dSkUw&7#?oV#- zTRVQ^OmyQ^o%KL#x3S)6d3OB9ndrueJoEjjak$>}AFW&5s#EXzesIF?_>D8sjZ<~n z?e@>n`%~kX|7hLfR-JyGbz&q`@spn<2TMkH%`@u^}_IcGw+v;WB#Lci(7T} zQDpf{_#MA-Cc1H|&OVcD55_V7(YnR0I{SHAyRGec!teNvGtrF`dFK6&amX|MN9z{1 z>eNf#4^H?Uzi}qIajH(c&HH8JnEz$&bZg=m;0UE@7nPjXQCUY>dXtR-NyXY^6dDHGtrF`dFJ}r zI9zY~kJc@2)v5QqznJhle&bAZ<5Zn?oA+PFG5^uJ#jQI1I?HFm@A!=~(T!7e#=UG0 z#xeiVy2VBBeAm$O?D>t8x^d8B-dR8Xk(UndC42h=*(ZZP_xYGUw1a`4e)Qbu)8m-` zSl!~H=RP9xNq*07oYakjp8Gn;$2jIcR=2q5x$lL1lHc6<)h#Z1 z?q4FGN!>W;xgU&tjAQ;|b&HFh`{l?d`8~gJQa4W1V}Bs|D98Lq>K3=@v0u04 z6a227Mf5M@nEzPa;-a%o z<9iU=Px5X$d{Q?KI`7>!zxKvaKE^RWdV3F2 z^GV&}qR)T*>AQ1WqkN2Ge%^0p`J`@f(Ko;TpGrR29*kpt-v4I%N!{Y2uYc-;B_G-? z?b$fy=lytcQn$G1?RvlWmv;O8Xos=iujeQKd_J7IanNZG>+}B2C?DgPpZaaj`RjG1 zZgJ6Rx0{Q@A(-YvV2lE4*H7mHrr2}$J_HWK4<$$ z-8ks$2R(Uw&TTDc;e#T+u zLCPm}i;KQG|2d=itH&{a&M$CMx47tBFXK<%$FUEG`H^{c{=9qdzTb)a$K0R8eI>ea z(A&D=r@wu7zPj*x{&t_vKC8+}-8ks9+r^t-H_FF2=0|V)&}u%ZTU_+EE{*arj``d3 znJAysEiO9i_G}NvF+b0*XeYG8)GaPL_eZqb9>@GVCrnQ278jlCT|E4sTr%vVCm-XO zpK{3kIjLJ*blSt>!JpoJFH_s0am-KswtZHWle)!4r`^u4|1G0@jAMTE?Vlq~>J}HB z@h8j2IOb=3$nr_u;-WL&PTEg>eh9zkXB^J}5TU>O?hw%qJ z<1#-oU$4LRUzGU^zj0DG4m#_KlgsW<<_qKZ{Isie9p~YsZX9&l?fm1<8|7mh^P@8l zl27Uu7oBx!mXC4F&$u)xpZfd|-QuEif0XSZ`8_}5cDBRRjnnjce?-5aoRuT~oY&x_ zZgHE=ea&sYyv$!+j`+!+aSTrC78kv>hi|^^#lw8s->akbF|Nxad63$?`Fd`P;Y@<&(O_Md$h9q&?KT=8<^IGGCZgJ6R4~zRhzRX`ej`>?VspCAH z)GaPL?RIwNKbQHd$1y+pqRxYGQn$G1j6YdE#xZ{zAEJCxx47s$A6rNJF^>5ehnWW{ zpVTcbI?n^Me;LR8Ilquk>J}HB>t+1m`3B#gvj2+tarTar@;gnr-;D2@a{pNB#z9~G z)~8=OtP9y!(DI4zWP5(T&&vIEsT-&1_51|(U67A*#6Rr!9Ih+(AEs_`(U*_D(~A$4 zk8#Y;_kCGDsast1lOMW$`F*`?55_S+-#=#iN!{Y2FYo&9@$bIz+&F#*u;=IdP}+a1 z_xN2o>uE|jAMT4H}}`2ZgJ6Rx9qzhALE!GoqdLI zQn$EGuj5aak8;G%_>kq3y2V9r<88K|`a3M}dw#~@Y(J?R2YvmC2akWJul6tFsQ<`w z5-cuyE1%f+m2sIL7r*!4%I`O@-=oJ#zH!iJ5BsY!f3dH?_&tBlgK$ze4m$0YeHT5B z`eR;eoX{;U`s~_!l=&;mhq%nMJwM|T>jd&i-8kr*`+r-Rzp_0T$NX)ak9L^4#YJCU z@2^Mm7uRJR^XEJWCv}U9&h_%%yvH$r%RlyyrEYQ2X+P{MARptHpZaB-hm*R+MW@}e z@1n;sKRWXuoYXBYI^$24k8#u=^IFR%bc>75c$@8qag6fs`P(=g?I(5Pps&9E?xXpO z>oSh{bAEx7y2VAOd>DVwGcNaQt9Sk8?svUo|DkbGHxByAuYR!1U%9`|IOeBaG0t;c zsasrh+HLMXG>-YvnFq-yb&HEW|B>^`{FUWn9P=|SP0AJ}HB^2z;U#xXznGmeo@>J}HB_K^GQjAMT4 zmvNqaQn$G1t=;DS!`cqv_xx~}2gxUO@y^v)QyAAx;@*2am>%So$WAn zi;K>E4gHJjGLHFkUW1dm#YN|Od2in1n4kO^$Ka%HanW1*iT!oPF+cUoI8Q#QTU_+k zZe#zUamc&Cm{wVvG zam=6d3+0o##YLxl7=O?+Zr-o4-vhsKQa27d_v5+0&N$|8?JD=z)%Re$UUio$WAn;-XWJxxdah=5O^I`|DD-xahRo$^JvyVdeMy zaB}})>c&B5JjwDgj``d8kmbYp6W5g-^5OYdwx8tp{EVO3eo{9MI?n^Me;LR8Ils`J zQ@6P2ln>(%=P@om_`o-u9lj6wn#aFt*zbm(=SHHRT=Jo-2LI;#*I%~pH{Cd#$C&3; z8pr(W*_FF|o^s~Z`}vq|96M*yIOZq+lb?C#<@@=}|K!Ej4COZe-5dSFzTVEi{bz4| z?Y_Re!!3S!@F&M~<<#?jIrox!G)|tMjDP*gdzO4QS8(pvQ#c%D3a@%}*{mKzP&IhLbP%jgIt*?nLoILNh$2Y%?d!`#F&-*1Gd)3Mjp^Jls7-4Oe5D7W7A@*W>Q`KN9i^!4NJ zSk8+(mXm(2mwi@nOt-ky%lgd^ALU~l^P{s5jeM-V@m=SnUsyX7-8d(4ZX5YnJMa0k z{Nbc-9P*sBlX_hfPW?_Z{giXom+2Olddc=T_PP3oTmAH~ zE^T@(pUow&y7Z8qey%t9rc;l};d*&aLO!M&hw|L~qxU^;KY!zxAD!n&G|`zto`(^m**su5BaBV9Q15&Jx=<$UY=uowgt#GTZO^mp@fU0FV+8;Aaw^<|u%Kg)T0Ke+oYHP%<{d3Zhl zlX~H~eXdVd-+JBd``_T8=RCsm!<0&EpCRWj<%pl>)j982Ia_(+ z&+9c^IkC^2dNdC8KB^CS~**J z;?L_fT{(4p$Z|Fg^`3sNE6c}p<1jvCeHo|cpUm%!hxHtlUirh%^|R@e+oYY>_K@p& z<8Zy{N1v?2>-doM!Z>!?{+RhIhjA&&lYW#O`frXKT$f$%M3=bq$E+{o_x!D#xAk{+ zd%tV%D^nlh4gP$tYdX)*lY@R*j`{PsF8QQxanaM?;qP+9&-*Ffo5M-n;-aU&$1#7tH;0qD#YInlk7IuF%ZK@z=VLr)NImcG($9J_ z^8D?(p5q=I{N$7R zu^jm3N2h(}{6$GC|&@>g9r zTyH)XHIDhMUZ}_9Q}65pZ`W((DY|m%bE-*s3WxSQ@z;KY&iKGOoOwKT);Z{`lUaxK zboj<${n_IXH~riCE&H)2`HSA;WS->DI82`C%v0#_nMZnhkHh+*$02U|DW6IHv41T2 z#>wkte$4Vm&+;7l$8g_~?ML-G&l)G&gK}!z^fM1;{-(n>&LmG;C)j$X=9%q>xD&m@ z$$C^yjhlYTA={7X@Qp+J+4`P4tSdI3ecdaD_OSWzRpmTF^yRy6Ui9_PUh;Fpe@9>a z#%wkGeet04UcRqyKJ>ZeJH7dRZeRYyzkTms{IfSL%b)18+g`BKpYc^Azv;#ypV=L6 zaunbEtsFjf-H2o5F#ns^?XLf(mygN;ewL5v#zCLG@!C=klv|Hu{wyCjsassi;p8Px z7?qE4%x~p<@`fKR--j`K7-F)h`rF~?1qG$e%AMKeulS6x3{l;xZ?ca3c&^{OE zJ!#ZmjAMTK(c(^DFv>^E=U*;Lxh>!Gg`;*z`Q-JgE}WCs+;mqje|GcHbs5L}cD<$> zXYtgRmiDmu>xYfX$2jJg9Lhkl*qlR9yeZ#r?4gKixB z*?&_fE;{*}PF(!PPY!wJ_?CLcg>O3fBnLh7ghM^T$Dca>JiGanZ@& zbmOEBXZhjZdd|?lw*M>rcJbS@-8lJ`w%Vwp;mlri?NJ=_w{rf&SC2TUTU_*$``=_YUz~mYQ5^MOz2nT^`Pwljbc>6= zy4jVx`Qy$v9+m%GIOae3z1J7c@}FLB#L0U9Og+A`)cgF7yWf2xpKK4N8wY)L#aqhy zWAU)_cIyObCq4h>NxxY*vll&Z#7W&aP5-(p3uklLUVvMi+AgdnosH$7oB=pe8Dpdr>oa?ySn`)=Zs5zSw6IXIK-X3ch~RMZ@=NL-*>Ld z{PfesORqoTq;7H186Q@kzV%TY^D}O*Z}HtDPU;pHoq1>Z(fc38F+bz>;-ZI+IH_A) zbmo`sKDol_>UG>+KlKskj7$5md>H@X5SMX&^?i3fC%@-s9yxj2H;y=|8wY*4e#h?L zNBc33`8SWhW4W(9x#_jzeiypMMcWL1I{^L^!z#BQSYf6 z2mRy*|EAQ_;@0;b#_OY@9t}szw%9GerbN=gl-)4^@X$Ddhg?JJ}1BD z&vhMnrfwYc&0{Ys>x}h7Zdv~9anv8{y2c6J;-atLc%$9A=kE6!=OY~RGcK{NBcIeQ zF8b=q$CY}Tzw4Vu`54FijN7d1$R~A+i#~t<+sZm){fWOBwIAb{pLuXq*LCERy2V9b zUh|3F`sY?p8|7mh^XEE^d{Vc#=&K*QsN}Q$q7RgE>T%Q`>$JuR-QuQxa@EUAUdM9G z&$=!-=oS~fmH!17mieN`QGcw{8Ygs%i%$ETedzgRKJ9VLPkUos2Pbuli%$QYef{T* z@-dG2>5r`I$R~A+i{8e!yZu>NANDxrXS`xv2Pbuli_Z8z|Lpmwe2ioMT&Iyw>J}HB z`E+yLr$_l1NByy`Yx#t3anV^ntnT+YqyEmk%(}7X&vhO7q;8z1zx9&QdaTPaf2@}p zCv=P3^jKdtJ>s_a{;}Vt`Hd60anN&Lknwwd+SRhI>)@nr9Q52b)#I3-e#g2FPU;pH zJ@<+AIOcETQeD@zTzIo{Ipxvb#PL*xajm>_AU1~=BHn?u7i`h#YJa)W8ZR*WBxYo z)pZ@5)GaQ08~^J*;U35Q%nPjR;G}MG(V0&dbsu$)V}9mM)^%`Fx47t=*zeurm_OHb za8kFp=($h0$5DT*ml`K@i;K?nvj2G|`jh5g78gDJJx==JWP3nAZMm_pY~9)aOrFMPza0A| z$S3)5%zv!jJAFo}Yb^>=VYH`&!A9{i3tFpB8`SW4dwB zPs>Sv*1__BiIJ9;p{NsaxEp*L~nebHWdYa?W}@eYx$v<6u86e8wMiuGjdCZ(Cn^ztiKG z|5%-T)F1n7$tU;C8V8+uB-^cV%+LJDzFhdM2WSuE$vm~F`&98K-*n@kpO%w;IC)*@ zww}@TUhE^~y3!BdbmFo&pAW&EGzvyw_;_ z>wabT{_gWGD$n!L8Lya^d-_^9^H*P6-g_;dFyFv`jwKj#thG2J-mt6Sf)l*h50 z^pijR5sv8=mvTG#flrR|F^>6dyfs}pw39!5b{U_!F5|Rz75*G=;h1im#q)RPILyEH z@=-p9=99PNH zI48gOH>3Ao_;VaaSAX2s@GS&%#OF;-aU&$1#7dL*S%tanaM?&t@A}+l4f^^GZ{IyHs`I#wC#P+x~OjAQj> z{GNYOU$KtL>&o>Kag$>@*Oi>s?_&L99QD`sImt(KmnQolc{$u@P z9QD`dIXsu3e(9(4YrgOo_xsE8FYocB;qUYJ-1K$(`u6^cs$+EHEYANw ze_;6cvpc=;D8BgzeaI&{!~6Mx&w1Be@9Zmn`Z*=;&2Idf;ZJnt>ntDR57#xs{r{tU z4snKhDSFh4mB0Ci@pjsWyuwE_ww?22L9ygEq@T*F>)%Rshul@<& zbm6Ri`!R(-Y5(Exg5E{kira%#C{ zKQa#WHSwRa{M+@$a~|RzTkpo9{PVeu@zrnbTy*2CZ~o*mKFs5}jrL#hukU^9mk;eH zpSPHPa+|AuZt!!?VQbHlzvW{b;^uv;anvvUk?|+{opD+@=l!zq%}+h%eQvvd{Q4V~ z`y|Sfd3N^6Ys>Q+bSnquo#pM$d&Ze<{oqGmeBc95+1KH0%VV*xbDzF^>%E__uk$?N zqA(x^Wm+57ql2j{2qDQqI|5jKlb!?Z-IgXFkgD)^z66$@qE7>*{f=9cKA( zz3FGXvUw_X-ex#jjqMf()ne%CFhneTl{)hIHx^h^r#{6p>*1ePKJ!QX8PR(aB z?;BtI?RukMTRWkBPUh3v4zoP9ep#2syi9+Y%%{RvztpeQmvI;eay&GS`K{gNx+UKy zW`DPJNb1HxPe1co>ODX6Y1UWj#z9X%`J~?S+x(TfanRFGKB@QoHvgt>9Q5>)PwG9t zjjO2}2R;4dlX}m8?0jJy^wV;B{v22Fqg&k6@l!rMPWoGU#`v7N#YIm)`J~?S)82Bu zm%4G#(@#FB_x$w7Tpy-x9Q5>)PwG8C<5jK?Q#THJ`pGBto}ckN*O{ps2R;4dlX}me z^BtVjjf0;4#);=w%^x~`)-(A$Ds|(ar{DNpKhN>vc@*oD+*hA*8~?N%@w1-E=US;- zT=eu)KB@QoZ5`El9&Q};({jwu`Z=Gsr*3i4(@*)N-t%+6V9(ppje~w#PS2n32l1m@ z+|=pC?pL|m9`nhkd-^(;k=*DS!_`4kObDy5?Yf`tk=;%5ltr;PvT z#%cO#IpWXxj_XR@;-aS?jy*R<=RFJiCTHi}<>!a@6zeCx;Jh=#`-<&8?BVa|+y^J0 z{SVuJSN0#zue)%^sr#u+H%{t2=RcNXey%q;=oUB2Vf*h(`M}x!`*ZG3%krW8+0WKE z^*sW5%SZNy!0GWDr}FXVbxrCw; zPGIRz54_~4?=O;XoPB-hx3l06oI%e#(YNiP-MNfZT7aVlsq>kVC=HI`rA%Ct5KlzY9dhfdMXFlj~;4^Nd zj-Nb-`C`a(GM;S5pFxMy;#M7w=`C(>nqKR-$M5>3oebmckU#TF<3v7I4ykXiv&)PwL0`&u&eJ^4Zsov#;;__w(7;d;Xz32Y-H-n!0h&(@#FB z_xwY9EBVBCtf?CZJ^kd9de1-f$5Ni1?_rIDep-(C`5y4lcv$kR) zPwG8?8z163#MF(0o__L4z2_gs^PwN*_ot~F2R;4dlln3KGm_7~Zk&C6-@l*FzTWc> zAg7)Q!XQqx2g`{q>yN9Dlg3)Qv-)llO_jH$U~e z`PT1y;(q@!-8j@E?_sGg^3;(<@R*ru)l(Ri9L?`xBYa;hkaj-Bf4?Wb6@Dt zPY?0cU&|-Yd#Bt|HxA{-e%f|j!Z-iWkB0pDy$Lv`D<{t1=y6)Rs{51i5B+G!XZ!bZ zPGe6u4*NaWkKN;#e<+$mW*zb}1(v4&Op`Vua_65(}tzY)mQHONnuy2I@{FIOJ z%|EOsOWcQl^X~WUYd)qMhkYQ~PmN=K^3U z#%c8!=e-->{PeFw=e?JF;&pXR6ojKHd>c&CO`#a`A<4pXl6ArBBOFp4n z+*WRJKS()G?l-Bg@Y7BX-R}(fq;7F(CwYITeA;c?Khlp5-4B-XiTgy0OMf|ZKX`~^ ze#V(B2h)wic#`*n#xZ{z&!e4~Zk#sW*6-`-U&`V8g77m>W&1bX;xZo{%P~Ls=lEl~ zamX|82aRKX>i5w7PHBg6pJ*KFG4BVBZ+`mMq5HuhpVW;*J3n+kc!*QTeYV?nzBscjZ}i;9viEdnpIgjgz`@_TrB6-+K;J%9-nBKU?Or z$2sWFeDIqNKjY#zJxAk83<)Ux@Eakb!DeWiynJ0eJ;Ty;F%m;q@X+L?r=07H% zGkfK;&)L_Fv#;;__wyWd_SqUAeJF>)f2f=f=|lPK$F+QnZ+`U5r>7str?t=ha_Di0 zOZ&I{O;5gYdU}^r_mNIGp&O^^=AY`NJab<(oM9ZU?Vp(uk-IjuYTi9bmLT=eob8RWW9$zf5h8%?-#b;4-Mta z|0sv_n{J%#{d(cg-n1O?na3x2#`>q1kJSrtvmPmjEKk#o!}Si&4@Tuy+imiD{z*Ak zPU^;)J?qa)IrDtJm78$P4}Vxs?Ozw=ko8FUpS=IFk>A>h={-)yH4b|Et-YCUocZ^C zRv8~A;}B=iC*@P$7iNDP>b>|6 zjH^Yjzt={49`ZcIAL?t+v)<7&|DK*4@;ubehq%dC|F%CK@(<(BA>BAbe>~UqPRhBK zTh{L|KMx%C=~2$6Q~t@Z_Fx?Iv(J!y@8n~;ajbr=+=g*)D2HsfRxhR-XBck>e)bpR z^!(Yc;iPUH^2~ZPj`=CiNqe(?UHfVJZML~$NcCS*TymG zm+w$0XE@o;O*anhihbrizWHhA?4O4-=x4WoNqyi9dd9VWY8>+q^*HePzF7i$O*anhobN$;eDmA&nr@syAIc~5ITz=U-^$tQcW8$LC)=~dHQhKvKN|SC z-Y`zjKN-j5zS}tDnd=SmNxu0h&zvtzr@!RRO@A{FZOlTxA|NJf39b2ePX(DxUV_?ugdohq-q?-lXdvXfBT&5 zqW$Y4ZeDM%eDZqXO!RvHmE}ymY};-5eI>5TIOad~^|Bu{%16ty-tSDVOE_))8P{d} zo##}ytDl9Z|%-w{OU`K zzWBh;{^;=E@eljihQG644*%x-JMa8o@g+~*_YeEo_W5v9Hx7FGdz|#cna6cCy*}64 zwukbaTGOw-$?o~ynWr7~{n{|j4AQ z>4%f;0X?q^e(LyV@BP72p7YoLk5Rp(ZXEQXi63gW#xeh~dOz+f%X^mjAAI-j_c3d~ zo4t3e8wY*Z54_*MK2vUoIp$wo@s{2D&KKW#^c_9x2F4Be>)*e}?)T%rK3=@wO>%bT~7GnP|mam^t>+kspDsy zIl23{mU9M7Hx4@EB;Tj>IOacA@5Pc&B59?5oV9P=|ju0Hx-M(v#S z0PTTtW1d?6#GRhC-)@uN%QHFfPs>R^oV+e{ThHivZ~HykaGi|jTvz(xn@-&2?LPU8 z{c=0Czpf9dmzGcHp0NJYx0UiY-8ksOxOA}H2EXSwPU=0*$@@N8@|oZ9!KL20uGEc#K8ypyb!GoG zj``=0di3r*iie#y>hHsNSjw$_r%#@<`~E`FXYYJ|Sw~wwrW*%6^Xzfb4@a-7mK*10 z;ODwlpZdemxdd4bEuT*Lz=3~SPWs`HC*_Y$JLFsrblSuE?Kdp<>*Sw)(~W~pIj?Si zNx4t$am-IWQZH~)x47u(?{U%(hjPw(JZ-r#jx9fW|5E<&QzuX3Gfr-OM{&%5tWG}a zuk+*jsgD@tGY{Q3=*%P8ZjEDp=F`>p-Fei`Sr5>zTKU&?%i`C6chqi^-^-Kv4i5a& za?%ecudC^?PHVcX_iP=Qx^bFbPpmAo*UP3U~%C2^RTYKPd>+T zh)cgX^!$0B-}7g^kWcEyK~H~=lYTha9?-LV;HQqC`6Zt}r*0f{=A%iwt?Os_J-=~M z?{Qeq z*TwV37Wc?=gov9Q^ej)~n;#uM<&RD~%;$KthkX8=e)35jesa($=Y0Nb9P?9;hn`23 z`^2cPRT!kJWo|S>H~cKi7E^-8ksX zBiU|~-}5t{=JRLP1GFpZk$EbgKW9F@xXFQkT2A`mQ>4%f`xUG-!zuX71{<)7n;LY3rvTaX%PrW!Z{QWx~ zIv>WV1Lx#4eeiAfO_lGpxBs{NZ{XB_52u|oQ}xmJ?0f#A8wWk}-{yIce~f>)zTw}K zSNZ#A%3+kxfw-+4hJSac90oo27g5f`{8{6UID6;YjCA8~^BH z$)9pg{;~eO>uu*1lya-(a1PF>94Mcy|5l~lvcKyy<+*DQRp0wg=kxd5Ir(fk2X(G@ z`{!!N6He1>J3;Sq!oTGlyspNNxLbbtAN#e4oBr*6+*P$*jmiPtIH}_|{yF^Rx`yv0 zhjQZ_o9+KCMQv@zj0DG4mxp%`=rt@ zYkx70`H$5tE;{wXcP?2z-Ie&eKW9CYI5_+uRNAFEqjbn0a?KG%9A&z|2nsT&8Ke!;vzeHq96 z$LbaroqjzjpW463v*$NX>c&B5T%}$pALE$+Sl!~H=e$5Z$?y4%le%%xiJSAz(7(=X zP1|x>4uA5$p&t!@-#(Wp`@mcNN9x8wAKLA}=R0oW_x#35-8kq&zZml2`*HFyj`@$( zEiU@dZV#4EpBDm+y1Q z$2jIcR=2q5tzPQ)@8pyGp5HjB8wZ_!v3>qi&Z!_Du=H%{utK__m`M??QQyESdwQ5grCzupI>e`x=M zzo#1qeQ37>XEJ{Uzvnkj>c&AI`o)k>&R@nc|FOEoMIYM#!Sabbdw%1jZXEQX{T!-y zpDZ zFPIk?4~=8~V|9y*-uiWxPwiji+4CDGb>pBju2L_Qk8#X@tZs49b6y~yN!>W; z#AV(=AIj&<_Ak80+?LS6_LHavtUK=P%!VhxWaXiE}oNJ6FUw=pC)+<$jo&E^I#KZ>LNIQNF@;(L6)N3gi) ztD9X}?%!8`al*IW(;P?D||IT*`OIi{0; za?smzy1M@9aeDsc#aBMPTt^)r$P?Y-qLU~4u`{3Kn4kKc|H+qKw4YDv78jj*+3uqm zonxbVJr9R{^5ma!O>c37gHFF=pMQ^I{?c&65Up}c@Ty(|<_H~nwam>#+zxb1H zD(9TQN!{Y2GcT|YzsE5@PNg?XHOlHc>w-qt_=&&zp_a8fr8I_+~&zqjpi z%uj!0oe3v(i;GVG&HD)Bq#q9B66;m+$$CGz%>&DQ%IZDO*!9Q%`QdZ+M>y0M{nt3? z>l@u>*Pd^6ZOqHvJ#Ju8gb8kH2sV z=W-u+EXVxZ4<-lQ;x?W7y8Dle?sK`W2}k^tXYYR5;-b?&=YMidc`n3tCBNry?X5mv zf|I&&(CP1+|N6M{9I3}KKmC#CQE*bXxaf?Bi|7A+d5+ZMn4j^A=TUG{x47u*I$zAc z>j%nnq#noojOV>|g2iomolln^dF*KYll-2a`L4H)G7frMKiuW5qxE6(dw$jftS2ew z)Q!{h-&`GBKPyN4xn3fl)Gcn)V|~^1h`V{!bIW>c{`b54n)##OQPyM4Z=BGLgTB6S zwkw~1{Rd_KGJemW>ohp28wY*!*vrcLXLh6SE$gu!NByy`Yn;$6F8cb7H!AroUhq%K z`lrV+KjYG}uIu2WZgJ69S3a(+$L4Q&$EbXaV}8bM)^+5Qy2VAGzyEE!_cafELs^gY zIOb;_T-J3RoYXBY`tq7j?ABwq`lH?NF4g-Q#-h3 z{jsiVoX{<9>a*XyZ&{BW%P~LewB(>$Ty)BR^O1E~kM%g}k9At(gl=)sX`h>?eZ>XC z^Nk+I{IoaLb#PL*xajoX^{;-stjBsB^V6?c*TG5M;-WLYEkA!b%Evh7XS`xvM?R@r zTy)0&lP`OJS&#KN=FfE+oYXBYI`irB(sz{gSdXLrSl2a9=oS~9^}}ZIw`D!n{jTJ{T$KD5kNKst9&3K%gl-)4 zlh@p|@Yi>HZCQ^Qzvri2ZR)xXPU^-%Up)1tW&N}H#+#P)Mvr5D`W@>!IH_A)^v#Dp zcbCs=uO8)N9P=|Sv92SZ)GaRh?6wz__1NO#r;hS5j`J}G$^V!$!_L+Rw z6Uut5$1y+i+Ptpo;G}MG(U$K#cTU_*3{^x(;h2?!(y$|KOl4E}Ag>@bI zq;7H1X`ibXzN)OpdK~l9ZdupCN!{Y2(|?y=^1QO%=yA+Xzh+$rCv}U9&iJK6EHjeq3H(A$_ zPwEyIeZ%_UfwwK^iS#(;&vhD{)GaRh$s2xjv>xkm)F11m#tGfxqPOd<>nq-44(~V5 zZg0mH_4i76{x*N?-xYoHg7ZhezrZ<=>(1{@7zcg*?uQiq>_ykUY#0y8C;2`9u#ctW zpTA2Ix^d8#kJ|l?$>!|qNBJbb>#yfh@_Q&;7w1f(8wY*!x-Tx*wYu|-N9AuE^K-5v zzn?-rS?}nazsm1!kWaP;(~X19d8&*0I~qNX`In#l$X5;ZK6}vv%kOc(N!{Y2w{ux9 zd)!eR^KTyh^Ch3;~noSuJn(TB@= zGdbuM7oF?ncOrTm^Haa;TU=c358$M3anY%l{JjIyX@~rNhs8CWxXD4M-|_n+J&yV5 zr;C?fzueEkN!{Y2Gd}Qp6FrXk8Ryrx`0i0Ysasrh<^_HqgnW!+e#ZI5MGqb2le)!4 zXI>b-``MqrRFB{LApeYOdW#zzbjEpp*Q3WVKl8}R+rDvBKB-$=^zG2Ro4-DN>!Ud4 zU%c$ruNcO$lbc>U>hGyrTy)Oe<@ZM@ALE#R^XdzCzx(#dyN&Wm-QuEiK5&jdrt`ZJ z{GJH;XI#^Xo1CV{@1b-#=KmLWE#<>`GK~|u#cew0IoIFU>vGIr>udGikB#Pc$_?G( zqEj#Yj#$el_&q=EZFTwk%DN6t>c&B*ee!#PJ&yV5*Q_()q;7H1>A!g&VVv~CVO(Op z+VY9^!*l7)`!Ct`$KSu}Is0SdME^Ao`sxS2c{l$2(A&<*@A;|U-Z*9)^!1y+Y&WjH zY&@cK5TlzV|4f*op^)~sWZgHD_=a-ax zHuwMi(fx&T#Ls;b_ao$!y2VX>{lhOV_i@K^%+LK`a?mYq(`)%Jp7+S{{1x|`JwN5y zyI(d=(`$QPzVXSU`78N7Kkbd@OO#LQ#zCjQZ=UeS<+)9dV}AN0&!ga^ZgJ5W4^JMt z`#shk$NY>}Jdc8ty2V9jzF1!R<>UH_=UqKN^F?o+U>tPj)6IYX$S9xW_x#Lvy>*mv z&{;pMZ}_QE|4M$(pX*8LD|O?buRrnKhu6=s&g}YQz0~pv-8kr!&$6zs&@)e-OD})= zKkU|Hzw%9Ge!*{?)Qy9__{r}n>#^m>-+WGf&rdr%sp~rOOx-x>tNVUUS^umba?7&b z=yA+XKV8*z9h}rHF8ccVZ`rL6?|!dQKE^RW&Pc{i;I5p`QKO8Kl68e(mweWr_?uDtF^>6jokl*XTU_+@N4|5n{<+oDM)?>={jpAK z`Gjt9o4$Nb$!GmVA1LdwF30?_PHUXdEpF;3SG~Nf$ByNgpLJSt&@FD$sjmwzEb~Q| zWBypzHBRUj7oGMw`_S{teA?rvKh|}P6S~Dkr~l5r{&U9p2*>>NN7i-Zle)!4Z{yqD z{;aGIdmQsKUa_u&le)!4XZ)Xk_IzAE^*$PY&(CE^mmkMc2&`I$Fa z*O5=^78jlM!|HyYGwScgF+b}H)^+5Qy2Wk!|9H}9J=W!jKi5leQn$EGkM&j4BQEd# z7oU1h$$xg?HDPrG7WN1mx02Yq(;Zz$`Z&7*Hn z)*C&J`RS*u>)@nranV;FK3npc-{hganTpg|DLk`nLXpHM)?@W z{EXYI>&Pc{i;KRz>jz6dn~z;LYCpy?Kl2*vI`T=~;-atL_bp}pbMlfWjPfy#`E#8{ zKB-$=^v!QQvE(y*b<@ks_hganTvy z7I*rBQ9i~oe;cprx{iEOx47tS{Qv8Rjq)*$`5Dhy*O5=^78jlQbn$05AGK%Wn4fu* zbshPnZgJ6BKP=z#g`@s%9P{TojeJtKxacRheEDcS*5jx@)=P~Oy2VB3dRbq!_n38G zWu7y`^X+wIli_~`5#%=0Rf)9SarM@xQk;ImIM&mT+vv3|~z z%zV&|gHE1#UM2Y?$Nbbwo>!T=#YLwc51kh`^!L34ZvrE$#P z`ca%$nYzVAXMD)>290BW#_h>@m33b|y2V9jewmzCDID`NZs&QGsasrh=AA?5RhIVi zofnt$BAUOB+b2(X*619qjN95zeeX%0#zAMC&+{si-}5u?PZl`VhbPR}|s1moP@x^EMH&(C{O&bxz?x^d9kKD`6ypsamuX1A?^Vj_I93kop-QuECU%5^& zj`?Y~dCpSm78jlNoaa><$NcoiJclZEi;GVGWj)#2A>RkZIyU`q7{^$zHcr$#&!u@z zK8y1zsTbO9<3xKl4tjf@ALmsjzvri37-z^Qb>pD7_Z@LwrE$zp{r1Lri;K>CCC)YC zx{}}X=R5@`b>pD(-i>pOdK~i~yKb?#=)522TqE*He$SulE;y+hr|I>*ZJt-D9P#J6 zlzdXRxJ|F`+4H&<7ahwnKlf|NLASU~r~Ko*O0H|d5kKYGyI;1r zO|S3AIoF8mN`BAZ+FP7gnYwY%>A#$7L_WqbKmC#CQE*bXxaf?BoNLtMn4fWPQ=dn{ zN!{Y2Gydm!mBukY<9TnLU~$ozPxHLWyPzP%O`Z>pttg=>nrrkvptut@8$EnO5>z%9Q5`)KhCQ(j`?Yao4T&! zx>C2e=)CXXT%#Vx{Pa7{A%~N?#YN|R5a$~8IObT%4^xXro_ zPU;pHo%e~HYt-YIKi73|Qn$G1yl3ZJqaH{7%=`5m^2Q0>;x@g$XV3F0H^wo4tkYUP zp-qB?sN&Hl6qEabD%7Ue|smgcTU>P7C+8aVIO>meUE_pq zanb3&oNLtMn4f;lx(-h278jlIjdP899P=~ov95!Yy2V9j{O4Sw9>@I53#{wlq;7H1 znIAdVsK+rs^Cs&$IH_A)bl$V)d6mX7e_IdKbshPnZgHDl-?OtG>vF`O>m@j;Tim9{ z`l{&>H{bi`d6kqK>$JuRzH!jm*OBK{Cco#WUFCU|sT&8q?R$yyDve`)`W@>!$|rS; zi_X5FO`KP09P=|Sv92SZ)GaPL`=%!6Ro3ru;P?ED+pO!zCw1eXv#)F&=T#cV{LE{t z>&Pc{i;K>_yF9PbIOflF8u_Gdanac)ndem+NByx*Yx#t3aZ}IpC)XX0`B|rBKIj$~ zy_J8QS4lp}QGcw{T0Ws$Ty)xJo>xhIaUN#RPkUosM?R?=2c7<&=T#cV{PaiGb>x$} z#YJa)%kwIYV}8ax)^+5Qy2V9j{GXgxS;s^8JwM|)>pJpD-8ksXr+Hqbam>$r$GVPu zQn$G1>>FIfd6mX7KkEV3b>x$}#YJbIBB} zbH32#zHfTkpwDi3hq7OP{qldZ+qYl+!|$z^eF?uYJGX9}s;{1~`#y8=ci(vw$Nby! zE&qP@rsaq;(JgM(hkY``buE7K(MNI2kACw0%SN1uZgH!=`Sx!w-;+$rr{>xC9Y5!( zW%*2W<5Yd|>KB!KvOO5b{PRb=t#DS^ep0u%RbSra4ZHHG=P_<*pTaT!>{)+)kTcOO zZsa-p$;a&Wb=Q21L;0ki@@c=z9oN-#i(7Tt&+LQm+wFVraLiBrF3x+>h%?bGZq;f3 zo7cbMD31BjS6_U)5oe-X+^RF4Ov=aFulst@hItOi^$NWS4 zAC*JRXQEr&st^5T;ADF+j`@fFHE<^FCv}Tk^`XC%@}b>Q&cZSO(2ovrCc4FqJahap z4&{@6%BPJpaa~QfxK*b;OvdM0KFKjZ^?PW1F6G9&W^t=dzsUJ(!teOuwE2bdsr{nq z#;H2v&!l{WV}8bmET4&PajVXFo9)3k=4X6v^-KBGakc3dx9Y=s?@+&(@H_s={8ICo z=*EdWbNpc*+_t0TneDie_h0jq|M%%dryREJfB5_Md$HZ`I+2SD=zS$$3K~07&o@-#?lUA-kHRWJahbE9&CA5Kl6L~+x&ZA z{5iWnuNkN6tY;?UGwTHS9skh&hqyU^O?2Z_edrg36Z4mG%#YsYDcVovH{Ie^edsSk zK9lkhj`@f7f2e#Wy2Y(J_Y2t`jAQ^t9vGiXyF$0PRi|I%{59cs{EfprMfuQw z(T!7e#-B;~2*>&IR-N%S+kx0FA|;SKI>=RxvVqMo4@{kD0=gM@2z&?4z8d_EALVAcarj+J_7U~?<{!q5GkfaZaiZ1(u(xAHgLIQcuIc;8hGvSM${c@aJNIs@pIas-|e};40;IprZ^X1To zar;m?n{FKTeQoM_dOg1RPuqTs!#+388zdj&o8Q_$I_Ie-pZBEbt-k7cr#+oKlS6yR zc5Zz0)807mlzdD#j`c@thuW^(p<#c%a! zx^Y@Nujd>0_~y6rG2J+f1DyX%KE^S>l{4jVXdWNNE1rW9mwL(dfa#Qfa%ku4n3s)X ze)?nHFPLr|`Xl@2xn4NAo^SrRuW9^TPu6)V?-P|%=hM8;Qhv`L<=i-_8>i~*=cjyn zob$n z!oF_uY5r(GjQ>36nfRj~8z*$*FpjaWyT>=bUROO&KF34K?a=+mp>eX+OWX$;hkWw> z!Z_w{o5vt$nWzdIlDf<`iiLxAq{0IM`az3ORhxcN~ za?B4u+XL?@GXJ5R4_)tRudBz&{?g;8-|B_9+1|L`EQem)EPvzhUMBsSfT+Z2L=l-&gzNP!5CM-n&J=W?hu?SL()LK1%cSN_`zv;#&fFFC;3#q>Ex3f^vn}ZtH;Pcb^OUUow&(C zH%{}%bC1-C+w>@()QQ`4;|FKRbLeOJUMY3*8Opi%>w8tx$tOAJ#u@V8=i^VExXCx& zIOxV9?jqki$NOC3;^+O5>BPlv{N#`)-#x)eJ>$YR-8kr(CmiY#KK|74Tb`*K2R;4p ziA%ZRPd)wQZ@O_(PY!t=n!kp2j-GLO-()&*jnDNahk8VZlR9yeZ@O{Njnm>D7@te| z#CX;GG4G^K+@>2pI4#cu^H<5I>XbwBO(!4Y8>iJ{cnk& z)MM(zZMyM;Gvs;ZKtCGFv*=O31OGI-ahe|a7{BW`PUyyIqS3y943FpPdKKNPx_mFpniw)KegXDppC?pL|m9`B(qwG5>zZ zXK~BFec66KsT&79{p6E+&p-R)f4E}EXMNE%Wt@hSx^d9c-{YA7w<`H;o^s~Z`}w499Q5>)PwG8?%m0FRT)v-A>c&A&Kl!BI^HYx} zPkQ@n_wz~JIOypopVWJP+W+h?F1lhrpVWc&A&Kl!BI^E3Z$zUq3fAC*s?m(h)b zep-(Cm!JHsUp~7XpR;^Yx47u(r+iZH`RDh3;v0v2ChaG5)PwGAY>VEGn z`7C1oO5Hf<=_jAmd;ayeURUy&%)PwG8?8z18SB6Z`Sr=NUM@A(-gC-+}!x^d9Wzy7tqEcXk`2mQgtXSVY|^IviPFO_*}cJ`8y z&i(%O{p-HYx`lFU9Q^ToVEz0{cl>Ypn(`a~zv-6$T=LZGBA>{A{YUpH z^p;O>X4k*s-wow558XKGzwza-8_GZHWnJ~zJ0Db@S5R*AFTHK?&;R1F&)=_?73bm9 z`$7Ds_c-%EeDzNr;-{{hJAKwJ&!~6uNzO|AjUVk34)Y_|tM{!^o>tDrY4@QqPZ>x3 zwH+>A`pcvGrTwIC9PUGz2U|G^U;TA_$o5A6O5HfzhcXYge1vcQ*59L@n{J$TA6n-@ z@-dG2ZM-twINXQkd}kc<+c>=XvJaH+qL){H$FoQM_a)CL=Vh(`$G1Iqq<{JYKR5h+ zzW)2sIKML8ICcD)^lRgY-^NMP83!`1jT^=>Km9t#=gno0`;TXba?5e@iiZ?E%X$8q zC;nRT$9QP^N;oH1KWN8^@o@PU|FYaK%tK%O(bI~a`P;l^x^k|)b{9A1Q{&9dfBh@o zT*@cr)4A!wS^wHsl=7KeuW-!2xaZ&P@`-+7x^b+&jAQ=U=Y3OYSJ|&kH;%O{YtPm` z@#p+&x^Y^bG0q#u{FHyrQ*E4&e$m=ztXG?!?NHW}%^#fEC%=BzFS5T2$Nbi>^?GZ+ z$n`_sceipYb-^ zgXzYx=OM;1zqLba&*r!B!F1!~^Df$$^lN6TWfC@y<}WI zjC-lq@omDX>w$@G9Pzhy8}(@QW#!h!f%?9H@>jjiFIm5>oPYhYalOa;2>9k_9N>Kc ze$$OZ{jT2rgQI+mV}8aH-sh5!>Bed8=Y97blF zo*bUfWIo1Me|?Uf*9#}(@|-8bLP0Ws?RxdUQoS0=S+^}Zyfd4=cPGs^87P(<<$2qIgS~} z#$o*V{6}?(+s6M`Zy3k?_P)k+<9aqsQXT}-y>@PjtIIZ03xZ34VU*YF^8PDOE zZgF$`?{augSI5=nk97-rjt@^L54!QqPd(Cq;aGdf`2v5= zFHMhe5546X?UOw1dQ&%!<}dZ4{+I{JKj$xW<<$3*%)j_syRGlR(cAbI`^~5?p0DCJ zT{*UYo^?gtchUIbr~KKEfuDNJ_KD7W!{(3u59o|5n7_B~%Ke1+ z*}s=@vtM&vsT+qp+27LRo1gm4aaDEszOR*k?1MFq`DwS4d585<%ooO?eX>8Qm5*@L z&$touW*av`HxB)m{bMa3;hVpWOEF)!a<1>+8^2yJ`!vwoyi?!5_jKwdIg|tYJiDBF zz3FE?lk=nL7MFP;^Hfe6%%=l#h# zD)yUkU98*L=hk%N#6CLw?LAKRFTNj%_Ro8z>|gWPj|89R|C4%;{Z9CK4>DQ*)O}Dn zUhzDCGOkKKTyORZ?Wd9_@8c%dCF@w@8;AD-$F7sR{#f_6d_p%4?|F0HG>-XsFQ4qFz4-}>>J7TvvJIC;|A+7-j7gjj7z+KO#RsBkj5eZyl=vveDhN;nLp!C&V%Ta=Vo<3 z_9P$Cjl+1wd!klu!ZAPnIBg~s*XkvnvsruNdh_{}>Bg~kZXENs>y7s*rW=R#)nq)Z{UzrG<`?#*&`xaJ zHr+VPYwQo{@y*}HhbSM@jnn4+IM2a2=4U*~_G7wnSkJI8h4L|u`K|q%ZXDKoyk90C z<&cJn^sZ{@~)DeeCtcZ#w%(lY`Fl5S~Bx zIO_kqe^K(Ge>G0%78jl8C&zNsU(09p$h(yNnJu5tEiQVy-ufQ1$1(q$`u>jq*v| z;-XWJyx%7uL{PoEpF3!j#}q^@==cX=imQ3yYs%Xd_uRlP3JjtT_=!F z@_YW(v%ax>*Prbtb>pDt{RsIO$NcNxIj`h1=@+3}Ty)-d9Lq63`RDkPy2V9r*IVbW zEFbtif2-d*e!@xJIOsfY&+*nc=5Ou)PLCar&$az;s%~+cPJgNEH?AxBJ%1Y?vV0hq za^8u!jUW5R$miq>FD~B$=KPiOHU9OFeSh&&zorv6Iq11Q>2cKmz4s~kO!`IW78gC& zfh`~5sK1s^jz5$ey2V9r*PHWK@O%DNzcD_iZX9&#G3PJin4fi5&R?lpTy*@4n7`2B z_x#JByjl4!dlTi8x^d9CKg#kkj``QKdzE}>C#@ZZZgJ7ueO9&~;i&&!=aqaW{VQ~f zi=Ov!?Ye}c{+j<}{0ZISqPOdf`HS+0-}ATnjqy2k=%%ntQQ;`{c-PpzaH1~dcI!gectE&K3?w^MdxwH4fC+RW90oS%%ksvVIEzd`1%le ze4_KX^<`+Kb6bG^jpTf*yS?UuR5UtJ$Jj~+Md6XxOdIee~{ z)IPE66W(9K=T?dPMCNhF4fF7R^uO*CyFNTVr7BPS|9yNC=5faj^Te+=;q#8fuPd^D zQtQL_x8U$A|IhhE=W+Xld3gSW>(b$T;`WJKAD-v6bJhPp|2|UKCpwQiZkUJl;d8E} z_K8~`ULT^5Pjnu4+%ONXC(*|zZlAdI;q|k2^!bzU`W)tQ#|`uF`W)^D2#-&6|0LHZ zyuV!Ya}k-x?GxtV{pf$)Cw6^!9HOs3k$K#4!#wfvN%(yEn#U($|D@K3?{9eh4Esdq zar=aMcs_*J$)xs)TOXe1!`Ei{Kdxb98er!aQ8>y5{{WW}n#g3D*g)`MHS9K%=&PB=9%(=h z@IDpxiO%Ep3G;A$Ec*Txw@=*qaQ*O_pNoX+hhZLf+%ON<1H=08bw&42YJKAQN8Z1p z^SFJ&Jn`#|ynn^*6SqEmf5Yo%_`0I=xZ{R-xE>gNy^Y%^Zhd(EN8i7q^SI+C&J%uK zqVHd^`^2mduMgKeJ_*+k!#wV|iSwBIe#3pR;XawLK5icFca46I|8LjF?Gv4c^NF3u z{Qa+gy*_TA$UO0U;^uLGukGKikJ~3QPduNvdCcF-i~c>k#C_t{$IQchhSBFwbe{OR z?f-b6OgNwDK8f>xyHCve=<_z5XLKHS+%S)>5Br4sBEo%QVSU^@?tYSgyFPB8=scWH z+&u1nn18!IZlCBpoKM_5?mnM?yFPB8=scWH+&udH4Bz*EyFPB8@O=;WSBLY7&ckuT zJbHg!bRM@)bpCJmiCZ6@|Izad^SI+i=V5)=Cp>Q9@6m+yar5wfiQfPGZ`a4|6P<_i ziJOP#ZS?-|f4e?zpXfZCPux8GTu1Mp|F`So_KD8J`NYk`^EN#H!}tB)u8-TNV9dX_ zADxHehWk0g^DS;3zOLv#Vg7ITiCrJ__XXmf&(VDn&nIS|=-;0T>tp8$zlTJhKmU4t z+&+dHqTFy23o}xY2py`kW>H z@BjZa+y|2I`E_{w6R-ay+)p(;VSTuM7(QQ)o5$@F=HYr*_wyWMFNgDq?w{29aDC>Q z$0yu>7N6fMCWn) zgn76g81DZ`YM;3E;rW?(|5EhlE8)K1xZ@_y!_Qa3{ZZk3qWdScKJoP-`uN1X??jH9 zxPSQfiz4qw;d8Wb|5aEYJ}-+tp4Z$*7apI;eQ|O7gn76>;hOian0;c`NAC{|=M$O7 z9XHIw{TSE$e8ub&yFTIkqpv^VaSQXfY-ba$!CvJWCoIU#f6`jW&H_XH5>Cwk0ZlAdI z;r@#7JPBV{bRKuyFc0@9MBl&S_K95|y+1Jgd`0GQ#|`svKgKmbUorc{u1~m6BfP&v zAD=LfJ8qaKe!Y?RukiRp_laAd`2CH%K1b(q#|`uFe2Bi@#_bcgK0ME(?_be*+;PJ^ ztPl71hQ~R~!~RLFPkeodJU-ER+&*C*UQeQrPuM4XPJPY#@c&5+&)bC8&+z$j_`1UD zbC}2N6XxOdIefmH)IPE6qxTtx^Nh^njvMCT{V06CoOnJl`^2sfk59ONDV$Ga9(UX@ zPyBilK3`5epO}5()`#zJ;^(9Z=M$aB9XHIw^Cx`19L^_hpSbnm`5!)C4*NvsamNkw zus(dgoYX#X>%;3q^zn(#*9_Z=Hc}=+#eMl zpXmNcu8-bl7|tg$kJ~5A!~4-SKVLEX#I6sIL%5GOoKIvPcib>fe0&n_kGkgZN!UNB z_2K&)UO&S=(RtiHVIH0j;r^(k_K91c_&iUzzc=g?oyQ$F%)|O{e{WLz#H|mn57Eab zI*&VUn1|Ps=;IUqd>8f)>%;Y;==yN|FuYHNuPZu_+b7J!^{#8)zasb7CAmI&pJ8}D zN9J++gn76gc+JmO%s#Q}!}&+wzasOv0+@S2~C$o+?L#|`svJ@9|sCvJV>`A6QrqVu@p zhI!)G8+reV+b3>)c>aXf&+vK}oyQ$F%oDE%M*h4Iw@=*q@ca+=_lEO{&f|`oI1ktH z67KI!a-W#>;q~E~$0yTE zkJ~?~_2GTV5^aqAPmkCD#{qVu@phIw>-_`0I=q}C@s&%?j_5&nFU z@O~G4--+8lZlCbyzH9bL`1ka}Je+^{b6@oRD>_g7x+438d31f;{zJY`&V=xw@;Wy*N5{7^Kd;Ux<1Uq z`tbS?uB*h&{JIk6ar-3B|Ls08>%;dkTsH_`S9BhC+%S)>PimjI_2Ky+z1|X? z#~nA!qwB-@MCVDZ53di=$0s_E+b7JU>%;j(=Si&(?<3cIUXbv*8s>5Pg!#YSCw6_p z`^YsvUy*s-aTDi}_2KbZ9+@Y(K0FT5&kG{+xP21mk@bn^6PYKqK74YJ9=A{8 zJhDFVd?NFt)`#zV^z}J9kJ~5AqwB-@MCVDZ56|=H`&V=xw@;Wy*N5|o&XZanuAf}< z_#}Le7UpsLg!#YSCvJVXP8Hs#!q*j@#~nA!qwAB}CvJVXju)Q)VV~$c?zmwdU7yrG zaqAP$GxGiwoyQ$F%%khW`9$YQtqeaQ|pdMB0{@+Er z6V_Z^`PV=H{Bu1g!zG=9ukLtWr{**`qtkJEoYWaP6OQRDoE3lS?3@FC=vKa@VU+b&?m|<-!)3@{0hvf@hpBrG2zJnX#GkqsF!6&*IH^)c1CAY!{`YvvR_w?O- z58l@IaXZY`_j3o#(jB=Irt2=;6;t$s+#Qp24}KW0=$`y2Cg|S$7{=B8F+H9q;8FcDzk-ML zYdi_v_3JzZUG+4cj!t?e&q4?NCeKDY{T9ECd-S{f9@^-+`~h0&dHfNY>-qc%n&<`m z85-$@ya)~S68-{p^-^Aj+Il&EjhcD|uS7Myn%AI;UdQWEQE%i;D6cp3cPOK`@DC`Z zxAIRYp||mN6xBQV7ZldJ_%{^Ld-!+c)BAWoa_fWq2Xg4c{3o*NqkIgR^a(zR^!hZP zK^lFI&m*P2$d`~zU*W%So&JZfzF_?Q_doyqm#@cVot#tPf=Vq=i$8AtMl^>*sTk4A^fU~@Qv7^i*a%MtV{Au_)(YUoAJFa z%jNK`uE4iogRaDtu~t{*Td_)4=NkA%*W%mom9E3L<4awS>tnHQ$amm#-I(vhr@ARO z!^gS>x5S6KHQ$Bzbz8n0@92B^KFrbW`F^~iAK;Fdp*wRIOx4}^K}^;UaSyzzAK{*u zsC#j5jMII%FJ9FBxIaeefjkJ$=^;E6BlQ#fB!=tZJOWSXk^BsX=;!!(4Ai4|H2Ucm z`6cwx<9IxJ>52R@9?`GzYj{Xc=GW0pPvvRotY`2{JfPp;H_=|t;kR(Feuv*hTm3%I zMQi;b&qE9SG0#U+{V6X%WBoZVL_@upm!O{hl9!^6{)(5Qmi~rUpt@egt5H?2<#ni} zH}FPO(BJZAl-1w!7L?XM@>Z18Kl3&e(>r)4is)Z?7Ygd#ya)O9Ufzd1`T!q9PJM_E zBbz?LN0C_{=M%`FPw{D_)o1w}Qt1nP5y|yszJmYizxki5c;mnBzh=0ilW}rf)G0X? z&gnFq7N>Q3&VUm-6KBRzot3lUu+G6baZu;xJlLo6aenO41-Kw~>B3wDJ9SYmhHbh8 zm&8_Gic4dQF2iN9S(oPu*r+RVC9Km`xGGlbYFr&FbWN^><+?W4!BSn9>tTs*zzwlb zH{!-vpqp@0%-7Ai1?K5i+!}Lr8*Ynt^*wwq-qP*3J>JwE_yNq+owzfm>8{)juj}so z5MI*{^CNg!Kgzu@UO&ct@REL<`(d;mzytBT9?V1Vj2^~MV1#~(hvP~8G>^nk{VYF+ zLHY$Ah5mXBzlgqiERREPJ%J~pr+$TBMGrlRC*wgqg{Pv6p3XDSQP1KxaKE0-b8w%2 zo8Q6R`aOOhcj*uKL$uT%@yBSUKjBYtr~ZsT#~peRFGhX+1%HX#^)mhnx9P9>8`RJ% zc@=KeYj`ax>-D?=x9Cm$Ez0Td_ zR{;EV#qa-|43~5YPKon6HK)NDosQGvq|V5ha7<_6toT!B=N$M$=i=Phuk&&~{H|}{ z0{BfA;==ev-^fL=T^HvP_(|WyrSOBknakiiU5?9RlfH#3V!f`+Rj@|i%GIz^*WjA? zTHnUCu}t62b@7F+&ke9h-@%RWnZA>o;1k`9o8u$hl3U>eeHXXEd-`s^2XE{9xE*He z`?&*V>5kk9({&f_iYfX*?v6>i2S1EgbWeU16LfEW3}ba)ejH$m)@Th*7U%|urHJ*g-`gNXy zu6i0zM<+d#XQ6|BlV_uyev9A6J^EdK4{h{Z{s67?JpKsH^?d#WP4oi(42|?cUW5jE z34ejQdMPhMZM~eoMoqnfSE8C;&1+CaujBQos5kN^l-Ha2JCxB|_y?5ITlpuH(A#)B zit3&G3kvI9{2L1BJ^VZJ>3zH(x%EN*13C0z{u5dCQ9g!D`UIaudVQMDAdNo9=aEuh z&x>a?5=r*sC+h~qjlXTcGjjkDvB z&dIrOK47{5&*>pN6eIN${3M3!;XDFQ=#l&khUn+`c?{H}cr^Oy7x^Xh(c^eLdg+P$ zG9J;d@@sfVPv+OrO;6=%=&Wb(Ogy09;5X4;&*8UluYQN$MO*zo&qZtfAq}6Bn98&2Ed=bg@Wxj&{>c9D)tGL*AU2-#A(aAVDF6xw=3g>hhPK(nzJ!ilP zoryE!sLsmSa9HQyoH(d+a~|x|`8YrJ=mK02yL4eLf}Of37sEDPf=gnnF2$v>MVH~S z*sRNQ1#Hw6xf0gtDqIz-bv3Sz6}l$Z!g5`k>tLy_%k{8CH{ga?s2g!(EYMB3Ddy|u z+ye7-D{hUsx(&C*yZRo!7jNly+#YZ04*URS>Q3Al({xwvhSzm>eh9DWhxrk_tRLlG z7_T4WK6pt#&iyc258#1#UJvFWct#K7Con=k#l!KWews&OsD758!yx?vk3xSvhF?Tq zJ(kCzx1PWg(Nn*|ucC*Z#FO!$p2AbnMNj7$=%{D$8@ON3<~g`ezs>L9Zv7s=kGu2- z{2^NEkN9IW)1UCCxKn?|pW_a_h!>;2{(`^6?Rpu1h1>Mk{0(a8mAneK>NUI;mGyew zfLrt?{ubr*clKa@VU+derHkRqzxh}rY z^|=8S={vX)KGSz{6MUkZadUj6TXHLWpzq=~cu(KW_uy@PAGgD7eLr`=EZvbiVY=?Z zT`@&J$lWnX_uz-|itfpeVuJ3?k72Ct%a3D>?#~18f*!z8;e9@FD_0v^>b^DB5*zs8f$UBAv#&{a?4>FA_q@+@@F zZ}M!k({J(HxJSRs@1c#J%O9YXp2r`dxt`CTpow071Mk2Xr3Ji@iEO z-+#|%9-|7l{3pVIVTp4S1RlXIgbak$Q zZ*(ob4PWUxd^^6>^|(G3>xO&>KG%);PJF7Hax;9aTX0K!s9W=0cwe{WyYY^`m+!+I z-Jb8q8~Oq6h#9&wcfnNMjUU8h{Sf!StNIb{iHW)w_r^Hghx_71-H-cYlpe@~@SGmP zLorf6!B1ki9?m21gdWMyV2FN>pT|Hwim!gW+)uyAFQJbf$K%mUPvn>Jh<=q{!$W#9 zzm9HtDo;aaJ%eZB0sRKQiS~L9zlD4CJNz!%>i2mrTI&ya9$M&+c|MxzPk8|v>(6;1 z8tTQo1oiZnycBixSG*jx^f$Z$)%7Y~jjDPruR|rhfj6Rp{+2hRtp1+2ptSyxx1yx} znYW>s-oZOjME}aWP*CsYJ;<;3@;>Cz2lyaz>O*`O+4K=Uip=^rpFjqEiccf0KFjBj zN?+iMNUksQ75rEK&Hr4*2mIHiGQ$;}jFaP{PRXfoPN(6tIIYuj2At5DI5Upwteg#p zbq>yngE}|o!9Jaj^J9-Lzy+~O7v>_^sf%(kY||yUB(~~OTpC++87_;>x;$6FMqQCB zVV$nRRk2!E4(4@-0dZit1t5jVyH-GrNBzHZJfFi*GQ)|ji? za9g~q@8Ns#mTt%G@uu#;4`8P5#GNrscjaz)U3ce)@S1*@AHmD|QSOED`Z4Z<^J^e}z`BlJ@|98c<}c_fDFXZbk{(l78R^w(qfMfBBUc^rD{2|N)! z^(*`;dgw_!84v0yJQZE^be@5ZdKSNd`}J&|gZuQ`{0{Ec@A3P%OMk#0qNVPG3x6t_)FZbm+@D)O@GbbpoU(_t8lAc!)sAlujdW8MQ`G7QBHry z-{WTe1OJGd^iTXVitFvX12^hl_*WFtzwvI|pnvDR$gB7B0p!wu@F8T^fASGz(Z~2W zGU}6j3hDG2K8w`)JYPTxeTgsQdi@vwjjK2J{3o^F1@PB7zyEVGT+%5xCC=;AoCarf zI!=$1IwNPoF`b38;!mBObKno1i*sYY&dd4myS{-7;5S`}3*#4kBNxSXU7SncCw&u_ z!VmgpE`#rMIWCV)`WCK;^|~@w!5V!lSHntOgKOezeH+)tGJQMO#TU9hH^3r&2RFiJ z`c7_wPjoYGj*oOpZiNr@UEBum>AU$Jyshu!c9^a2=MI>qJ8~yX*Il?PrsxN`J0|HK z{4ie8J^4{g(7pLFjMaVlag5RZc>rF}gLp8W)kAq0p4LzDQ&-U=uFfz_Kf}*ruzsFj zzyLj($KY}O5|71WdOT0Sqxxlj1rO`jcoMqn*Le!M>S;V3o%Bqeg%0{no{e_;Eq)vK z=y&-&w9#|<1GLif_#-se^Z64r(F^!9G|~%s5gOY3iHT4Q!iE4T^ zuR#^Pj@P52-pHF!UT@~_P)2XzA5cnf<)2VOZ{zJKs(11)D6Dt!Zz!Pm@bAc{_wjz@ z)(80yFCm$}!hhj9{SRNgvG4D*e*fp| zaakwl6u6*MacZ2^X*nHE=?t6^$8~1Tf+IQ`XU8F(lXKyK&ck`JSLf#&uv-`8Likk| z;Ty3-7vtjiS(oIS@S`rxH{*L$ZG1-qH8+eVC)$^Zj^3KfoO^ zLwDvbn5w(+gP5!z;vRTaKf*mRQTO8B7^nMiU%aUMaes``19=dh(?fVDM(QW{NetJ+ zc?6!&Bl#H&(a-Vo7^p|_X!O%B@=NHW$MJad(i8b*JfdIa*YJ>@%&()Hp32kESo`)9tW1f$u`cqzj#`<$!h=zJGFF`&1B`-xC z{S_}qE&UCzKy|%}SEH(4%j-}{Z{UrnpugqKD67BcEhw#j+ec@OgIy}S>3^Z`DIoca(SMmBwfk0P@^&L@yTpW@R;-JpWd9Y9C za8<0<)wnuV z=$c#$%XMw8gQdDI*TWLsfE!|=Zp4kTKsVv0n6I023(V84xHabLHry8P>U;QJyrtW5 zd%UST@B^5sJ8@@B(_Oh6Uf13EA-tv^=11_dew2G*ync-P;3fSy_rqvCfCu7vJ(!2! z89j`jzzF>m566@GX&#B8`dNMsgY*kL3jOsMei423SRRModIC>GPyGtNiXM6rPsW3K z3Qt8BJ)LKuqn^cY;C?-u=iom5Hot?r^?Uq2?$RIdhiIuk;*Zfxf5M;QPW>5wjyv=s zUX1$s3;q(f>t*~EZqr}$H>jak@+#b_*YH|Y*6Vo#Zqb|gTa?q^@%Ok{|G+=uCjArt zjN*Db@4$`v7ycE6^l!WyH|XDaFY@aBd;q!hAAAVe^`CqMS@bbJj*R*wpF%o)hR-6k zKF=4BLSN#`xL*Iof8**6{r^elcLDr$+VB6I43~5YPKon6HK)NDosQGvq|V5ha7<_6 ztoT!B=N$M$=i=Phuk&&~{H|}{0{BfA;==ev-^fL=T^HvP_(|WyrSOBknakiiU5?9R zlfH#3V!f`+Rj@|i%GIz^*WjA?THnUCu}t62b@7F+&ke9h-@%RWnZA>o;1k`9o8u$h zl3U>eeHXXEd-`s^2XE{9xE*He`?&*V>5kk9({&f_iYfX*?v6>i2S1EgbWeU16LfEW z3}ba)ejH$m)@Th*7U%|urHJ*g-`gNXyu6i0zM<+d#XQ6|BlV_uyev9A6J^EdK4{h{Z{s67? zJpKsH^?d#WP4oi(42|?cUW5jE34ejQdMPhMZM~eoMoqnfSE8C;&1+CaujBQos5kN^ zl-Ha2JCxB|_y?5ITlpuH(A#)Bit3&G3kvI9{2L1BJ^VZJ>3zH(x%EN*13C0z{u5dC zQ9g!D`UIaudVQMDAdNo9=aEuhehT0-q&sUZoH%K<@+#4x99uuhJJuMVutR_T`*O5;|DQW zKg2!os(yrfVxsQFy)jPr;l6lL_v8K;r3dmLJg0~7P>j@1@RJy>hw}(Lp-1vF7^0u! z=P^)^;?d}*U*wn2M~~z2=%pv}%Xmb;%CF%eJ(*ueH$9c7p|hUBGx30agWp7ZJ%``I zz4{$~7j5?P*L!&% z^5_G65IOZBK8$So2p>geeVk7qgFeNlkyfAOb4aBx@I@rom-!0*tN-SIuHrB9U6;WO zS9CH?j*B`ar@}d%hSTD-PR|)|LTBR4II6R9HXPPDI42J3+?)sdbUx0HJ-PrF#4cT! zi(scN%Ehovm*A4vs!MTcY|&-7EH>-%Tmc((MXrQ(x(ZjtYF&-1V}-8CwXj^*<~mra z>vBCT(G9pE7V1Xa7z=b0Zi@N3Ik&((-HKadu5QC^@vgpy@5NiX9k<7ux&uFenYt5q z#x&iPyWw@+ogcz$`eA+qFY8CS7sl(yxDQ^^k8?ka)&qDTp4WqU2%gcy_z8^APw{X( zsh{SN7^b+OaH-#kX`@DN03Dy2XqLR?u6;O3wOm7{UCS8B;A7_#w)rfKZ*&uH$R54x-UPDF}gnw zzzcd155}{4C=bKa`bmE3Dtg4#8HVX+_*o3r&+`iyphxoyM zO6jfq6H4f9yd6dLPW}aj^)CJm1@s>N9r^S=-jCe+Ape0J`Y`{AtokS)LneKKPa?fO z&1aBCpX2jLsW0*+B-2;;FI=bp;j4dv|L@~||L5y*StsWdxS&&UYMj++IUP>v44e_i zb!N_jBRU&r$041QbK!u_!+Eh+=jR)+TNmU)_*EC-8?i$dL>U~4A;YX1fI|%`56q+&++pZs7LW=^wTf$ zOX#D=@p$yo6ZvI4qF?3L@Q|L&ucMou%G1zU&)}JOK)=CnqP?EOZ{c434!?`G`hA{@ z*7`%9hZg!{o{y&bQ(l0^`g2~0hI%nCK|TE?FGU^w6)#6E{SB``b-jvLqpDuZ>rhE= z;EkxDzvay+tH0+hD6N0wtthE~=4~jZckoUW(ZBL86x6$U5Ay51ybpQw0X~SF`Vb#R zHhqMTBC|fuCy+s(;?qd0&+<8>(iiw5lIzQS1^?B5^FLSdk9S;`*$h{7GER<*IwhyV zIh}^n;+)Oy8+Aplgmt&LhcUeb?qKaAD`cp#qFgLw#^(Zl!&jL=W=8+hxpXKK; zNWZ|N&|iRJ2-?$@(<4(`)$ z^Ez{us^lC;Tby)SvO^xI-`E#i*~p;4g8zUdCVHHvKh!gBp4z zufnZ*4X;IIy`DGV7QKnTMLGQ)e~+8>5Bwu;(m(OfD6Y5j4&11J;a^cm|Hiv-As!H?ID}J^#t# zcLDr$)bIbC43~5YPKon6HK)NDosQGvq|V5ha7<_6toT!B=N$M$=i=Phuk&&~{H|}{ z0{BfA;==ev-^fL=T^HvP_(|WyrSOBknakiiU5?9RlfH#3V!f`+Rj@|i%GIz^*WjA? zTHnUCu}t62b@7F+&ke9h-@%RWnZA>o;1k`9o8u$hl3U>eeHXXEd-`s^2XE{9xE*He z`?&*V>5kk9({&f_iYfX*?v6>i2S1EgbWeU16LfEW3}ba)ejH$m)@Th*7U%|urHJ*g-`gNXy zu6i0zM<+d#XQ6|BlV_uyev9A6J^EdK4{h{Z{s67?JpKsH^?d#WP4oi(42|?cUW5jE z34ejQdMPhMZM~eoMoqnfSE8C;&1+CaujBQos5kN^l-Ha2JCxB|_y?5ITlpuH(A#)B zit3&G3kvI9{2L1BJ^VZJ>3zH(x%EN*13C0z{u5dCQ9g!D`UIaudVQMDAdNo9=aEuh zHY@8j3 zbWYBN13C}q#a^ACZ@_L{kPG2gU4(DM4qc3k<7ZuxZ^DndG~bNxby+TlZ*>K}1silF zu8g(1D&LA#x;oduH@X(zhOcxTz8zocdR!libwj=bpXV4(MwO{ zm+^>xm0!a{dNRL`Zh9(DLuWmMXW{|<2EU2+dJeyZd-Xf~F52q%c`jP(4|yJ1=#P0m zn(9w^0UGPic_A9=#k>Ud^q0I8b@W%f9JTZ}yaLtrDqfAMdM&R*CB1<+qJsXGH>0fn zp0}X1{*kw$r2d(=p_tymJ5fac%DYfd@8&(oulMpkGmE5k88{`Z%9J z27QW8BdtEm=a5QY;EPDEFY^`rSO3lbT*W`wcU?9!T+zumIWFpyoC@c38cvJTIz4B= z37v^EG6r;G8(9b8{Z-)A=|*_UHm!5W93?E`pu9C>O&vU4lzut1iW*u|=2R zve>N4a|LYF6}b}D=_*_mt93Q5jupBl*TQmLo9keyuFLhXL^t4uSg0FuV=T~3xGCoA z=G+4FbSrL+xw;Lv#k=|*z87!lcHACs>JIz>X6jDd8PjxE?uOTOcYX-3>4*6dysRJP zUKp<*<34yvKhFIyS`XlXcwP_YA$Ud)<0mjeKgGlGq<)%5VyJ$WpTi*i0*^v}J%(RI zUpW}ziG}E8(r?^vp#-HO3y@(g1zW##0#O-<+e}&uh*Zd7?=#{(*x9T;#7M1mS z-hf;5CjJ)X^mqI{Zq`5WkGM(y#6P3B-p)I4qyB||MIrqg@5T-KcixM61wZxc?!DfX*?aB^h}Gmeb*s&cGRQTxaGiIHI$0b{x_gkNxp#f!Qh_s1wbkO$#8 zJ%op1q<(^*#Be>FN8kxPlApm4{Tx4!fqE2=MnC-`zl1(|9FIpYJ&|9=Bl=Z-4G-zb z{5rbnsXPsx^$ebg2lN~KCfe&c{1)!j@9?{5tKa9jXstiwd1#?O=J{x0~%U-5F((%;-JpWd9Y9Ca8<0<)wnuV=$c#$%XMw8gQdDI*TWLsfE!|=Zp4kTKsVv0n6I023(V84xHabL zHry8P>U;QJyrtW5d%UST@B^5sJ8@@B(_Oh6Uf13EA-tv^=11_dew2G*ync-P;3fSy z_rqvCfCu7vJ(!2!89j`jzzF>m566@GX&#B8`dNMsgY*kL3jOsMei423SRRModIC>G zPyGtNiXM6rPsW3K3Qt8BJ)LKuqn^cY;C?-u=iom5Hot?r^?Uq2?$RIdhiIuk;*Zfx zf5M;QPW>5wjyv=sUX1$s3;q(f>t*~EZqr}$H>jak@+#b_*YH|Y*6Vo#Zqb|gTa?q^ z@%Ok{|G+=uCjArtjN*Db@4$`v7ycE6^l!WyH|XDaFY@aBd;q!hAAAVe^`CqMS@bbJ zj*R*wpF%o)hR-6kKF=4BLSN#`xL*Iof8**u(Ep!Yeiy)B2mSuf$#6-h;FLJ8Q*#=e z(djrnPU?)D3CDC6&Wb;EcFuu6bS}<~{W>q_!|(bAE`Z;3Aufzx^o?8;+jVg+fuHnE zTnazvo4E|W)8)84HtAcqBG&85Tm@_Nty~Q&bq%hGuk~$Q8_V?VTo+&H`rH7E^c~y? zpXocf2|m%yxH&%3Ex8pw(06egyr=Kxd+@ftkK19kzMnf_mhQ-%FkN@yu9%`99_c8 z+@s&+_s~Yq$$FMZSb&`U?Mr>-0Z-^?%Os_W{5E z^Yyr_lXD7O(5W~z&g!(B4ySYm&WPhWGiSjOosF~Okj}}ua6sqbyx6Pr^9|Uo3vwa+ zs*CWA*rAJYar~@H@=f?rm*$)Cy)Mh;@U5=Ew_t;=#FepDSLIu=N>}F^_(s>_+whgH z!?)v0U61Qyv2MtB;B(!W@5HCNDL2E%x&^nyhq^W2h4*z^z8ml8d-*=h(e3$uyrCc9 zj+mi4a~Dk2-S|OF)(>$Hys97Jo|ve6ac_*%eYh`P)cv?WM(Ke(2+!#uJQO4K6Z|BG z>)|{CPw0{S42J0E_<0P}qj)s>=@vK{UOgo3;i+AM^pVNFF<4cIWI&*y_lDvp8k@T zqK^KGm!p>chF74vUd5|XRj=iBsH8XWMpV$>@@ACP-}4rf)<5!Al+-`-HWbr4cqfYJ zUwIb_>fO8t`So7jhdlZKA4E=lhz}#1KEg+lSs&*U$e>U0X{6O>`5aQ|3w#mD^<}<- z|LVW_pR4#E^IVt53|DkAPL7K@C8xqUorcrmv`)_%a6)I|%s8sEayA^+IXEW{>fD?M z`*c3ek3G5o7sM`In2TViF3QEQO_$)3*s4o$X>8GDxGXm7@>~HMbw#d(b-D^y#cExR zt7C<($+fUt*XBA{s_Sw+EYS_PAr|UJ+!zaV6K;z6x;eMNJl%?0W3Fz)ZSk(YhwsH( zx*fO2o4Nx(fSI}zcg8f`mAm0}-JKu8Yx-e+1TX7HxfjOk$G8t((vNdLjMf8qAfDHQ zc?h1-!}tk|&`xR+zrdr=UytDz(N~Y^~ukfqrp(pWV zJgBGeRCLkPc?LS_S^Ng>*Ry#J?$dAcJGfiF$M54V{Q-Z7mii<97|rx2{3-6#pYi9o zLoedRsIR}^FLAqG#$Vw!{WX7s8hRzK!mWA@uSI3Oo;TnYy@|g?IsF}fkDK)m{3CAC zKk?5fuDA0J+^B!yUr|W^#=CKY{+;(CuinoGkW2r;hmc+W$w!byALHZ5s88}Kq|;~k zEK=+9d;ux+CBBU7^d;Rk&)m%(?s z9GAx?eG6B_dR>{TV2!?&t6`n_|CQ}lz}9g}nqei*Olp8O~# z=-&Jo#_GQOIL7GyJOD4~K|C1G>Y+RgPwOZ7sjKJ_S7#WepW$aQSU=A%V1ORYWAM0s ziO1qGJ)S4vQT;N%f`|2MJPF

    pTTr^)#N2PI@NKLI?dO&qh1_7Qc;q^t=2X+UU9b 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

    cNdhG5_Xh)XH_C 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 h!I>@6te8qa_i=C5VViG$IM^n1Ja49wmkZ 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 Q9{bVzecx(6V{o7U2U{*lmjD0& literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..1b72d5db96ed1f6d54e9ddaf06dd516d94ebb920 GIT binary patch literal 141684 zcmb@P2e=j0)&55*D%c^|01HN=m`{VCaPM%A9cyeTYQz%75>ZT0Kv21gid_*4HY|vr zk=Q;Eg?qS11&kF7iUmc3y~S=~MES3G?|IL>GqVqn=lSzI!gAL8+iSPkv(KKHJyG=k z_s`nxqi9g8v&%^JnpQnq+P&5-zUkTD#zWQ})9~E<&EjJ|crhMua`y%t-}K{?-0>no zPo4mcl%i-($5AfE0dxDc%)P;-TRD0DrY_wXbC)zig&3F4yw%xRLOrlsw;SVBno^cf zj}owVT>noE%g+^6AYOj2Re(?r>`7Oh)f?$*>}BVQ1n3DD@7TQjTu}vL)C)5MgnD52 zp7)MZt$40Tfd19o?v>@|iYgG*iQ5JU^}x0s<5Vl2D-xjBdt+W8hNh(|*wzyhqF!%@ ziak;LaTFbX->C9F)7G2O_PE9t^(djSqv+kir}==9 zb_@HLpa1jCk1p)9W>q~(T-9!4SB~LV-Pk9J9-MtZ`L2go?epl?9W#WgHk#Pgoxzuk zy4;92`m9-=vv#W)Jr?$_sz-@eW^CYMEWGo!-cj_><*SyX{f76Rc{B0C{^<}Aq(dVx7vxKT(_nG!o z?1_KxH?lnJmXG>IAN%o&qYUcp*;QYTuR5_?1MKGB^W*U|8m)HkZ5&zt=9h2!wrlC( zMmQ4Mno38}vmXpDzc%dRzN6b$Thx;$kdkk~rhE1;uX4r9eJjUyaP6Tvp-O8#iY~kU z(DM6(S1Y$Vc+M=u*ykt9?<2=H9Dmj(@p^~88V~tX$(7@fZC{D~IrzdM2b5dh>QL^x z%NR${qXc5y`2K=~czW-H%OCY>>^phwwKFX^<;+duZX3;ym!9&^K3cvgy6EwN<==ca zwRGl74`)iQgvN`aLoRA8-~LH+X~!qm&6HeKh>^C($gPhmx7ukzY0wszxES>03D!sy zq0LwNxM%6WTRw6nC!zJ0oaaf&KerZK+^$;s=*){Vb%hp;o98=~(or{+|pc=go8xJZ1p z-u9KF9(&fQFxINwcJRCa(PztH&5v*Li6f@9xuAJr@5Ro>wFGuC#<`ciH>2mQ)_swy zwRgPn(N_-hHm+As4J-965_5-6f3)|TU%Pany7TyNoc+zTv-|Yk{y%{jvyZ>GnFOw6 zBw(K$eHkEj_{-akEXT%8uQak87`4OYnAHES#v2}e$>n6^SvNIqKX$&eG0WIyzn20r zdcL`J%v@m}#9YnlwOt%8$67Ca+(=^WP4BPSh!HLa@(T}Y7dB%srDE;&Jb#T^uKv7q zo%q9-|6QYD7l|!qf89tG(`CFcft=JMki%jOCA1vOZIPgdIbq2`hwCa&u-@2Cff&+) zOc(Lcnss6bK^2K`$%oF{HlBD)D|dc8Ii^Sa^hzr`8}r~WK@ZYZV#Fgo;s-`Xfir5+ z;%6H79p=-0W92s+=ltU1eLLW(Mx2|)lGB42N}v|PXRQ)cfkxjA$Ix_-yyA1G0ztZ% zD|(>H6X6(2z~)GVwh5Pm9_EC^-?#pC9FCy`RiFoS=pJ8Sqg}Ba+8$bOw>3WAxar}c z7NiI1DuLSl>x3nNGfD}nKyzFv=87Julz<)XiFtzOAc*k!0S`t?#L!U`zrwZJwFH4a7QS-Q1Cb{OchRWE z_Fww>=h(-_HPEh4(1V;Pfi<9T$(5iAH0!Wfa(bXr0(Q9Md4eUs^_DvtQ0v7Q^e_eq z#0dA@Ji!)Z%NApxFX1YT80g1php)9z@rtYj>M(pgSAr_UyLiE+b>=0j?9!ug!T29t zPoxUOj|;ojA?VR`VKZK_^7`6SUuHO3IvQs1MV#(PX7=tuwA>6O%$rJTsC_xoy91mZk=z&U!0qs_5y!ZUj zwN?qLn8R?4{I67=QNJH~wEOj1tSkJgrV2LaSM`Z0ZGM=^Uy%FveR(E-g@F$LRy+K{ z{hSARXS%TK6ZC|L@Cc^_Y?gz$EtZ@f=7a=j)X4G))*Dw7iUd83K>}+I;TTF#1)8fA z#TfALywlZ>`ezh9NLPtom;ABMQv01)jG+WopgXVgRG+phuN)xgf$HgT^ZMXdBW$L$ z>==0>+~!P+>9Pem#uQ^cr5ze}Cr{&HUv}x>$00kggKnwmGL6ztxvbP_^t_p>~hD^FMBM)-|$^W>0m;i!tay zx=L^yTQ)%zXx2!Ppa&`?dhUHgbNH9A5>$a^y%l2|zIsbDSL^=JZca0QLE_$2c%fyV(xpiC+k3FzXGk{P-o!{7r@49xgdO$dwZ157w`Qe;X(Pn^#W8UUsgOfE~VmFfHVY zD%g{&>s3&`Vhr3l=Cu}gGiYD&>uo9+`HBQRNLLBi;auejUeypg90PghxVz-g&uTWy zRLm7U$dwX@#ossM_h*ry2gF0a|5b&*QkhbbpeIkD9O05HK^5rw?LiMzO27`!ukr-@ zRsEhw4`Yx(jBszy6CArxzA&L}zTcS5Dx9MrMtIIZ4|1ghVua@BwFb~pw-R54c= zmBKNUpb9kXa145=VhoH#VFG7PgWX*RfxC;e@x;ZGr%ns>U3x-9_!^}I;vrqoj9u*Q z^iV|twI0ru5>$bPjWQKu&_fktpw`1Nl%NVU>~IWvsA3GXQ#ghaRDp&ajzJGqjDa=} z$54VQ(6GZX=%I=+aGejwP=YGZu){Ivp^7o^yCfV#393ND4#%K}D#pNSOE`uSRDp&a zjzJGqjDhusa114=0u4JHgC43F18ZmD7)nqD8g@7aJybCU)&RpXl%NVU>~IWvsA3GP z+=pY}UMgqaHeS{4>EL*Mg6S#&JDe+~gC8z=oI~;=^su%;~SU83fRDp&aj-kIZF$VKqA?$DrdXTOXxJoRapo(-jS4bBg zsFZ*mCin~#h;KG|uF~n{v5tP@pHEgUIcI#Jx2q~oFIaC_9ReQ2P=e2570)QdAVC#q zd31qD-AiX76Z?eg=6q(GbNDH4ey@39D*w3u+K#|Ru1cRNPwURs@<=@tMc0+ zd;S->QsSb$AF7OWbx{3h~%B#gfwll@fQIKC5!mJ^KY>C_xqI`fYAct5({- zHp!J1F-l8rbM~1l-{g)Lb43qxMFO>O%H5$S0hOQ%^ii|MR}SbjIZzIIpi%f-2BF3yQ>MqvutgKm86@qk7iPUGQw>q#Y*(%0Um(Rige_ zq6Ag0Oi9ZYbER#r1bWQ0)ouyoN(rhEgFU7gtuZ}qnLT>BMGTd)65}d;! zrSKeX)}2qpm`#9q@R~cNPV$1-SO;81zH4-LRawU+%@H~-e zF;`H*X3G|1;2hNRgEo$b$98&l5@qrG)(gh{L~Ym7ofA{eDFcR7%+I=or7ei?yo+RiM$Q!#xq# zSDxEPpSxw;W$Ndyo+RkWSCk8!? zK>}-l;TTF#1-gF8>48cK*x^w$Pq3z03&q-{hcQU-IrL={RDtGm=tV-`qQd&+^6N@V ztHh1Rzuy>cb0w(KG8J>hT7*i8K^rV?M6X;nK^17^Fx(#WK&8ZayWUeLh7wdUMz~*T z{U|Z*%6se7l@e5GEfh-*0`J{GrO$}tIA$DSf^!iiu(rH>f~plSxe~CKUsqHy#`0TG z3D_$}@QmWy5yiTq2RUK7u=#FIkC(RWudfDryFMez_jXByYgg+>3EZ1lK0y^@ zglkvpM+w*~MzB4QQn+^MK~9)1?G+=~9!M!%yYy(fw8Jy~Ji&SUD!cq&pYZeT^k}-U zky1E@5>$~0$AAhRs+cSE>2M4sr~(Z;9D^RJ7=zF37kfKejcst`xCt{jBdg47+Z?_Q zs!Hj&a^j5e)tMgTN(uIuVy^N8dt(3ID>sK@(8CxcaQ7_S+m)aSbp4Xk1Caq!{K=WzSBB5_S;4b3w>q<+j#2LGsRHr?Zpi0YB%oS@9Dka`} zeQ=$gs03A@k;8C%&;ykc_V#I=7)nsZ7~y`U^`pf3OYf^wS4vQ&wNR`p5PZ%OPd(Ab z@$mJ79;B-T>=h%RTJe%IUB+8}U4dXvL~fVgf=a+%F@k3lpPDY#EPdJsd2i7!NsE|y#gsZE#59f*=#83kEiV@5eh;Z%F!x$tme+PU4^@o8JuZqp zQ3J*JJ72hRhI2&^(p7?Ea507wRDs6va9z;@l@hR5j9^_MrSLgO4`Yx( zj4+|sCB0HJhsBc9gBVKis=aK2D$QY-VBVF09j+_ZBGRRbF~TKho#YA7VFK?0z(ayI zj)!waPo7{7izUw!tOXno_g#7zg9Ku%7y%V%q!hjm(!&@e5M#v%UI&p<_UU zHp^FxK@ZYZ0`~GtP8DdRwEXr^0``g#Y!Ad(e!pV6EYpe+>{p1f{PP1bNWfk(g69Wf zEPrHRx-7?v5j@XrrdDUXqDRw(jpN~W0rF2u@)-@}Fnq_I9>ySnlEW_cL?x&K4Lclz z9;z4v=S?_<5>$bP9gaZ{Rg8hFL^y^LRDp&ajzJGqjDf3mIEE5bfrcH9K@U}ofw^`# zh7wePh8>PU4^@nTnR7UX5>$bP9gaZ{Rg8g|b2x?)RDp&ajzJGqjDeYRIEE5bfrcH9 zK@U}ofthnSh7wePh8>PU4^@nTnR7UX5>$bP9gaZ{Rg8gq#o-uAPz4%xI0ijbF$R8f zhGQr}6=>Mu81zuZ7&a=^iJ=5lpkaq&&_fkt@ae|jnCQ|1K^1L0-B=``TC(M$MyT*S z%X@!nTU(h3*A-N&&mQ3j&0X9wOqP*GH>MdKRANV;uUj64|1gh zp7Fc;<~fbaCa409l)|~92P!2H@8#RCsS|^{CQ}6(<-7OVg8~FSP~pj{Uq)?QEBW$s zr39XtI_~+7ff!m2st~V!d(Z=w5_rn$!DD*{VkkisX!eC-duYD`t$i0grbuY-LyU$o z>n*1zYPw3GO#7X*aiF&=K^4lu{#MKtJ*+FF3ma{7ccpV6h7weP;8{?Nfw#7J4&vPm zo`Za|r%2%474$fyYh|jiS7P23?z{Bl3A|kuKBJHmp6AFR&vWD|+;=rsc!P(%ojEL) zgC68c3A|$x?(IrY1-gE&=z&TJyweiy?MhGunl%zG2YWbbfukL29iv^5&~`=)_IAV$ zkGu3BCrY49;ohzURiIIa;TZI=uGrhrHsRi`1XZ9}3&oP>uNka2OR3ICO;3{d+E~IX zbuoq#RDp&a?z{9*#awa5QH-GkRiI&qW6(ntV{qnFjG+Wopkaq&&_fkta0Xb6p#)W+ zVTWVTLlt9S#tFL^LkX%t!w$!whbqS4jJy~_393ND4#%K}D#qY1i((8Vr~(Z;9D^RJ z7=yo%iZPU+3N-9+40@g7()rFK*J8lpoc2P;Fw>Gp#)W+VTWVTLlt9i%rC}J zf-2Ck!!hWgiZM9m7h@Mu81zuZ7##D9F_fSRH0*E;dZ=Oyj`_tHN>BwFb~pw- zR51p}{9+6xr~(Z;9D^RJ7=vSeF@_RUfrcH9K@U}o!7;xWLkX%t!w$!whbqS4m|u*c z1XZA6hhxw~6=QJBFUC-UD$uaQG3cR+F>F+-bNx_)D$uaQG3cR+F*s@$%b^5Spkaq& z&_fkt@LE!gp#)W+Vfz?u{=Qr3mji}ZAG~L~7JRF1Y^OJz2lmI;zFxr>B=H5f_lLcn z5T87`TWO^OhgZiLp`JX^ZRu;3AqV!bFK4xSVD<8zmmgGJeNd+i0h%g&$!@O)7bG#( zFrsY4ZbqmlPu$UeL1pZc-7UsHUp%=e3e&{7)y-!a_kz_ zfAn}}mU{BUfeYqWIt)I}VqEv$spb89&1@Oo>cR{GnyTcBV@ZtlT8}F4wBPnEjjgB8 zQjZeZ_ISu@x5HnzYeAc!M(ulNm0fQ;uQzP8T9bWw54Esl%>2rR|JUBW4LIM3&#Wy# zs3%W=_TL6O;meiLXFX^!RyJag5qlV+o;(5Cf8+26tKFNe zEq<{YRsuFvsD&+mdZ|)v`x~p>{}{225kDEBo;(2>-ye;l=e`(O?sdzWvwnZK|1v4l z0!>x6c6Z!w*V6CrKDavK>{VRtvWKIt(EE^gl!?7Eiay+T*V2(j{K*LQu~$aXEk+D5;z%RZlPA9W8GW~vmHcJXsWc2MbUdk^fqF&5$eekZ*`tuIiy$FV*Klkk>z;(ZCYOJ|Ca0R?BSrP z%GU0WR#(SbJsoTHrS$`w{aDLn-|aJEs1ZjPp`JXE_V#S>tOmlCk4(pre3xkfBB;v^%~lPB0ieeJGv$Xm0zS`8}! zo2qQ>Vs!U^nq2Lohc~(Ja7Gbr)EnM1=J70{9uiRKasP$jYwdf&@a)y$_4u%pr&w=@ zBD*rgr>)zn5iw{-(aEnJT6zB6Kb1eY+zM{ zS}din{yL^{jhhFQ=d^BD&3aNI8~dPx51)C_Cd13C+;L$`o?s65@47*J+I6qTU2dLh zF@~&lZga;k&nfTp4*`7GlZ(Lb%ihY-fDG)G9`2O5mKgnM|@L$4>XnEKNJ+wDL|3op(?|RoVWA@9^3; zc*}=u6!lh*5;*7WT9U-L_vv=!Ze0eH*WclpK1!%6d*0NmE3F^aA=Wjl-&(2rSn0KP z`DIenE>sv-Z0?ifYVC7ImAelrmmWOr6j&f0x67(QON@RDxh?<^RcfqWmC!FhID3RKe z8gb{3ds$=&dJrQevb$eI(d9c%ES)xDsEeUQYENp!{YdU*ktOIsjFiakeqp_F-|pp> zQpv?oBDE(q;*KfzDasP`AVx}LcfW|Du8U4C&n>^``jrx?J*g3QYxv|qmY@eQQo=uX zkP=*3L%&iYwf%AKfa$t#8Gn=DK29l-KHK2>Zq&uf@qGEkQi$-huPg3=8D$9MJ+yBW zkNX%~S$oVVmCA@g4@>T8-{#zJDT>b{y zskM#muO?%=5~)3@k@tsvu9Tn$F;c=m6Tthp0ND05wF`iWMgpTb>q_&U2yE35s7v@oNsQ64t zO86Klp<{cV@U*WhJgJf?hdXPL_s}yeJnjh{sp(b`dp4D zlC##uP$IScSi*CHy&`5>*@9J0)Yg5~=OSL_X65uWS30&Uk=lMvosQH>U>?n<4O7C;sZ&BnY9&(J$4E!&Ji)O& zC47vO(6JpVCA{tHDm=C$?;P8e=5b$FI=0h;o|xLc&C`)u3A6#n+LZ8Zo)V*NY(HJ* z?Icp#_uX`CR|0*BV|z;YzMB#{wkwg^{u~UC?Kmemwx@(Y2U9|4;Yy^oA4}4aS_z!n z9NSaEpYti9BefE#?Z?D)q*elB6vy_I@MB_1=t!+ZYWsORpL>lWCGuk}6&=Sx%l znv4>u?dJ^Xnv4>-hQot1Dkc1!AtiK8Mv2t+bD!{<4CW&6AVx~~Sxt?I&hzJ>8>y8@ zZ9j)g*JPByEDRpRNC`iOO9@?*Q6jY`xp{kdO$IYdcn~8c{QNp4bWKKy)b=yybcIC; z%#h(hjFd>fP~yi#9jTQ_Z671NCIc1MWKzP%NC_R=^90vqki+nr3_U1^(mY-q+v#D+ zxh8{}4zJ13lO=rHq(t(2u*~0TTvbVF-*?kB870t{xF(YlzK^AZuE{8o+Ws6&S6Gz5 zIl(oVlU@KPHCPWH3f?O(rG$n3xhe zQY(?#e%{U<#Se`j>^>Y7DzbN%vwMSVA*i@n9eJU2C*S$vk(})g6>}-U3@d6yn?JlyCH+R~y^pEJE3;~)dS0fhVs*|Qzj2De~--wTmP)~uV z)$Royb}Nms|Bf3nEJJ8bqgSFFJy!jj#W>&8ppG{}J$d55ALqrNKZO?je%;+lT_?0J zfA{GDE(TjF-`mqR|7^s>(yiNdEO*>w=S-U`0ULMac3ptlZ9cMJY2A$%mB#fvwm?t? zBF$BU5pS9LmoAG+@a+8BYw=H?-r>$co{uQg++AOb-@oq;i}7=t%S#Jp?OT50`BhyE zdO$0|^4XI$)*c62zwK`QSJQ$`720O*ZLh|kFTLGjyko>JM)WX3J$ZuXN)(-A{c4Gw ze`nZvs03`P(8qdopC4cO6ZTd|-+jf1;YO$@Pw|)RRT6uI9IsC zydSUHHf~i~WQ2P11Vm>h@!WRc*lrEMyMxGq<7r+ zu=DQ(JO3`Sf0ckumG)^H+fDgLBkr_+)srXiM2i2?#uIio95bL{c1IjFs(amIG{A_8 zTHsh2MfC_(!A44c+%4JNaK!k#-4R!h5~ziA6s&L*1;p^9 zXgxwzuo1%(^OL6rTCC30qXcRlG5jc6k5CnC#P9^pLG<>o=lk=6d-J1hxMx4=ZR!)3 zCwul|&d}Dbfj1eUo;>l7IakETZ25qV3`4B9-)g=6xo`dX!L&eAg?d~2l&g{$ml|=p z5tk?D2R(V>%syAgv${WMG2XJ?zQ}s}8teJd6yl zzCA9U{sv;;8g;Do_Lk)QU|Ozi5*2C}Upw;OH{cmHHaS1&$rE3neog#*r-v*CYWEi# z6MsoYIJN<5mtS4bTJSS6%-@zIqbO@MPi%bG)$z&;apkXWH6H}fX zA7A-1zBjS6)#?{^_20~90h$(Us?Z*3?S5->hM$b+XoPz5#N|6)8xJ|{ev5(m?!T;N zf3zCb8ima-ZD=j{>&N9rEHXkpdE%U}u8rsZ^uI}a>|{0D`awTKW*dN}N^8MiKgJo+ z*$DOIi8sHyE&Sncj^ zHTy;~BV!wYrV6#5*6x?qf@>J@wGryc6Q90wef-M*A_m5*D{SO>(#9;UQP>#Oc>Q3# z`7`REWZtgzlP5s?>&Kt1w?AVe&$TuJDFK@*t%WGM*oc`nx}9Z&dh!HlfBl$ewR@&r znZL9VND0_fX)V}qK_j{v@u3mw$rGUc^<$*f?qq9|AvR_y0h=n+dRn_z7%?s()RQMb z`|C&k={8(H_?T2_ zY5PA-w)X13QV0)g8aC^#NT`P;CyiVc35}ry%d~7lRoQa1esOg9v4=amFOD(>cgAB* zo_NOYnEd&gc>fOTnQmCOQRUZf-lOzDn@R4?Qm8KZ$1JAHR;yv?dR8PWG2qsndm zy+dh_P2X!!)yZ4is?p}x#%m5-zi*a!W~)=moAiIC^z^3dY^?#=qQq zL)^Q01NZwXC3e|+jq-&f4=JDf!oWV7mJ;_=H;Au3_QrT{+l?&7L(|qN?{&^W<>wCQ zK2r%*we7iKJZR4w<7>A-UA4M?&(cxteBVV&VYJ-g#?F0dqo$RPqPq`%A#VT4=<+`% z|JYqXWSBFvVT8lP6 z@~T~2uFS5$-f!jxuFcOa?_x3T8h2Y9|cO=q0n@2s+>g}i^b-F21zJ@UEQ z<+gRor+4eoXVc3M%H&Fkq@60hmu%bD|5p3g>-{r?selDoUTbCuRcW7&qAgDyS?)HX=Zvvq`j^zB1nLcMRQkGl zV2iWLdyHPC@o&4GQp(pZYgFkddVlAUt{h+dZ9qvqNS6d`yiw_6EQ_Ejo2&1wKVcNT z-1?V#VB?Kbq^sq#l{+ESqXcZc6YF!eEP^T!cvH7Xs0TLQ8UF8bMFKS5YA(jemxC%0 zc-Oi}s0TLQ`u^{7MFKS5OE1RA=ZY#2cw4?ms0TLQ+yC!!MFO<-F-I@E&8Y&xE0Ns= zSUkGC_=)c;=v(K!VEZiZe@*4v4?ESy61mnUeRt<}QTd7c23AKMx=LgF4L69tIq$~G z)7x&;cfsdf;upJ4s2ulG?P`#W4E?%nQ=WKU-|EKat=wDBZ6%Ig+BM$d&KoL~>9|Hs zxay$t&Nr=79W&sZN0m^Oo@r53YQInUnNK#V-f`P^4eC)Mxpr0jb+GTRPAxzFo5x%3 z+x66$N~mh-A>HEhUmag*+hcvp)rTjqS#HzZzxvIe&*L@9l@O!$j6dF3!8KfKB#L^i z-mmm!mr>O-wmh&wJxU~3pQLsxdu?C3ul?Cow1*O^qK&Iv6y34XIpu$M>)bNot9}ik z7DT_wmgBeIj4p3E;@%x(TJX@u?+?Z+66#Tcw%@Tg`Nfin!Tq9{cc$d)DnxK!Ul8(3FHjDq zrRCtx!=N+22VJg01a~(E;eQX-t6jD~;?efyNPgqE_D~OP5Nv;6yY&cF(e^Qt-)b&~ zdT1kEEnn@|U4c*)?P7bVhc;rc%`?B9GqsDfR7KnGvyD4_c5kqXf3?5Dw$-`{)Ac+CD)PoA(#0)TCM*3(*vsOrt6}v4N$wbT35kZsMedk^4Ww$;b##_9U5Ybn>7iAw9uuLy%!&j|J830qID_*G}DY=8B@mn}!8>(s8L zKvSjl=2y0VFk*-i>d6zfCR_2V=cwJE8@6h}QxHnPrV8zm)-KkNZT+|f>&WWK6Slrz z@n37kI<>7)SFu*DH458S>nd0a)mpF_fVE)Rh!@kfS6AU0^7fW@?cRZ=1)D0Zg(y1Rh+~ZC znXZMqde0NKzFYCD=V*`Tw^%%DO}j6wX~CunwVu|lJEM$vIbG9t^`0keeZPWlZ%5Ht zR=d}%yIafYwvwtf3fq3&SFjeUwP0%*M%-n@Y3bUltM@zs+OO8)uKre?wru$>UEg&C z(xpmk!LR8LHsZZ>4cXOuo&fDvopC4b`)}W!H8EYMb_CL;N^2pCE;8cg@7|p?JY5TS z^`0j{`_*&Q?)tBEo%N`#&}&+-sX}|CwTl+4%>yyMurtatx?!^ zH?-Csu#5Lnl|WrlrS<05ED;0img-RgwE((!Pgn_6X}#HRgJewiubma zP?gqO_Wrqglt6nRhOb?{EVo8!_GmRQJNNPs3Pf%$sMA3!zq|>v{uUdWIo_11Cp0H<_ zD*pLIjEVM?QwyGUQUW$rS_`&+i4nbx*gm;Nu}1TRJ;PM-&ko}G#9?;Dc|W;EkwCgs zX)X9U!4!?@2rOq-tz=TA|E5a&H#_@(Fc{%wL6NnU-Ya|Z4cUh zzrJL5nA++GV!(sEGhVX8O0oytgZ~*-?(}5OmXZAy^-+%!*<77|{AuNFZkp+0D4{Ca zK3BSGpdQ*NxwcJq)qpCbr7GG!hOT9(hc;qpAFJIHuB}X!CUnilx_FIf@{C`Bqz436 z<)PA)m_Gh3#vlP2>-)7B305Si0)cx7HKNHQK3DWWg*zDkU9L!g#=VeQjJmm^N^3e1 zyMJosa9{e;bYbHTO)-XgVB`Lfl*6U8>=-0K<4#jChUQmQuyOyZNT>%k?(qG0xgr4? zcjbyP^0}f41iy*Kk~g_?P#;-z{5I$jS)^tz5=yN0yIX~<>!hj z5O#hDv2N4Q@>#1+Y(bq|@#}5e*C=7{H)gX+&snYAiXM;qa*#k;^yCTBnUcGwkm$)1 z=(~vLh$heZk(wSQV4pbp_LN8h6$z@4TlDr?j0{1KrVE0!7hB1zR#zoe!TxCW)MkDU zG)!n(d4hD3A@`3z&zBtfSuI_)-MD+_e{2?>{wWevX}na=v4qi)LlUeje*Kh`kD-LS zW>`)@@VHlhGIMCP%`LaMx?VSpsR%lP5?sNBGz0iXIU9g;gHU z5{N-ho*?ZBD@WPN;m!|wK=8}0NQuX@gnIG>>0++v$rJ9HSZH&^phpSVJU5Fml%NVJ z(e}j44-PHQebblx*5kWZ?mhn{cU{`NX`{-h?LT#G&f{4EY0-n6C_y`uD>t*G2ZVmJ zn#Z#QV$hQ(NPFU?2ZvVYz3F=*Js|YU);yji5QCmPK{}HwcXg%*1Zx2)@pzU{Po5y{ ziI2t(EpPq$t*$4QKUlx=+T1T(drYpbSDAn5m##f{JWC)3J&2(M?M$v*d(Z=7yFLHY z%oseLB@lz2JVCmatE!d5jSTdFIDY(+W|Rpj@pzU{Po5y1$(3sldO)xikP?q)3H9U& z(w=zp59gLY82iyIsNS3VMDs_7EpmCMjpHLXnA_Yhej^#Fm7oXlNWkWCA7k@Jhn9D_ z&!2--A>H#nnb!RHCZA;DWeH6;Pms=(+_gD9Ao^@MtQLdEvjk$$lP5@fVw1~BfOUf6rFD+iBf3B;f$PmnI=ik>`yIV0jZqRDf9&Onb6uphpwTS_E>iUd{2 zEp0CzJZxzBydfh z?G_|4l%Pim*gWoIjNka^@`bH_a$`F^szQvzS8r+Fek@y133`-(&Eq~sdC+?0BZvIn zwIDsJLX7QxH?8@GM_E@&(4z!w9``ZsxbdJ;tFa?p40=?B7;Kv&L5~u!dE68G3?5qk z?fHIWn7;Re&0VH`?yl$OFTJlh8um|jM)7!-Kw9)5CrZ%vg#X)*4D^6FW0#X^F?c*n zAO<~of^;ocRV#;Ub9z9$_4;5}CZxpUSwcN|f^;TVu07}h!CF8{Jf0=glP5@f;!poK zwEXsq{#rZx_bR=s^r6XnW%Bvu-J!_Sn!WR9}2G z!2KEpO&iC*ZF5fZoL^e?EfVx70h`A?(Y5cUSldUkDJ%$fswvv&_+s~*LkW>+m(~r%@Fh;T@tW) z+{frRd{FhBUlzOCrAJkW(d&{w_E~yN(o33@phpSVJnmy0z3OJw);)YLp+{ASvG$HP zKKjaGT$53P9wlJ&xR3Gg@|c$O|1#Y5M0!+(7;Kv&L5~u!dE61vt`Co@-v4NW8-2c+ zc6OiM+xyiB+K9oLE)w)0T@tW)+!Jpd6zNJ>mcM za|U`qOlkAOOvd2xEP)vG;LT+jM7>)N2tuFl3w;(-8_xB@@cH?|~LOpqcbhaF- zg3T)fQVJ95$rGe~44pGn=C!TO8T$8LxpqD0@hpKD^dN>3v@_*!XDvM-;>w9LI4|Mx zEP)vGaUYI13e&)95-PG=0Qk_$Fqcb@&xHjuF9%{&00W8VM0B5g0zoe zYfI&4k~Om5Pn*)fburqYSJ~zN`e5xWie77dWls>#B?LW)M*=qPA>91eSCjJt>u_@d z1XUoIQl{jt1(_~#()X5~8uK~K5}K1dLAqA*s+HW0yYzq<&~Bwhlol!Rc$QF4o*Zj+dnSs+Q^vGe|OQS zM%+E|F?KPcQ-GifF=%H>?#4uVknY&W#x?M+43B3CO)F23_QZcCk1B7yQtUn#Z#QV$hQ(NPFUet9Gw$K5sKuSM-1w zzu^&$T&L#oEP)vGmOu=8 z@&xH(uIR}Vc#0sr7EX^6uq%hRifcp?$ghPfK^1aK+lx=LweW?>S~xvO_s0dR#B4zx z&k~weo*P3Ouf^c;EP)vGD>rAL z2Lx*YDe-ugP*0v9?Fn5AUwhO08@U#KTjS%6Tnp#%EP)vGAchjOJ)vviM_%!HZQf2B z^cyR`*%)36rw8#!z~*ruV>4R|ADyg))1xZHShV<=#&j)Q33`-(&Er0Xu7%U1Dy@Yg z!8%a_HjjJ4|Lyzk-?#pC%wLeS5ref*B!B6MgR=TAu%@UkmSxKQRuk~58n)PV9QG_?GhF^7~ee>S_G@WbTqF=L3 zy8=NKQljk%+h4S5@02-0J!<2vy@hw)*4uXM-QwtmZ(6sjUSe_bX;Fpaar6AjuD6|M z#AR#kHS;#Br)I0KtS5>{ASZaEuIYmpf9rGgoz>H^R$qC7DjcT`!oS1fSo;g_vin`D zyuI3wo49-bQ%C)!Lc2)#J#eFldvYMP`Z2VA*n%Lm{R=UY{nK2o;$BBJFjqA@OK5b> zmA%g$HzjqICDfw?_kBSQ>l3Qt&OJp!Yw^+f<1628hh58}$oBqB_B_kSu=c2x+~`_q z7c|`%Kk|>VqqDg}j8Oe(>>|Oo)fljOJWFT`YO86l%o2Rl7p3JM2e8pj{u?9tlB)-A z;j@ovO7&wXfj&*TKA|ctQ<2~prG)mk`h=>MSywUM;Y9sdPU6$nZRNi8sy#Ft!}jG& zcJhm&t^fDh%H_YuE~HUpy`&QECF)T^drvlo5~@Ni`27>}EvTM6!5*58f&Ewg-c3;i z+wa5`MWDkyQ9Vjrz3VlVlNNNUbAB)_Rq6Sd&6S>=t49+mdwzl)5LYx;O7y(?#>y+Z zVmIAQ~g*xPToXr*YVntdy8dz(_Z2v5w9wjVxZCt5Os0zDNVxQb%In<*B%2&6| zYiX$ptywol&7*|&<7_!}L`J&oWA)D{^(cXO>^<2SN~kK`QN&7PD7s9tHbN@ zVJAnQ1ZQrd{0!5656M;<E7!3a;Qhst=|)sP?e4IF|Q10(WWx~#veTg*&djM>v8Bjk@w_@ zS}&=kkMCN}ocvVWW!Ee0Sq%T}UH@g;NsYg{^zr!4_BXh>M4BV0=*biKCNIA&Tc4l` zbjNibi7#01)<6t;pi%@|TH^gyKqzFEz0%VuLJK^5qJ zcaDn}j~p9_K@U_);M?2$8f`X)5>zop>B(VrV!#8H60rGg*1Y*#` z7$i`puOB;VIRsUp(M}yk9}pnufl3Lq4Zkg$Er$|RfkuCOw#{CF81z7;1bQXEEt`#@ z1XZAM-u!g=K7knYK&1rE6@FVb8$$`IKx4#cxobcm20c(IfpebUmd(acf-2A$$DZzW zN+1S3P$_{gg7e$5*%(St1^Vc%o{jl!*(^a1R7&8x;maqeVmUA#7so3dsg*!Hem6Xu zt9Z=#N~h1iZA7~GM()V#e{lA@6K|??8oNdy20eKK-{c+j!&=KBr~qC{*wg?gQK&1q}k-XnY8wX-2K^5pPCRQqs{jFnwpa&`? z@U7>DG3zadpvuuV&#k<4PU`@1QR0D034HPTy+5^G4nY;@`!9N?vh}lXx%Gf-FQEr2 zCGhR-C0j094nY-TY&!UFbqIK%QUdk?YfV`J0xHm`k-s)J1qgZ=g9OU7`s@+QA*ce4 zmc72Y93bd{N(r>hgU9w<4nY-Y^tYi4HVqK;K&1rw*m2KyTn<4MXq;)izU>|$=z&TJ zoGZVK+ITqxRiH6qln**GK+pq~5;*7Yz4oBx5LAK2IJUz+*98cApi%;(-OIOMvmAmd z&^Ii-x^nl;a{>fCP$_}$hA*F>isis~TpZhVq*j8Xc9Fo>;_3Daen!ehG44@JLOMrVAVM>*W(vf#7(&?2%dtj=@C&R|Bre;0nMs8C+4rYclj8CraR& z7+#Z6f-2CM8HCql=z&TJT-(EIGD=Vd8Z(^mnhZTqDSh1X>0 z(R5*>kA>G{l%NU(&YSR>3_Y4IY@93MH5nzS0)g{Cye31BrVAVAe0WVp393L~91E|> z(4*g+fZ|v*3T%qSm zyspsO?&dMR@?g*VyfmZvquqy>j~H`-BT`THZjastvhStbIH>CG`{!SJrPf&&9w0*9Q zIb(6DpOq!=p$fj(BuBQHQ3EOpB7a(u6JUygnCFIh91ZN zr|V?ufsMP!#TX>=o;<;O&{4Gig3Zd`UA(*7KU(iv@?N2SlNmXRqO;c;RUWeKo-O(f zX*@w0j?v?Svl^b?qD%SMPJ351E&YZxQcYuDeejT()Eedxo3gE$N&}UjW%NAkMHd(?{;@1JhM;VwD0yiOn3I9b2nQC!L;x!*Q;+o z=7^of?@*)1j_d87_X)=!?Q=EW(R@xOB`Rm69wnd%mqUrX3PdpmReahADwK&S@i=t8 zuJWFg@U_dQ+rk9P0TpX~)Q5fQ)D=8Rux*O9OAlI&?eWX(&1-bpOVVsq%f z-+A+Z43Sr5iTU=`^lR;l>4;8`64~$3&mH{G%%d&+Zf)9Sh^$JV@w@u*TN_S3^sMrn z^-d}w2A}0q0^g9|YNeZEe0AQwK>X&WGf%Xd-K15|43Sm&b1-f5_v|b7KYo0byF0~m zLWyE8`TWzXDxl!8R;xXwM_a#aA4P2~SKqbn*>aHOEbH-4fAZR3EWc%o9{4 zttrG{d#b;?wP4;uB59}OY20L|MBxkDT5t2))L)`D4& zYya9)zSd5)r*Yla#;f=qeV(8yX+a^7PmU)%?{I`In6zwi4#MOAG_lQVo*Yr@3sKXW z-OjE~?fttJ_7cnulDUt2;#a?s?NV?0?Sq?D2i~)LRljVlUjc{8uJg$=^jBW_;*K^W zt8zw`dfW`jJ$0`sMbRdcTOOG;bzt>>Z0?iwqy%Ev3@3T2_||8p^f~jQBdeFUUb#R} zl`Ti_SI5uzpL5QxF0r{!)}!fWpLzxW%lZ9moGH0kgha8Tf=_Xgy+7rJip&limV6TLYKR#DV;Hau#XRhZ}DDVd!&JAG8 zyrgy>iR5dF|2_ATu<+#vquyc;V| zZ@W>gw9E-x)5g6W{@$mrol%$DoEm)UadT?-q`jsTMZdiB{EQFmJb%t+`dLp(Af@z~ z{Z;<5XvUrM239*xDiTyJ_`FN}V%G_k<9@<>0atu-NAHf8^{u|O?l#q|Cr$V0rCsAK z?!2K=nGWK$Gf%-UmMVU+WIZW?TXd{NLowzSh`xus^8lfH%Q0Z~E?$g4RBK6SbImjoovjloO zJtPoAkK_OG$N$bzkF9<=x)_5*-lGIQbKk5*S|niG zN@4BIF#EqV7PoLcF-f}t#W-=J+wja3z@Yw!TYsbr%uyy ztIke^7+FHkbM??B!8hL!B^?={qK5<&dOTf&!@I$`uL-)ZOz}9suT~`F+i*(MzQ~p( z^!ri#UJYXCcbBpRJy0pZFYUNem+?3LK*cW^X}YlaRU+uJG3dz?^314fz9K(XZvX_plu#t-fl3MeB0{ztx@)%Xxy?Pki!r!=J7RF3b=bO7dNu~rf=YKZ zXY67Odh&$sl%9>D1XZB9qkS<3_qv9PJ7vSx?*e3F(32;)$9FM?5>$caR}6{-zoDQi z*!o?7Y_90Z6O31kp#)W+>$f01P$|J$FUC-UD$wjbMS>ovl&If=+#MSP_tu8ZUBQbn z=*bhh`**f>xwkS1?iUT4J6#uJ(32;0f9iY;zl$*l?tu(jccIM^+}9T>?gR{5chk)h z^yCTddR#1r5>$cK-E^}t=z&U!`sLuht{}K8ENt#)Tg(+bd4jvs775+MRQF8fPNhYH z9>h>W_j}EjTzA>jT|ISo$}B+-Vkn_IlGZ1v0?oZNi{)T`q0+r3S-v7cPo5YdyHjR! zr36)=xj$qv2J;J*mP7Z<%*LQ6PcU{dh7weP)_oweG3bFxiTdSGf-2D5wX&Ei?s^Cn z_e_M%-5!esJ$XWRbDK^yCTd{I_g^D$v}=uSjqoNT`^1*t)l2wyx;O6Rd?| z3?--nt^4(5W6%SY60DJ83?--n&D{ly1U*nGQNOOZ!xsqd4+fh%n-ycwlP9t}n1SPO zXuhA1wRhU^+PYTeIe?U)M~P(RK0qX@+Wi5G;p~K{9Y^~3gL_`?d4`&Y1iV;n6CiZQSfj~IO312*nDD2-I{$FKXS2lpvR z;Qj~f%o7l<FO zB_)s9`*2)Ko+aQ>f_A1oYAb6@OI0jiF-Fo$V%{YKjeeZ8Y@F$dE{1xNUg8MGW0}&D zE1@dpinX2+>QMp;)*)>C@pZ+V@a`*A==r3Jb)_EG0tn_dbAGszE1@dp*4OTF7d>3r z{IHSb!Ef|$!E@7iCkD@d!{!_E*YDasws!<#zHbmkBSs7@@3-T`7WKeZnzk?Z0(<7J zmECdI7)rplcLb6>AO?(mxbond`bpz($eC|0}BLIh=F&r_%1*cJyw3PwDF>oU9PA? zx>Oa3TR!YxdjG_cE(TRfz_#}gl6@vVvKBm|&4Rv5E}uWg&24rkMDm(O;%SetShRJE>%UM z^I4s$Gm{piN(tEZu0zsGx>>G{-?@8rPLGnyl@e4T2Hr&En=et*>{6-Pbzk4Fs6x6_ z6$$I@RrYqOlz?q-C?vaIylX9Z!V4!?=k|Efor6kHg&24Tvvv+Poibu*^`_(;qzdU$ zRV03yaBg+{x(jBhM+w;W21c^`#SF{UCtr?s*Yi9<6_4|6C%fxzF($9Ops%LI7*G|7 zQ>`3V>^QNc9wlI-e13SzXQQ@nV6X3Mruu`JR_OJ>c7;tZBifsz}VVHs5OB z?q&5T0ULe6zuWhy$?wbw7<(0RY;erB9WXQE(TRfz{Yvw z-v*R(us~3S7&tfiZeJ87=ef%jRY;erBH>39d|xe1O9|K*iF^zhuL=ZJNC_h!-)eNZ z!kFlCMHSMesz@Z`u8TpH60k8I`}TOuMus)MT3UL0^1uQ?6=L8j!S^}s=>)re+>x{( zRY;erA~D&nQ9C95iYg^w;|k~d?s=B0zu9$g>X1$@S4vQY7`WDQ2O8JgajkWAMHSMe zsz{8q>-o;fIY^ZfurUMh=lSl|+mktiI|r4Z3Nbi;@crXI6V5Gv(_w)<{g-+)UD!q9 z-41@dqDNJv{g`-))fHzl@Ypz5;XCd&GPvC+5F789VQ%DeHP}i%J{d(xfL4OGCtkOi z%+K~r5z?YZ3D`ESBs-q8vRpM=3*MH@WR#!^DcSj7+mj=T9=BeyX>!G(3h7c+B-XW_ z_;_+1q)G|cHew`uq+k?%&t@{8Br_Q$s6q@o|7*LEMA6eWlj)MoWT-;AR27LiHj`PL z%w(ui0=A7S$*wBxtgbGQnT!%tA%>m*wS8E8n{XyW71E`uKr~sdT9_-Ulz?p`MpE(( zELRuVOr~2hlTm^y#IWR3TleiiC|N)lZUInVlc5UfQdK1E zS5eh|6}jsNRZ74{U+_E7+?e*O0znmGpuce+mMGfH`tHNYb&x8gOI4B3nG97*z{Yvw z_pJHQa&?)VgPWZ^)a6PEst^O`CU>BTqA%<`e>a&kP=$1e;{ zYr*?%y!z?lb6u{Kpb9ZCj&biDm#Y$UMHSMesz~TehAJgsV?6flfw6s|jqRT&GZ`hQ zLJW-g+;u35*0k%#oTLS*Lb_BH3Hw!4wqHfAwv8Cc z{yxL3t{$=$yie9-unUZ;kSja?Ydg?HkzH}hyy7q|5L6WjyAGCl9i&PL*mnLWI|A)y zx%%FE`}?vcgZ*z*g&21J*Y@7Y&SaPt2&#&N&Sa=k0=Aw1$sR)anT!%tA%>m*wOxm@ zGa0IoE>#60Gn1i83D|c2Cne9%WR#!^G3@-W?YESj$xwxKsVWjS7p-zGN|h3@?fg%A zNndM0oyjOc6=K-=U)yOaYO)z}l`~|jkSGw{sz@a3aPEpjl@hSg7yMQ2u(V$l2&xbR z{Vkoz*mbbV>mXG~m#QM6Ga0IsfQ|DeJd;s^D#XCK8J@{dg>z2Z zcFthGaWZQ%92rO;Mv>qzFM3qPT=|*INNYjPWDwoXbGN$?Y|MkOrw<4lecYZ^zSr8y zc9|>N^gyLFZBOXkC3=*AZ6ijqo0ZH(tC}lS;kcduwf&Z&D4Fk8RRx=>B4PI?%Dgv0 zl@hS+{7?43YOuQc%zFDrvL=IjTdG0~JO67tO=a&cF)a{O6$!n&M3oY-?fg%6%#zhw zS650GIucK+A)Rg0RE-{-DhQH6A=DiV5ki7F*v z+qjbKbhZQl#?YcfzVSF}++zj_{8lgX>t9^t!7Obap4Hr!E= zw$GK_1*q~a06j{;MqluE8h*U6*00>T{b#&&yhz_p+fR3Qeg66xI~yFXaw{XwdbE>%Us?pl_4*ODqFVB9apkq=b6%1ZX@h6h-Satm$H`VLQqx0h=m)S}04XCr^O(Pa&OW z?+BwDPuR|QO2DQn`xKHA>d6zJ`Ba#Hat?9w?SZzzb6r}~&}9jv#TLvH{;4p@RpyyH zR7q_2bZanI&Xe>E zMqU8yHeSUD0x+gypHJ)A1(3(2#!N~kAKAV%Gu=sZa;advX1 zRs0i;+IQ8HClG_rKxWSqnynesXO|( zXN2+r|@tk=hZeV&AQMH7M-X!#?H-IipINma397 z&9zPD{NPp1dGZ9xP50Pir{=0i#Z0;Y{jo-ZRsrVmjjCIG` zT=-=C&g~c3_530u4nN|Y(#4bRa{If`qXg_ZPd*thI`wiRE->QHMqC&msKPD<^FEpr zPn>X>5y;iWQ%@*u-J^}$Uz8qA7xut!XUDG|G|q_8Mto~TLx7+PF?#J|yW@AgIw2PR zYxmMAJN0le=+Sgx@7DdXxYb418PQ}hW*hOx06`UE41KO8K0dlOA-=!1b7{$#0WJnT znl9|8CN#%`U!P#a7>hB_i1z~oRfsX^nwjx2>*CvhAnu*|df(HI9O`1wqv^t4d&u%#^T{qk{HO< zzb+j(YwILe^k}-UKbSE&sVnsMgDx95>yxD9N>GIupZwwOq^`yqVYNG}S5mw5Xu7cf z=jz*~&F?m1NPwUUF%G`|4r%kZukGBjFzF@qXu7cf@8_GP?|y8=su%d4s03ArG3Lly zrSCrYuiaaQCcT{=O&9irUK5gY5NGW*M(hwEs6vd#-@Y+92T{8>Og*8cb#m6yqv^u# z@yF|uu>`~fBiaNAsu1HhJKvCuCFr}S9&t{~b;;;MkERQ|^Q7@^wDTj}AB-3lAgDr& zuP0rXjETu8+7czBC_S1k?0>W$pFE8VVxQp`w6qNnR3S$9^{>kjE6rY1QIDp}cst)d z+|DTG%EtBrfpS2_a_l~Ggb~Tu-eP0>EcIx*uu;?f-W_ZN#*&MyuFek-R3RnQ`jeNQ zW(3+}s4aY?SOHe#&+K^0O$?|I=R1NPO&2ys)Z5nI&xrGlxYWkPc6${Gst^NX2&xbRvnYQKf>>xXvLlkSmL5$PHfDh7SaP2c zn*<1|5CgM8KbD|9M%&Etj%4(qN7IFknXDfZ(c6zS;=}+!6=Gmk>&L`o6fN1hg4Uq%PUmULdGK49>Ovcx6|El8x(L#h^#ih5gP}bK_Hc;!DbtjX2zhb^(Ga#NZr0if%IE==a-}5C8NV z7lR&67xu5Vc|49M*;^yg6-Jz9#IXT_D#YL%K8h|i;*3AOS~}s4b<66}bYVYmSS6mf zIcBdX8qsXThyXzqQsNvwiUt{R**)V+Prv+Y7lR&67xuj$OpiYvhdK2yBThA9R)C-i zF*t{hqTxoY`F*F-j`-kh?418ho*AyiACX zHV~G=hGY1yJ4}dEAHU7&_I1^olX{`ww%I$XFQFaB3GurVif2fKrLf@`zU$sD#7E!% zsMS|i?_*Bth5pzh-`0COoh=D57vf_Lgr%_I7=G}gtH)F?YEJ5fzRxMASKp2o)&Hv} zH4v7TQ^ldZC#ykN9uTla1qqc%u+^ zI&q4y6gC{gmk~TdGx3$b{7rAeoYV`=%zx9-&yfv$`wN6PvVpJ^HXOqbzI{c$eKk3$ z7n&7(;1NWx%&U{N1`lZ8>`rC6Mw$vW=!TMF^q+V!txYAebYWFC+TK`pvuoN~N!V;;fUX1x`g!rEggr%_I7{1Js*C+xww9XQ9QZF#4K_IYRnVJU1lhVQzM3-NqKWS_3<+?>=4O$1nc z$pJ!~F2pnHI!}b9u;CcK>-HDoaz&Q++F1ORIjI+#NVfRI>f2}X?S0D=VJU1lh9A7> zOuoJMqUNMt=%2j%t80DxOul`BuoN~N!we}wTPb!@wHtKnZ54ncP=L<5zwkssed#2r&pY?e7X=8>UH5DuKC$Z|t6!+z$DGs)txBHy_vdpVE)e332EtO< za15`%_Yq>d&0e;8UiG5pq+V#%0af4r3n3mV#9GF!}4nnM!zM3E`g(k=FUH2#< z{$S_5SGV7IQ;#qw^+Gda${i_B6=E|X9@Rit3LB2$yKWaDj@L|l@k!gQCMWemGxN*+ zK0g)Wxk4P(Kv)V*j^VqG74=Z9s4KSJqqkvB>V;+nmm6p<6=J(}5SGG*WB9K7v=E!i zGi1~*kdZF1Fij7SnEQJln@Ol+dHa@2v=P&A4nUi{< z+2KlGtqSpLA$D#cEQJln@LhM65O?1BvgMs>@0yc(q1ma+m@|U^uHD(=kqAp+!!f*S zCWLsBB7m>fd1X%Og(l)Cb9Z+k9xcQ*4TPnz;TXQ_9Lc<{&USNBFEo);S%W*vMvZ;? z5ln=ou;CcK>sYmSQAGBzx@yfyz0gE}#g|+!#GQn=V!z@U5@9K9IEL@K&9o1GNRj0+ z)nA#DdZCGAi%-0(Y+NM7PZ|hIVZ$+e*WILecY`A2UtU%Gt~sd}n!i>lZ%9|)K9g_n zJ#`{1g$>8>UH5Z+)i$zm^;Od-+z8t%RjlNSo~aXhXLyyD?QbI>>es2!e7mi#+J!TH zWq#+|?*Dz=Mnc};MandsQ?tnCBm!FJDD$n)`n3>bu+9|1nd(GX3LDC$&L6nzzgEO| zlrj0^nhiH6^+M|$W&W!B-C4gsPL_>Bg}8eIVJU1VV>;hspW9`FjN+ln{QODH>YI~# zp>@JCzw%XgmkqKq9}{Ai2EtOl^I=5PU?l$Im-OQ55D&uAS{I@ zWlZO%y<^LYP%d?Ya;d!yb5bv~&Qa!PU3|ZaxJ`(^YalFz4P{K{dtc61F@oDFqo~Yi zZ^N9_3$1gM`4jH5bwxZ}h%FijOJPG9)A`?a_pM)rZ&xn0w_#4|h1RJ^wGp}03Bpp? zQ2w*psJYZjl}qgr=A>R|oukygB7eS83R5SGG*GN!e!K-{WK^%=Ey%}Kq`I!B2y zze$MaG!T};hVq{==49NjtMkg7)C;Y1l$g6UN8h(R5thP+GNv(iKOI#s=A>R|or=^o zc)VKvIU$~2*GD2Og$-p)>ly^{WmQ1zT34+(sTW$OBGs3G_`DFiG!T};hBBt%OHNZI z$0w@4GAH#y>l~%`cE!U{S@X&U!cy2!#bn>o z*Z=&IU4;lw-S?F_sTZ1^q1f0I!cy2^mnb&y?GGtCPH)4U)C1s(%yWkOsn1*kIRQjQQ6TGyJa35_3{7G!e&Q z?owNOTLWP!Y!H_$=I(`xWS(1RyE&;Bn#ifFLF!B1BE$n42uopuD5|VM;;T~?k=^{b zQV(ZN>V+l(T=uf9ufH>3-HEzLT|nN z9?+@Le6PL#rT3_g;Y;rBbIMH|S+mIIBm!FJDD#u=`diufkg^$P3-Oi)!cu&dV|cv? zEyO;`nA}>k;pU`XXq~XkFSv3uMSX_~@h&0mTr=*8uoN~N!xzLGl=(TSX7$ZUz0f*G znLquXwvdgQOPwi~x}3UFihp+uKjcz}IvH~k0j+bC`JorzM>eS5*-JUEjkTU35thP+ zWB9Inj}S*G6L)&8vM?w0LhBr5e%{-OsZSSz%9?jI5SGG*WB9InhY&wh)ytb|wTL;X z7h2~i^LO9#0kT0w$`wMmA|(-)!iHn`X`PHYsTW%3DAmTeP9_nS!iHn`@>Rc6hW8D% z9pB;5MN-z^rLf@`zUy8h#Me~G zaZB|+=A>R|or?6{u4JmIlewgUuoN~N!w+6`_0`pjnv;5=b;448yQ^MKX&@|x4ae|9 zE_Ky)GUlXS+q?0{7s~IRsFuGV?LmZvTXb%f?%UxJf?o)CR&**l-MATF#lw=Cw}7oYV`=&QNU7 zSL-1xg$>8><*R8m3Z0lcWr5_3{7G;v9pyZH7agm_^CVJU1lhA)xKOBDMY zP-nY2sTZ2asjNY2inKmvr#BFm!iHn`Qh)V&MPv`J>)f2w3rz%Ae93vT@nRvqSJ!zW zEQJln@Ll&lAylO|`0%t^h_M6$&vGTSc_;(`XkQrK_|KX}pE(bbEZlX{_*8C~n! zXY%cRolGJug$>8rgKwX`rV)i3VS7a6UH46$&@00`JGSO)EybxkcR+AU)>_2Zg!q6m z4HwrevZMP%Kr2gHZzLs``dJ~~+CW$e8;;?JTYI~#p_L`A_q|d%pgMrr!3~6^u(62rzbwT4l)?IOtxhl} z^+GF4T5q9!z7UTR;_3#%QrK_|-*wLt;@-;LJ-t?0n3H;;l_jmW>24*&e-UEO2EtO< za15_|iiOzv;ysu5tkojsq+V!cN$VZIHJ7@qT-ANKs@C9$2EtOR?DAUKpayaa)yZ5}^XG}M6gC{gmm0|ZH4~4kbpYn1UT9`Mw;mTS`cffO z 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/end2_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..01079615fa2b28f1b1c745a96062afcbdd05347f GIT binary patch literal 457344 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 R@5D)8Eihs5g=^3M{{f_KnpFS* literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/end3_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/end3_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..ce0dd9f1753829af1f1b91b765a0fec529569e02 GIT binary patch literal 121684 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 z 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..6f5e5044f2c41f3f76e1f2a1aa551a8a4f05cfd4 GIT binary patch literal 111884 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/end_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..4ba363c7156a3f43580cd569a54450d42ebc93b7 GIT binary patch literal 364368 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%0D&Zp8gu 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..7a064ccf3b255a745bee213c52b87e35d930ac48 GIT binary patch literal 84884 zcmb`Q3)FT;Ro_qImk>gr2owWaK(f@Xx|9ZtX#0NeQxU<6^@@0>F1!}(Dp~|8mVS~% z8WFjQ1_I$yi72a;i(Ha7?~_1?kOmBp5FmzI3ekYvmgw-|N~bLC;m;ktdPlwe?%#XO;cK4w@lt-;uU>H25mR;R{~p;~dd1i8zTsXc92W8E z-@12G?h`j&b>H1fPdIe3h%29Y+U_@;cw8xGO{Ltmu^`+J)wE7fD_hvHaoOYUx?_)i z?#~{z^E1zQQ}O7bKmE0xAG`BKqjzoR$maeL(I$TVE@$ri?GL}9Xno`dpT0tT;vLW3 zIehZ9MN4$}t+eDvp8khBZ@==&jtxpk(6(Eoe~)bDgj*=v?o&%p!g|;HAzwL`G529}jrIUB`TW=n;3?jT~H} zPoFzWw7#N*#G_w+$KA-?j#J9fn(25OO|C7t_uzSPf zzwl4!2Z`^0;O%!`cgxXEKiG3>v4w3vC?WBg3r-wcxK2=Oz323mwC-}|C8h1M?Hs(c zVF?M@J9PG|Iz4Ay)Y9i(qbzM$LPB29>SH;hSQoYAb=TC|poD}*v)>OA)Y9kn$kK)- zBouG<^g2N;&Xtyk`p2~o*E?DVg^iu1uP(Xb!{e&x<_j(#X?-5PS|KbUapCvAWyJ<1 z4?O46!{O0V@3Gk+@#IJE9gZiyOK7f{ z$T?B`lXJ75dD2?^Qjudhf@OP}}Ga2zR)vpn6mK?wG|iL+vz#$qLx~C=pHZX5bEs{_RlX8dDmKup0-t#kkH8XTSbCejIpJSxO$abt3J7` zn)>sc5)vvO8(}TBcG)VA2kTYYpWilNEqc8rC}F+pBlxI0|IuO3qI1tZ_ps-L@|Egd z&htNe(0PYFQdiyg1&2N6>lse2K5%B2lUSg*?dyd~(-r+(&nGtA zY5X0P@>SmkB_tG~eH$dGrO!RP+MZKF;-puex8f@j)Z)BpZE&5yD>7?p2}($;uK-9; zOP?R?T@otyiTHHa`9pUW)_UvXzdVknKJ$M^Hk6RKZ5z%dqMb|FLf5Z<%eQ`GtIoS@ z*mYddUQ19y;+%&cx7&{^64ZL&ImhkxXOsv>oCs%B*>j)TR?Q^4_5y2aiJ4?1)_p~S zTKe3%YiYw05-R)i+a|0f8~qGN3F}q4PcSk*{fMJuPGk$)R#8IYS)cmS$~-4QEq$)K zmpPFV60+BiD-zV=ylMOKs5_rJMx5@7-4c}@Z!JLy33=W0IzcU!`!*;cacuL0TAV9w ztDb-EJ;r&iZ+_hNFJFD?IOkh}5)$;nIzg?k{+?4;G6N+fI8Ln%^}};pEp#>z-S;jf zBxKuprL{qVTI;Qne{B7GDAweyD?vY*g+!7M+yzkeJIcA-p z79*x5@_uPYJ)qka#ViG1d;(kl0sTI;@|ghW0G>DVAat#$7*8uF<@saG{cgs#}I zghbvUA3#uxBioJ#B_#50yJLd{wHPt2jl63pb>-beDd&2=Vwtekty-O|9xz_I3po9ch&aDj+)XEik#|Gyb z=L%QE$7YkkbMO7(t*+$mk^&HdsX8@bE3NOD(kDQlmtYij#J35neI+_6D|T5N4= zgAx+Cf4gIY1hwder47eu?v5|@ijH>yIyTgj*#BQ7>bbSlKiAaSpoE0H9{cn=Hb_v5 zK3v-HNRi0>^eZ+@P>Zq9+MrM91$n*Sb4p0Cf2|D?)Y9kDT&@5pA))fI5!OoEdwma)3V_wI0vcM+{dV?t}ha zu1id474GsnL9Jt3x08@}`!-k?wQ|f$|JqhjLSj9OlAspzN^3(`13#ggzq{noToRU$ zP}!f~Hes#2c6G*_64tA-<9KPq5^C{kwv?_O)6^Z6uL`->ih4ZoX6(uAz3rw#Q)Z*-F2}($47W8e9 zpcZFWYl9LJ%3Xb5k)W2!_H=85_vaxQ?}~XR(-JeuNO0x6PEboV^;<;=36+nHu$F4- zj|U~JSLHszdo|uuadqDIoDve8o9hI%RFnI(BrGApxp~`!Y1!!aoD$Zn@%Ay3$R z>ddqDWi97(dGpp~WjnqHI}B?CwOp?6@P6#j8Jn*hI%6vvl(;M#eD8J`)(C33Ty1>x z%(Hes`H&|R8~3q(klC{X7$(q9VtXec1*CW zH(!=EKJ{B4Eb~B;zxs!-Dx>DIY1glRk8GXQr1i)PUop}u_X%YmOMKNA?bU$FtqtcW zNxbq_S)aS6C1D8(ui=+AeD@=X?}}7*MqLt=kkI-u-j?lnmjt!^*5=X%B_w<|dD{fF z{PyXRpo9ed)_Ru&wfv6i(gr0YII^vc)GC=FwMyCVJ}+%hLL#H2(5;O*5fM|gWLxis zFKuLu7D>i#DQ8R{Ku{~=twW@*E|zunBfVZeZ~H+B3HorIpjO6P#|9-NGGaRYAVIC1 z1sxldkjTjI*dRfzoR1yCR{(j}nObFEeU@WR35oSgozDP@b+t+-A*f!p)>*q94@Mm0 zRbJ3(3(HnfLPF)fjX7a0wyn-K1sgzrS5)#?MV<4Ed_1tIK^Ym4bu-^6D z{(*B|fB2CXzO4}Fp8LkbkA2dmrM!NP;+0JFIp6i6V<6mi60d#h>&knu%YM*0wbN7e~y{rgkiw9*f0**~)Jgd;bV7IH1I zw4wE&d_qF~yZ70jEc7}-Esj%5P(niE?-s5T)Z%Ei#QWZHyIt4y#mi6JwHLT@Y6(d^ zQX(9cs>xBgB zB-SI5*9_)hX7JVqB_x=S*9mH=yne4{2?@oUKW}Y#x0%M)`_@#}JzSrlgoO7-Eu(}4 zwY;-xN#v@iM22^4Ny|ILmV|c#N+MdlRN1=_mjopwXnW?X`hI0;6}7zUZE1rN635mL zX~jOG(VqL%wu)^hA-`!S$Ffx^a{O zl#s~P`HHVx7q$45qP5|jXYz^n_^GV_t1PV~J?LS<_)^R+f8A+a9qY>D^7 zxgWOI+F-pTykl?aD-zUNk1I+@cz5H{1_^30rrUln8aU33o|d45g!<oevgc+? zP(p(9f1RL~%3j;G1SKTapIMTi7N0Y=HoT)zBjuf7DzC2qyc1Ab-ovEw`U-#&65e?z zx@{HvA@ABh^mOq$i!E$hHIt0>`a8X)4HDF1gtj)+Dt)55yu(ywMrcdWi{1k%LbhE~OHe|> zdq?~Ia9z}5Yg-$XkO-}^qjhP61hwde)`s__sV?tTQ(5;r(p=i0WKQ(6D7CzU&Nljl zY*<1XkZEkOwhjch+(k)RfzinKN; zA+i44hrRVT%JLOk*xI0kgm(fj$Abj5ykB%lP$F6_IQCYNkQe$R$W~E{ertP92?=G4 z{s@wwmdd`uwKgarvHo0?1hx3Qw6#I+djGDyE6wG2(4!>0&-%6rYB9&Ot)hg4BD8y3TV;Y;ykl*Nd{R)nn9oj1nXPS!Z0|_ujb(W>pJkMCOXOXAk>vA$ zQq~HvKZ2By$frgf8ziWePo_EqdpPfTzg6>|>%Cp|Jf9$~*l=Cc%I85Hg6+-w&!VON z$*arQrG!M@rFLwPpcXySjvyr@@)=Oa1_^30-dY>^G@{g%&oxR}tMh)(^KQFnGldC$-xC?S#0P7WZbMUS+tVw7++*}s;cghW1b=(LIi zwdnQM21hNQ6pX%-<}!9Uwj}bIL#I_FsKq|Dt)hfPJ_+gAAVDp9p|z3sGNrCu-Iub~ z68)Z2LL#(vovKDXS)DKDEyO9obSs zLiTia#xhER)tzaP$XC{qNBTA>A(40C9UCO5l}|!CL`M6L+M9EJEUUN6elT`P(ChY- z{ynlKK`r{QB`6`WK7u5u#gT1oxH@lbP(mWt*Bu)qsFkb!4#8(H8TmVkSC!S8 zW$aQyg0|a!kf4^z9?h1Zgv5G3NKlKh(Ar>R$XCuKtf?g^A)&ExR$3>hwI1!1kjSSZ zoe?BKt@ZiAJ&D|frj=UU33qHzGAH^YNJ3?6>5AI7p?+8*PqS=#-Mb_*Dm(q)2vUm? z+S;Im#QN2M1hu#_Xl-zxgv!zLG6&NmrQ8yfkWe{%bqs{HGI~}BYq4IH)tY5yU|rPG z=j((eB+}kq-v$XsM%rE>ti^g&c8sY;|951|x~Qek`-J9%ewRq?<(^$demp6tLdQdU3ut)hfP?z8OJAVIC%rP(2J7h{pAPxff;JnRsZkXRoN64c7Q ziX9u2kjNd49fJ4Byen43c&07m$`TT?=g-#(YN>qi2$Ep*v^H25wHQ4uK?#ZVNaV9H zKK;^s?Dw1!66@Y2K`qYUwjY#`phwmTYN_lvZV5_Atj`Y;)LM^3&M0Og&Xu-Rl+1~K zT#?|I>pI`>dG0DLGbi^EmNM5UZL26Dk-H5$bC3kJa@TB!$bG0|OWgL{ZQ3Cykv$XZ zJtsk}+{N0lK?#Z6liVR@PY1@8x5lPFqh^wkkiCNmYN_0h5=uyLoZ2xbL9P52u+wu& zNUV=JiToC^)Jxmzts;@TygRL8UDV1w;vIrdGd1Vc0 zxj%xGkYN8t15v2YuUr?kRQ6nH2}($;`-%j$*5?Q3IWrMwaN8~qp&pwHIZ;)>m z7aP`+#AOlQv#;{_F7kq)mdn*fz9C)i#VB!E^=8lW?1VLfS}s=`pS=I^o8bY+Z*F-1 z>6^>0`jwqu{ISb+-taR=FZBCZvT?U>|Bapf`|g*|4^x*671wIQ#y`Z=V;$ldd~`LkWp|x|1V#-1|@8 zp7xU6-HT@gwH|cbbM8q2jJAM1R;jec_t0*Diy^6ITpA8$|_|o0|3ugqi)Y>y1 zd`;STNDx=PXm|g`*(ys&q=MQP)?;}D^&YqK?mgc6tJ`DdD#2tdTDr`_fLh~_xvpQ|u zF2>=!@Ry>51hpRg&|g4YeOqYW82BI8*FhpE!BCa-yD@w8-dun_7t(1o$;%YbI zYNNO!L9L9Qv~g05dBoKQaaAO9V*0)9dA^FcDnv#}X-UqHv=MQ&A91x&Tv0+I<2d{A z@Q9F0qxYB12x{d#PaDsUIry?5ekFQO35lGKY2$Vg>HjK5@O3kSTA7v7hVoTJ;;u%J z5)zqL(ncp=mAa^<*2c9fZG2a>>a~%tUY@P8goNx(zZHLF^!z*H?`boFT6vX78*v@n z#&xh{21-cCZ+g?a&X2eb?nfTk;)+x1qLxN8u7hbKu7kR&ZE+p!5_%WCpRZh(>a~_) zINInT2n$Hh4OLG=E; z5hbjPTA5?g#u=gc?lxZ)35m=rX`_>`3PCN|j=Y;TltZ2w(f*Nal_eyYS0b0hxj0{m zGi9`njq}I!w)NgEN3XufWsO>%a#cQW2}*iI9rHL7XQTC~Y>;qSTK?Te*&YTGl=O&d za)Sz7+B=W2rlB|W0rxFvFx{uEavT$Yx9jk?+(K}nCOHa=d@@hUb*xGXI_ZHu_t zNne4Wq(@X6;irA|Ui~29vb6mB-qi*PN_s@K5k249S0r4PmVbeK^wmgE(j%&k=)=}y zPQqnr`S+cx4HA^}h-yP;s>PV>%U2{^c0cs1)71tE)oV$Qs5a79Wk!*3Sz7Xfem%SK zRUs(p5!FVH;DRtMEsdsr1-#lIK}nCOHZpdL4H7O(OHn!Xg9If#qT0wARcw%OSz4N1 z_WCf8prl7s8!>_#k2wjKrR6L!j`>JX(j%&k%y3*^6~AY;+mTjgyBrS^l=O&dgR3PH zE=w!3cG@68Nsp*DxLP9Nvb6H*lQu|D(j%%3u9ir+EUmnXrVSF5^oVLB*9;rYa}q8~ zD^~-PubTChcH1i&dPKDmBdE1c8FSXy0ZNsp*D=IblhWm;Mq%_(1zprl7s8(b}sa9LW4O4}X=5|s3a zY9nV<@f8V|rKQm&?*}mZNKn!vs*Swj6dNR5mR4SU(gq1idPKFs)e;Gp zrIlCFv_XQB9#L&X&&Smg374gntAWW^BSA@zs5WvXQ^uTx%hJkKP1+zqNsp*Daz$2R zmxRmi$8`TeLiJkGBdU$`Rhfe%T$Yx+Fx^Lyprl7s8(b}sa9LU!&FOxS1SLJ9+Td!5 zgv-)WR8IXMK}nCOHgZN4Uy*QGTAE$<`f`0`Nsp*DVgz-sR>qulxhySbiJGrSP|_o+ zjgQBZJNDI^D)1_bMHIfbYbq_K977A+PB7Ed1eU- ziQMa6=wZ+k$S*|wABaEJMJ?^E{=P?@lQ#Z72t676$M~aUPE5ap^^$m&cwJ~8oe`p~ zb?LvkC;D;Uc$WCN&=y4riF}hF`=Mu|@mIbdBtfkU|NNe#4~HS1i*COd#EoHt5)%2Y zL)wUO*uFD*FJFezzgGC7mpAAsQ{N^BD7XH$=G9;)a+n@jM zf0Q=ndkZ$(P|BftF-aa zAQZQv;>Ku{%n7}fQf)jVJnMW#LS<`x(@O@$RoWOLcK)_z1> zjrmHkWI|S)wKO-U@lZ@DwiH*CknkIh zwIA9!@F&rG&vVyBt)G9=(Zg{aOkZg>JvRttYD!4>&BVzhtyi zLV|f^nXjDTvQ;HJrw@1P{Fvt}ue?a4-!ivHTs8U1M5|R|A#Kd_l~-PK!Yij?2tPIX z%0$LhX-UR(+L-4nw~9o@arR@LuS`%Y=VscN=PP@cM9#;w5plJRxZ1@$FLhBXvr^j7 z)j#5@LV6vtCP z=K0D5wQ@FRKj!($-X)RqJbk6TL~$J~Bgnd_m02lm#C32J*TH>V2Pq+uc_nScb#N2c z!ChSkNl;6+Jqv~*u7jJn4({qYNC^q%mDsTrnfkNwcYF{(`ItW(*H=E1Ly_^YAO9n) zuih2fr^FTEZ^ITPB>aX_jjLOtMYn|Z2WJGe^j6ZezKVObUG2)$T_h!Q!Yij?cyD-C zE3z-n2*2&5mVE5G=c6Cr5$h}UL3=+aA>mU)YCk?0SG41!=bxAn)Oz1vzF_p>FuWy* zuY|v}`-~D2K4+xbcw=OSv!eHRo)Ogg_IsU&>!5PUBZ7!~whbjDyyL&xh&_Yb%cA!h z6B5)?YkdtKhKqyv=^*Zut+Iqfp2DzKZA4scBd)fJE7nCVc|CIeUcC-RTx}z+wi**k zNcd!uY9r!Geb_3lNKi|oIjxEG3?Sla>$tLHPI%>1;z}$1t>ems>a~_;!PJk4tKI0s zR&hlM3B~cWzKXcoL|knZS0t#VxoNMLxY|TqZ53CPknkBP)mMKJb-z4%|J5^sT3@=` zA0n=v9GX8J9{!I(QbNKf&{P}$If(Cx-Bdp?BdEn36VH}H^F^`4R5_6n63i>heC6Di ztty!_eVBQ7p0B*hAd!B{ygScVCa9Hhl{V)2%B!V0F|DuW`N~8_Noh&OblRBbE4PY7 z#&Pyzp07+$E9Yj~nCB~dmqgCTv=MQ&jkwxXT(K@{WsXT3R|oO9AoK*15)zqL(uVHt z&X3sDQv(vzl5JnL;|XLCn;`C(t+IrK>`m*ddA>41EsclQ5^=4aIO%91(ZmD4g`nNYpf()_UPVVLJDOGqe=r+&=yl?iI)Y@Xt($yfF+iJa#- z=5Za|#C33A*Fn}rt;|Yk<9~$a;mB7%7bGPlGOwhKUk&2Xk+1&4jG&fmdltlA&d|It z^3_-3UrIOHO{zJJFAL zroaF7q5Z0$C?Vk!1#3Uv71zM`NADjoBdB%7+1HFdEbjtr_k*~DS_KISpFvn{oE4ej zw_m!ud*2yBtp|PZJv-BLhRcKa=Rs)fDIwug;Hr&n5I4sAI3J!7)KY7w>-n>T_|i*u z_y0w<$`TSjQLx(hzVOwLMh4Qjvo31M>yh&_u6{X)Z;8KON$*-h!Y2w=8~-du@H=96 z|0`w$wKSSu6AiQkWd^?>#O_6 zZ2Gb2`D14UwKO;F^|GK$AJfKf$8368WS`Tfd0y(GR%WHN@s=PS5QM(}poB!`m9(MN(xs8FbjL!1TA5wb z#vcUnp~zRxKE9rlkiBVrHP2TjsFhcVv@y?DUS*Jw-==lRJYSihmPXTSqGi6aWKMYH zw9Ho~RIj!2s-69q=PS30gyMMW$2?z|pjOW2v@y?D_AZH>=Q-wjXX&Ytee}$dbx|vG zOxpOH(0pDH$Ua3vBJ)bxP=h!7HyhF|DuW`x#8+x5%X>`JH##(7l1y zZ*jf#x8X%XBERR(e$4kXxF6KY@9xvad_RM|OCrCoPaFEaE1o0oULUPuUDV1w2x%j} zcizVL&SiZ?2??J;S+9d4-Wn?n?0_hBQA@U`>v{NT8*hQ`e=u8R2?^QLInvbzpPsWW zYH2(o=Vw3St>0!pgC!*7w`pB+d9*0z-?*Q_1hq7p)B5UAj5+r+STZNPa$4?ZFrj*_ zrTJmo@m5=`uehJV5)z8zsUP91Wa*r{#B)87 z*IBzpP|M|NgL{N2aar}|ueE1C)(C33Ty5}83rbv;4SHl4)(C33Ty5wKq&nA!A^lTM zdvaMeROb0UEn&%=h`sNbcjq=pSWC3edQy8@8E zf?Byc>)4>AM=Zyjgv-*(Rc6NqB|W0r&>qVN#{EH@I<(C*U3PB0`y? zO8GpV0R*A*kaUI#C3y}@A@YQk%%cA{R{451s=F2v)XH;M(#D&D(09-Ax20rG=sdF8 z5AD&{Gv4@Xh&)xLXyw@{Y2)I&lTfQDA(7{$q>Yb8ul4qTY>=RqPgRl+>$@2`yDjcm zwv>>_^HS1=zG;7Uv@G@(H3YSM)>E}{{~)f4d%|bM2vS1A=Q~wjJvfLf;z`j`2)>J)S4VD3(^~WGq=Hk>{{vKRzG5)`?m1EmlKNOFq;&UbP=Ol}kGg-xCBS zB;+@p<5l}{WB5t;=W~Ku8cm%cR&AURev0pjbiPlC5=-WUP8u8IYG32+xH6%7t)-Zr z`f>Mo1`zvK^wgk4yCozP$5TIkBznD#S@oAQf?9bxRQBVUq5YEhdrZz+j|U0ON1aDj z`*A|l{Y^1~Z=4a-@@aPItI#|*=AlNA5)wX-uG-LhET_ej?TcpwwU}dKOJQifDxN^T zB3q@?5M`YN^U5$>8@+yTL`t0SSMrrk1QL<0+EYt%Jj&<8pyxi?ai}PvghcwS(8CaM zRi3-f32J3rrHzQI@?Hkwsz~O9&LbP+s>xS6k4*i@C@ESw3(`i!)voqMDXu6Xk#U?h z^xWs9=(%=Ok)W2(TdHHO)82G;8)j{>P9o=H+R(G(h!TBU?Rj1ZYWdu#YD4+zBW=D~ z5I*0j`l^$!3PG*RuI2M#czf9Rjfi&b^P+@=TB!5LstrA-{&GYLGWFOhYsrT?$E)^3 zr*g%0aI5PeC9GF|(>Y$%MqCH=F3uKLoKhFHG@3`_JhEydu7f(~Zj0++m(WRLV_Y@) z%5|w;YvnaKZNznOU%kfFxkyMTj;DTnPvomtN6&SQVqMho`Ea!#XNLB3<1hBCd6iLY zkjQzS{rK|xPT$@qM(~muK`ozVS8c@i9^0ozU#^Z;Q9{D!(N$k{@>OXSwKDIfuf99# zep}?Lm(8*d3FehJ={DXOy~A1cc?r*KcUkX=w&%B#prl9Cw@hz;!WotMUwhgv-*B7asehOVb7kN_s@KacPX;XVjPYkA%z8 z(rCWz@%w3m1SLJ9+W1tQT@q*M6&oa6mX@M&>IVr*dPKF6Gpg7i;j*+eyX^IG4iU374g%sGRyif|4FlZRCt9Hb}TE zEzK@_eYw7}q(@X6%s#BkWobD}Eb|p5J)*Hu@>OQIJ*={=f|4FlZR8baqu3?kvb6H*lQu|D(j%&kymA&BBwUtOUPaRe2}*iI zwUKLvVuOUs(#qAq(K0J)+vkl}s6P*5$Iaa#fQyNKn!vs*PNcm3&3QW%pyc z{~)1yE$I=}M*6DEK@u)YOJ11nqexKFBdU#DAr~7YT$YwbbGjcSK}nCOHgct3Y>;qS zT8hf4A0#O05!FV{sA7YJ%hJ;9ve%dED@%GrwUH~CGUlwyWobD})Odk$Y<@0jB&-S=@h8#Nrx0H~`{g8zo27TKX`%<-2wjrpM z`z+JOaq+zUnjrM;4<&O#?;F&fzbKxh#*=fs>D>^yYqDtNKFhRmhj>P<9fz^6dP@n3 z+z**HG*9W0* zuqYwn^PQ@%MEp&R$(*28?xu7v(`*F`Ojrrr^#Ha;6f#Fb7LD^X&}oY0#D zV_cOTzm6*ts@Gb%FFbABJ7QPo`@~-7676mk3B~c$kND16r`ByfKTJ?7_j0EV{Z>kx z30S_HpoE0xqu&3h{fN^Ewy%s4jMJ>PB&g-H>8h_Z4%;B~FC`>=9$mE|&9{Vy=LEHw zV}?O~(zm?v=1Xan-b9df63i>*8~5#7BT`O@d7fvw?1{)zRrb`9Jcp%x9yY>Hp0$*a z$n#PPJq+@bPIHj2NVHn@)UoQT8-j>$6F2egzOD%6JTgh*(jN|A#XkLppjMupk~aQ2wDlLK^=v62k>{nP zjjN(XPl=Z4jX)CA^6603SIThzH3;>b5)wY&sro9u-`xCpcsSneYY1xPX)D}A))!G_djYsu8g|>SF|kNEN%#D`82y~BWBa~ zSwSdMQ$oV$(N!BFG!Nw~64YXjDd+oa9}~pwvsHQ@N7hL&uPpPGGhDW6M=eRO@6>+G z^Hq#gk&sBg6?&PkOtf0{JhEzIp06TGij6rjt*_?!%0$LhX-Uq4?8iJ`xm6@G^0OcF zd}V@KIXBbBJYU(nByv8cjfksF#MQ3iigi)TXFZK^wTZaWFW5Qz6ze2>zS9_2It6MU z8Lkl2l5MY|>bX%7SNn=9N=V4wbUmNvE7wJ>yh^06=K0F23=;C&v@V(FD-*3&J&$aR zt0rH0wKONZavBEtN%PS8%0ylV%c$iwIQucrS8f#v#qrdSdA>41t(@m+W1g?Z`a8ZsR&wqJ$C>K98=(Ra^(RaUIm@7tU9uz0}I=n*Gq} zdvP5sS7%B{Ft5bUn#j_hiECl(``PB1E_-Tko~p8^mgG4sC&5d?jP(mWl zODXg)d?tDwyHUzYh6J_p9G0|kuUJ#ZzK>0uYp|tcPI%>1e!o_cSXN{t@>G@5l01hc zZJZJJgF2yEJ9sD|k>{mkKduiy>9>C4F0vu0m1n14(=>B=Q`V>_^1aCgN(VxME$@%5$UAM#NS56<5U-B_!mxXTIj5{l!g9}!pEh%5bq zWJ6F(bJJcQhKMVjl)hD5Q9?rVaav!!I_iE|%&NQ12x|Fkx*AupM|k_#AaqAh2??J^ zSK~_A=e+Q+*1ROB#T--5x!VaMP918p4+-X#WxnzXAX~NLeC4&oGGAFjBK=nAWxg^& zt&D}8>Z^Ia@@i>LOzW%o{n{p9naC(9Ey4N2N+==W^POs3JvxX7MZWss89^=C_Eo!{ zYw&`|S6XFILPGYY_0>FIxh`sHJiL}DanZ z@V$}Oe<-eO_X#4;blFpT^Hh~RwZx}&)qeb95Z@fDjK_p6N=W2+DTN+}Q)0}|h&l4g z89}W)ho#sah6{qw(njp@s!C}|p2Lzh-Wh(Ur=*Q%hG%z!_(BkrkjV2=(uSUepA|cPl^IA-%V#~+@zAMa&j~{JYLt-h z`A#*i;(5>J{K!6Yf?9dnO7?^6D@sV@IV{-^<|`7^%5$UAhR%R^M#Pp*IHH7v{5Gvi zzAi@a9?@&fMH1A~XnGYj49^QfcSdDAAej?hISs>~hoAI(Oizkfm&(@4bEC2!@l1dJ zUZMRLK~X|NaXj_oucFuQjn&dm&IoGxOt(7bddK9V_>1#*%dGXvi-hLmw7zJrx&LMkJ%tJjrCqXUQ_Eo!GUr|Cr_WJ8964cUocr8(XgNOOb5)$&;v@V(F zD-+bxXnIYw%vYAo39p=%`O1XqwN_rWbIj-Y%B>=yIG*}3&sQd><@4eC`N|_jBIkL= zm97F$j_mUdQ)VdbrIyd8t2W*o#8(HQZ~G`A;q&NfTX|Ca9&+ zoYq(K{S21O39p=nA>yh$Z`Vqnb*XHv+|`r)nD1wBt4Ju0r+&=$Gnk-O?gL00^Zg9= zE{WU+ka2ZOjP*OBFWURTx~S#T>}p(TU3GmB`j-+CK98=(mEJCWag2%nB|$Cbm|^%_ zXud57x61Q_1T#@&pLmDmmHBQ4-|lz$4L@`A!hFMZr@jYCf|4E~I^K7VcL$G;cL?Jf zl7WQF(#khn(*_AjdPKFsw`)kaEUkR^HEocfq(_W4_G9N{=?4jyrIqiiPBun@k{(fQ z{A9d8`1E|&l7!3BYTt1uK}nCOHr^QTe*E0o^?e)?E=!AVJk zl=O(v#+ZFbxGb%V%E`t^P|_o+4Q3w_E=wzCSK1&!Nsp*Dn0-jNEUnBEX@dkMJ)*Hu zB9Vm4?nj&;(%LA5>b0atR2$4bBwUu3yfB>sL4uMVQEf2$kZ@UA8cm&HoH@!MzRt)>NW`NLj+_=d-S;Q)eK z`Q}rHpkz+G?v|qm5TdP>Z*X-8N=Q8LoJ&{wL4sQOCR)b^B_uBV-nWdNo_s6slAu<; zQP;6S35lC8xcuH!3`^ahvS8C}|-gv6g*euv%2y9W@|(i>cQ_jPH5 zk~t9>^#DS&we$v8zaNy4_{;?-uJnThwe$v8e>^B5@vUz?v@#wfsFiPwb$U(-iRYYp zXeF*lP%Ga=>)4=#gzP!;+h`|2t$d@dV}lYB@>}Gq0|;tqG9!vv@~T$q&8v3D1|=l&x_baYtz4IM2ueug`r!bAT0F6!?KveRavjvML4sPjw(Ag- zkdVFp^@9YpUIy}8OLWxgTb5|oh0 zbx@(#32J3_?GTiZ$h><1L9NXB9fA@Pndc86sFl~j4nfJB@SR2LD-wBCEA{48yJLeA z5_#P{fS^{cB{~EpBy#<506{Ikk-wZDl#s}EP{#%dYN@rp%V@nz2?^QrlaO_STJn12 zt4^yZAtAr@pO=uJmPRx3ZpQ{Cb0RY80fcC4X%_VRK?w=PalaoVsKp%9dY2Ls%qzq2 zvG~60q&y3WZ}+>b-&D)*ws-3HoFpje5%m|@@+^yu+DF1=Y2|m@X@dkMJ)+upM|{V5 zv%kBmzjsyYGA*tAK00lXprl8PHui0Ugv-+6i50^THb#Py9#L)Ni6_NZBwUtOejh#g zYCKPdk{(fQ=;W67=Xb&+T$UE!$R7q0l=O&dLuYd8^e>G$376du?;MJ^AV8>IOL|1L zk-jS5V3BZHTJnPTGsSmBht80%3PDMas5Wv07ldhPX*9hrYaH`JP|_nt8;acpVOm;> z%Bde2yM>^nM^qcp>y3L(!ewb`cG>I2S0h15kEk}{jMUA|Ip!o>mX@!#m?pG-9k{(BdU!Y!3ANuYViyR5{eA(@#+zy4aIJ;LBeHeDJrLaX!K09 zl4_4cwUINb*dXDuv^2Zy_2Mhd+Cos$BdU!U^G#d_%LtNiSz68#HJ6Z}q(?M1N+c$+ zqqPNq#4v=7k)WhUR2#aY z*;gc7mR7#6I{9iODCrT^MvUOrV@|?lY4QE~VIV_ft3Y2|394HA^}h|$KF zeMq=0t&Gaa#z;`oBdU$)`Ivo3xGb%lU6Zdyf|4FlZDeLBBS^w!X=Rp38zd;{5!FU! zxN_wr;j;VTYw(y83!!=~=@HdN`l`%95-v+iUYOP;Bq-?-)y6zuxh~Vv(r9`WwaizR z^oY?$ldnv;UTG;RZM)bQ2}*iIwUIMw%vY|(yqBq-?-)yDbpgyo_6tdE4t zr5|Tsqj!5!J@af*5|MuCGYA?0!tw za}ui8k{(fQWY5bSB;m5Od>GP3A+p|8qS|2gA>p#L(hF&W1SLJ9+F_ft3X=PNV4HA^}h-!n`hlI90mWP^mu z(#mg1(*_AjdPKGHj%bnh8jx^VTKR2n+8{wmj~H!?yAw#bEUo<3da^MRl=O&dL*F^8 z_wp49m!*~8zE8dy2}*iIwUJM@%LtNiSz5V^AZ?JKq(@X6`GmeiA_4_~$0?*~<{ zB|W0rNMDuAK*D8d$qUoEgajo$qS}Zk(FhhBBwUu3M$@aP<$eZBdch($ literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/fixed_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..ea46d6581c9bbca5a72b654a3f761d4d23381022 GIT binary patch literal 280128 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 T`u^1eKmVlLdy`IFdCva_2B5bb literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..9eb85cdc773d124342ae501263d8e7ad868bd5bf GIT binary patch literal 22884 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 J`+2(S`#-^RwOIfF literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/length1_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..5375fcecb09466f0fe4362c4f3406f2530bdb429 GIT binary patch literal 86688 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 A@&Et; literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/length2_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/length2_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..3ffad0f2e9aa20fcd1c43088934e404c02b86ebf GIT binary patch literal 21684 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..1afcdd2c98e15bd71b68e913ec6a2c88d59b63c2 GIT binary patch literal 22084 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

    -8Bm z{C1}V=E~5`fgF|XGRo~}w9jT#m17NVTOOKB*bJ`s+p`ZP!m6~X{D!7KqwsFvcZc*A zd|8R={r2ob30to^tI{{+w?KU#c!Th}Lt1aXt)6`-VJm8P3*O%oM&E?H-$7};{{Aug zCR_;{F$=y4$4qPcBQ#pC%fowymf&tVR*cpM#xD0h{O$}JjJM$#6&l}Dan@q5#qZ8J zyGn#r{)+6U!RSkzxAGhgGEdkb$62PuXs71>4>a(B8ATaysjCUR3GvGh--wBC3N&h}`>P%S4Xl*FsH|^Z zqXex$ryW@$_+ASuo<>3DT%sa9H;iNS8VDN;<@b2~ zsHlOJ5*Tm8eXazpIv;U{oZ8Wh#2OXGZaw!IC1?d7=5J&q>O8lRSnoY^&i7kR4eC|G zMohi4op%{Z&4O*_CDe5FRwB+d zS|3W#3N)V*{p{+V8uaV$^mSEJ0)0NbiYh@XL^Zx9QUj}oDF0uRemj&fx&GfzP(D0% zsp%q7qC1Ujv)dA=mk|!nL7p1Gis!qK$5(1AoB_2yl%N%8j)lGtYG9>AoMp8>l%N%8 zj_JM+jvrXznTU}And7ZbP}34|M%qTD1g+>}c$9#E23AU7eXQTS(%4mkR-ngs8Ag;R z3#@or3mNmKp5i1QcusH@nU6ZVP}68TiU##6VQm_jgRBb#tsrxz_4|YI(n{VYMxLD7 za@0!#{^~h(YPk}$f|7hTjdS lft3>2MGe1yC_yXG=-JnwA4)(Te*a)ysFzldIX5Sh{{pJxP)+~< literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/length3_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..a812b4c592b766e2313b360d011e3d0cbf2f9dfe GIT binary patch literal 84192 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

    tohNe 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�R>MtotApb0WsjEV0`VhW;wk%vv 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 U+LT`>o;UM{y59`AZreKl2c}fom;e9( literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/slider2_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/slider2_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..abd8c56876bee67eba72198cfd99c7dcdeda47ac GIT binary patch literal 70284 zcmb`Qd)#kRwf`5k+`AAP6;U{)u(gG~zt8vEML2Ofozto0xR$PRl9Q7h@pP0*MJSi# zxP%aryXW~n-{n@nLaw<$E_scd_H5&G1q6VHNTrbe$VTrXZ9WAJ;xkljycy{ zeHw2gj>-s**6A+c5+!0pjP4LUj|uwiISrzR7&gRY;3jL8z(xR@=2mkqNZ>p-vI*#3K za6MW(Mm^g2;Wt)1dHdhr(jinU#xN3%CzCZi?D@)xb8cEO7Yc+*l!!U@5`=28C(Oqf z!X--3p6@YLb?Rl?|Ktt(|I$2H599n>zZ%1;+G*mxlTJD6+)k{Nh*=Ux^{#E!Ui)Li zr8|UbEpgiYGOE`+v-F8CzW9}s+A~NkUw4|7&1?wKV@4`*<)aU#H9wwEt?}8e5+$M^ zX4`B`21}NSX}65oZdz>nRU#ji?jJG7jOgqo5u2=4QXra96^Tfj)((5$opL%Km3l}m ztZgGSA~~TFC1?-3L}64)s8-DO0-+Km7zH0;J}M+YCsZr83pP}u1S5@eNrAvTr|UK{CY?(; ze!tG=qf$wMDA-UUwoMCdo}z~QtYafd3Pjn45^S3m^SB&cmBf)45o1*tRrJ>TW!$XI z5sp7Cxg6E^NLxF%p%NuJdr7jPglZwj zQudgQM5sgwWPZxAd{lacjC-(o8+W_L^N8iwS|#G{`Vxd{#oe_bk{>z;(I?aD%tsoP zN|cD6H#UldYP~$qmB8M`yUBtL?Mt;t`>qrRWWOeBj@?&IY+JvKNOq5t{7^}OD2z&p z*fuS$6}O#_N+kuNU_*)6HZ5kp?-IEUl_4f?>5(S{Px7`o!7?}+t z*sn`UM6eM(uiXzPoTe6|!0SiKD@NA{m6V8JBhFxlaGF}2OtL{< zgi1<8X2Wt<32(a}$c5-fwBgxq*KJxa5y3``)gb0oA~-7cOD#qLd6mb?2$htGU_*Bw zCA>{7&L;2GvN<;!Dk%}kM%sOp@HVxu+le2#U#X--1RID|+OL%GHnp&8rx@n@l}buP zuz?v&yN?pyrWUR~d0r(#B_$%WVY`nK-gZBl^$|y91p9SKi3m1gtZZjc!rRnh6nHn8 z)?nJNR8k^>4c)Jl@HVwLo4n^td8PYRl9Y&KBkexutLJ@rJNm)vU}GZ@=r>79M6eOp zpv6iFZ&M3V;B~NxRobsqQX+y4-F=ksHnlLDJYPi{N~oknWHxN~QNr8qM|rwTplB7f=8@gX5!uzEbc02Jy_bZi@h+sqa zDiK@9k`fVY=zgVyx2c7zPo7t4zfwtw$ZXi|qlCBJk7j-7e#L%WQX+y4 z-LI7JHnkXqW}Pdck`fVY=zgVyx2fg3L~*}LyHANoHq!2czIaU?vM+B(KX@Iq&-431 z^qV9lBG`y)(Do}OyiF}cf!D!kLkX3Xh+so^A0@m^EzBmbgVBZ(Dk%|}4co7j@V5Jb z?8$8y!G2v*B7%+Rxt(N`@HVv=h4THNN=ihqq5G8*-li63bL{^8 z+x=+PhwfMG*Ciz)*od*RHK>HQsl_NX>s$$yl!#zM_bVm5O)cLgiu+aCeM&^If$xZH zzIp$_Pgt8==cpH_z0KeJkKZTobL!=UOG*SkBf+0Q;S>9oB-*exwVZYv8KI-<5M3J| z{N8NSI%ta@Pak#g+pPWC!LOzdz5Gw}>EEn}zH5FoHdLa7j+WZ|34SP{TKIf=tc@g5 zg5&q72Mc0DiKGSptWE!NLM7TSd@_PjFdr;$+47N4+uJ@j{vA@6a7l^i&LAU7g4R(( zwr704xZ;6Rq&<6RgFj7{xI_tW@44asOh5( zUWgw_qJ+1LeslLl~AqmeyBtVuEDW3Y}V+lYUQ4<`sZW%*R1;`+ZW@LM^=aN5pur$^UELj0Wz^f zP@;sl!<_HD_AmO+ZnS4+gT$`0cb({e{DR(pJb2W!+X$Js&$EB)KmVPb2Fq>w_sKdX zN__jhpPYE;xN~|-ob%rp)#1zkrN74GI}f(Gdew|jEqos-PXb=E_5Oo%&VO`*bBS+8 z?FrL0=bkz3ZQ9#m7M_z^_n6-IKJYWxxc1h42lrjJP5+KheJ7JB5ubFk7*^Gxy)_39 z?6vja(X*?IbtLb@NDjRH?B16SIAJ;;)gQjK$>8M4xr24qKJ_A%C~@+opP9J!HD~lr z-SK3MYO&9JV6gC`vj;!j__U!Cs+Eswm%Tqc_{l%4FgR`X6^1HN;_W-{K5^!oPUR`<`>RiXxp)65ue1HCxz?(rP4F2n z&J%lHG~u%e8^f_SOyV}2;M0v`Z75+{r2T2i?x1+Jw_)BAtCyi*4^We$H!SYd%!cCYtE3UTu9c{1~_&?s+6q-28L% zqjEx{*d`hqzZ@Pg`00OcK10?c%JF)ev-Yq5xyQtF`yMfz|7vE*>+jlku*)yE8GUSr zZIc!W)rvVCJ^$e{f9dc3*v|EWukO%`E6OCd|J$c0o?3Y3@b*nl^8G3jx2^oT!A&3E zrvA}38_dL=tV2{Meq!Q7*PJ`N<`q22{M(!x`xpM(XYFjFglhTcVc$J-w|xg+yZ>KC zFZ|-o+1RHJ`255%^^b>V{l^*8xgWQ_?+b&4%Un2m)xtwIQHc_dJ+b@5+NU2sy!X)4 zF{*X`{R4xQcbQ$k_R?Qmq=af|M5^kxl|Me1{>cA~zOcg{Gb&Nyn|pq4;)T6V86NZc zpTfq6-oDjf-Rs_1U-`fazF%3aR7)eBt~eH}cx5rdv(H!}o_)-}?Cj$N zPeo=O{qp=UBth@lE_$9MN_e~Id555u+u-jIDQt@#T_Y&be!bl#;;GO4i07Rly>+4+ zE0rh_Pfo+^3}>TKLbdQY&xsbd+z*u~fi};HWgDq4)rzM~^NBV>oY+Dvdbq=~nesN{ z!?w;~PPn8*kY>;P3Dl{_UOA68W<9k0aQ6DQOtF3U1+&<;&(~jd?v4q z8ykH81l|vtAEzF>g|)ZdaR?sYHooZ+(*ypI_$LMG&gB^INVq z;+ktOXb~z=;tR-Mj+P_LN5$w-!rvNQr~moy-_Y`0B}%xBPs|RdCE5v|zh{?E&ZiAV z@!Lo5U~SHU(w$LRmT*)`AZ|u?ZD?Prh0z+(^@Dx8=jszPpPyf`+gn?nt3(N(&F-j_ zP%WRQ(a+!9vY`?s5Ct1mH+Pj#Ezh?up%Nu9PiCW=?MkSYu7Z39RicF3<9ZxVsFp{e zo4ed`LSB8B^`toV?@l8V?ei|7IjR}sYrY#Rl_)Vjuar=&@q39%lyE<~d8LGE!S%DJ(we7*&2dT-?b_taz@ugp`X+(F`Dxq5bdC?E+ixMUF*>|1vdG3ey zrCL1OdDL@4B}%xx?wLUe)j}?qjbdIUi4q>S?yA+kRLke7d$LqXiMV37Gg_w%CA>{7 zUGt1pQ!nx8^0&7+H*E7X$lqPUB_$%vIqtkhs3+P98FyIeT`NB=ll0HSomYvVLlPFxC^3?W#gOafEte9qWlnq6F%5GpHvHQ$2BndSV^xiHT4x z-0#Z!YN#jHs3&@5!rsV@^(1T4bJWOYP){7DdSZ=w;waV=lLWPlMBpwwy(?$+#2WR) zI@S}@cu^gkK|OI8>xnWd)Dvse6YE${OcEtf_nSdIahU3fHR_3VtS2TywenG+o>-%v zSjT!|8m|(l6waWYI861#8ui3ctS2Tywenc`S(iD<_;?LTW5sq;DQXigX%ktk&vMFb zviwPV!~DrpnV45FS`qn_yB0&v~g z*fqMS6waWY*h}@q8ui3}tS2Tywc`4S^MQKe2=&B4tS53snFLj?8PpSdv7X31CK9M8 z)~F{AVm&cQlt86$2KB^Vswa+6PaH7LaeobciI#sJ_FdEyYt$3_v7VSbM0Icm^~7GR zCvt7ZQK6n#qn_B0^~5Am0(HL`)DwHDo>-%vIEeMcM5tEWMU&?ruTf9z$9iIll@h2F z&Y+&yOZCJW^~6D}CniF*vbgaZEMB85R`JSW);&I4MgDoX;*&*=_zkz0`z|!Ps{VY( zocj02_xpFlh7ziUr#gDgb4v?BJOu*32P#qG=6x0#!4X!~!ys-rzCXh6j8HAw_NPdy z>MtNxIiWwgEsn}1O3>bASDhIBcoDJUe>b-X)nW{r=S!4Oi4u(4)HXkgHXeiz&tqh_ zz=jg4h4Uewjg0fLBz(Z^)to_yB3~$541I0l ztsNm$q6FjSD;V!~VMLt0XYijAs>RuCo`*XJ#3Rt=e=2Dc@THNk zyz0liN`0wTe7Z5(Kwj0ztA5O@p+7OM1S7!D!+wRls*zWtm{*BVEshr16Kx=`YUI@@ z=2em?L3_w6_XFz>nNr8RN`z`LhRyT4)OJE8N-%E7t7rpxH9}t1F|Sfzs)gC)vyssc ziu>)-&_!BM;proL1wKHV5&#p@rggQIvIOj)7?u2+&*TzfHIybdNpwK&>l zeK4PJ9qh;JV3H_7d(Ha5Rc*lk;&m_)s>K-k+N>%iRH6jq<|`O$5UUB-!9lzZroL2* zv)R0Ffa_qNSDSbpOp-Q%D_oOTx?d%N{koR!F;#`@;0V{jLA(y8Q7NJOih0g6gT)G- z_dF&T6|a^yl6WqOa}Mo9s6+|Gjn~2G2hR(P7h|P_YQ{m(BCVVHVs@8s$2=?n*$Sd*V6wKaz7!`L2l_-I{5;uU&|b4X;@)mMgZ8CbjG?d1w6`0f5+xWnU%^#{eZ9}wYH>E3{mSoe zxVNjMP54e^d8PYR>Wj2%=^j&6yuac8&b?hFO6a~~Crh3H>?{gDc;y`W`N~g|h#{|C z_IXaI1b*=PI^=l=apQH++K3f0o#)Y*SE(=6is!3n19?>=ulg~scvUlr5}1GceC+wk z2-V_fkv-7{@~TE&jbdIUi4wGjyo!G4?xTIF7GsFKiZ+x`i4u$(^2%d{5h1VYm{+MU z)xvD@+7)fY^Fkf-DoNS|GA7z+?N^ClzpjPsNwzJocz;vJyh;)!kXPbIJOS9fv-YK0 z*z;4=)0x5Vwv$8&?DH}oJTLJ6IbH`7p<3}w6l2A+LcD+W(~?P)i07aftHSxp2-Tt= z&HCVZ0oOsh`%;M#wAZW;-LI5TEymE-X1-skLt*JD-j{)YF@azZvgREx9e_i$B( z>!98bCP|y%dI@XL&kON>FcIw6wRDfEDqIIgxDF2Dbuf9TgzhU<^+^1C91r2|q_7@_ zZ`|yi7`E{(khSBtXT9*vs1hn^6Ql#dw}e=)#P3=Owp}ZJdlsM5S3)Iif^_)qZbAHe z92i}#1lz6^zcK5DZ{n0tNt+<8-`&xZ$r=Q|Up9%-{Cqs&k`^IP_G47`ju-uC*+~6j zggx3$o+m;jIud^FQ3&(k^Pz-lA<||e&0y_>O45 zOWxXB?9=<;t(3zbICitI@3Y@v`@P=MS3zF zw{{!MKl`mSn||bXy(j*#?9}#Wzjfk2(7xfpWv4D%WBr*AZhCWXvDvGE*yFEjZT??_ zO@IBVwFc*2uw_Q5)*E+Ue`eP8H}{@6 z>hD0j`x~oVeC6}o4feQssewwA$o*KMzwPFe`)xbebJpq^p<1)9T7TvjhuqRzZ2s1; zvB41!U;NPvzciTo*CYEXQ9|R!{HUsT-L_Hx{p;;Fc<8ye%$)JWjhK%m_?}N{YYcNj zB}(k_;0K4^Q&nBj|K8k_?%$|?)w=s-^PyTA>0o1-XE*BKu@2^4W=#pSdyS2iXU~~> z=;`nGk2q-WHj%V8{^DCF*0}4Y-hI2h0K z+S97uj+viwntC0=v)!IgRf6rR`pvrA_CI|6b(`#nr|ZzFk@s z1ZU-Au%UgaR{Y%dv8vh@#6RtPsM*jrb@UA$?WwAsh3EZsHk`YC%Z3vA#!ywQ3>$;5 z|7GL$s8ma5v#K@&vD%ryAN$o~N^qO4@`+AwR<@!M1B5(q<#gpxNMj zsH9DhPFd1ES^Aut4Qgo=EE5x<658{A`8nGmR*WmoS9LsJ%}^50S9ZmT=c@^vuZHP- zburFYbv$1s0_TLJh4aG<&R4^5zM_reZ{KJ%FPs^8g@lbIrs9>;+Bg|Z;M_G_?EYnO zt=;Ow-#q`D4{S8LG@JmELILW987>j3wf64oPb_`?&BL!9%`@CK zd#tkA70+*1^9-jFCGuFE*4y@y;eOlJZ^Ri+3Dv?$Z31VwVLHQYhBI6p&u~eigw73T zqpEOP8u7HG5k;G)Fq;pJLQbee3FH`0fJRr<*;{^Z{#j=nK6-2mJ71-lQZ1aKW^le5 zX6LJ!c)m&!CE|%Q+E^IxSf0VXXZzWF<}sf=)+g|@RXb1#+fMK~eYV3h+gz>mpZl*8 zs>L?OD=uJCOqCmzGRs6+|3 z7oNZ#N2r#MHW18?m?gDJl<>HPw;;w5s^w7+1Y<-S7+tLrC4BzFTSDUq)$;5K1Y_hj zRHB6EaTwJ&LbZGq1OoYFD+>8lt3(N3k0H9_2-Whn83^AQxUy8D1b2)kuf`ForF)F6 zJ@ccz`zYb|!dnoWIYyWBg6vE0k|0aw`6^T5N|eC-&nF#rpK*k0vEA%f z7{ARq_Y##Tf%!KZY4<4-s>OD*Utu0BcjJDQBuZfZ#gB1>YO&q;AuEdeZjva0`7j$H zy5k7dV!N3Sj-T_vIai4in18bo_N#G(YOzflIl_;Gzda0cakvTlDu)s8*9bBp#LBM5U2{@^?&73m>5teqpSICqlLIH!V;}9ibM!ajb=>_to^hJ5*Sce^v`0p%&ip zT!}bB`#u40yTAtXDps9SU#b;t;QMoaH-TFC2(@stp>LV#+h_TxPzxWS7Jh!Lg(n+I z=-X~q3m>5ter|hIs-?4OweS&Y;Wi(d4fiY37C$dXS0zf|=@&i&S(pzcRExCFZ0@;A=!ZW$rak3^N|ay> z{duqPglcInn@pG)Sg6AqxB0h!o5`=1z#;Pq4Iv*NoKI_#y z@!NPZIZ%lbY?u9L6Rt(uloT8s3YJDH6)?z`?ech`a+=$EV0B(TR_&Dt1Ydcrs#l}eOA40**V*ib^X z5b0z)w?Qo*Z`+Tu4eeJ6jv-v4MBGtdf>15e zs>K+(?VM1F665{Q`OrDwXpvWiSgAw_`c$4lB~*(s^jygO(CA{Vq&d*I<%CLpy$(t`BX{*QX=>?w5pq`(9OBpY^5sz2Dww z^HYyJG9y$=pTESv`#Jfs`qF>c_L9FWzSKY^O6XGrRrTC;+tx?VUuCl$ez;mjsFprQ zT2*h_dbxW0&6eBbBUgWf&p@W{=ruk{SJjqJFBold*;AKX_?6uTDp5k8hpnoccUh}` z^=BWs=%A@BGeWiUQH`5HwZYkBK5=I8)XSY4jsCdjg7epkbM6u))W53w=A$7?KDBOm ziq#3#q77zyurceH!$(&wb-!Hne=CC z&AL7T!M59WZT_AdsN~``mP}e~ANk(zL_Zp4a-dpm`nT6yGlp=95^Oimeza{U;ac~f za_rDQZ}jPhO0-{n)?_@PTI{JDE0rk0_RAw&i#?U2s}k*(ZH_U`(S!1ke|D~d{in?g6)?_xE6aV&xcC1U$!}#?y7AQu7&mAE89?s z_KR4J$txvPi=Vqsd8|~T1luoK+3Pq_`1D8aauZA7BS znWC1T07-j0x1m~Xnws4?*I847ZOpmZ?%MFaREwkX&vQa0N-&0H8%n6wc+XX$M4YFB zA8i7&W?CAB+>f|tm=@@v&q3VB3N}=t1l#3UwF%e4=iJ-NHj+g9MSIMAXkV(u&piqq z&yz$6wmk}qCR~gDjkS>^+ArEE(zy-HEl*yZ`QQn_?d62_)uyT0T^}S|q6FLJ`Dhca zrDv3UR4UPak%>I-7UoiS*R8r-+iBb!cLvSs$>ixPRPIQv}V{9in|Xm1Jd z`K0p?d9}5V{qUMYR8^-L!|*I8HJwn265DNlzR`Ey^ftSOl?m0t)23!4Jd0cwlGhXV4N|c!U%fpOdq=UXkR|(a^ zQ_MzW|AvCiph}d$mGfl~s^zxBQ>-OFC{e=g-S+s?czS0Xp;{ip@YKB$DpA7Y_OYjL zZ`n{nwR|?iQ}=2^B_-nYm9B5uP{P~P@>S6FLnTUh9(VmvLbZHtcIQJSO89#0&W94J zg{PQp)pqkrB}(A$UthwVVbO$Yx$W-yP>B+5ue&}FtNFCfxWn^#Y%`*Ww0&Nj^CT$| z#W_!e_e(A0Te2OKJ?>X3Q35$;M0d`WP%W%MBf4|05+$%!jOfm}5~`(dMC5*`LeZ6N+n8o+=_ddQHCBplq zmgjWW50xn4dEE6w3Dv?%v$fKl50xl^HE2Y4K9o=`eIp{zE0rjLHNW}Ty~M0D<5bIS zch`qXlyH09^`V4nc?^qtyUidaN_gC|b#C8|Ua|Id_Ljiz?_X&DHk`keaLeBJ*yr0l zb6a!8F+wH&oIdLq{ycs6UvN=EwfyP$bDzJlWkV$;qWmwoaO~{MX=S@D_x6u7qm&Y;LpaDlHo-DG}v= zQ;&JYzMQ6(=XBQ(l_=qP-1S2V)$+C3oez~L;p?$GA4;g!8{YC8c}qy6s}d#j{hvIq zlu#|V-CZ9lQNrzUU%{JU@lCxK@U{@H$mv@PJUNn{1?T5p-Jw6);LMp=WJP|5s z6M20XqpInL5*T5sW~=Swxe+Q+0ukXeQ#L}&!~waOC8=K$K9cc-O4@`+A&iPX(1vA8r0-u}YL+ z+kILz;acp;XEUEcNcgR#&4+5i#CHjm7=Qz+ddMt-JK8VHzSa5HrkX|b{*7y(Pl2$NNA%>sH8Y=r2JBUFp+WKQSxvLT-++NCd^P^3umX9{AC?mKARicE) zEv?!jp;{jGv@_V8GwW5NgwKE4eTsx?d0r*LGLbe^qJ-yh8dZ@{EzjvdFh*Rp+}l;6 zgs;aC-Eo9!`DzY??+m=+s6+|w7|nh)j!-S#W17EB)!u!SaC>2Wy!S)v^zZ6@rJjf1 z*Z=Fi)9*g#*5UK>pPK&krx#lLlN&v3_5E+Ia(n#CMkm~|s}cXb!d??fu=eU&gXQlw zI{YmpA!eLd_t_b@-|}2gFxEtT46SNF_?RJ!Vf;F-9B}VwMrA z<)aPXO?*7Y3cp7xQNrWKoUW=*fS`>XT7+tO48wOUPr_qH7o)3HqJ(D;R~r5$We{Hl zaaM~^Ew=spovOP3lJ!RWgTTD-Ux`T)B|IyGAJ2h^d6f~WrQcIk)xX2zePCmI{8ot) zzE;9~P?LV_+9Fgd|L*P-jDHfuJ1~PPQ9@U+Wl7DvTB1d$mVR$&SyI!FK5|zjO1QnS zKF+|X4gm2i=0yqB^3jIxiarOA>Bknx7L_RBapU^8HE7Y@qeZBeM?HQg43D`!xUy8D zgwH>BrK)0#7%Q$UB~;6^Cw#Y!wb!Q&5-L%`^EmjytAF^J9N-z2dEeOU;-UY2k4<)( zvUaReq|Y0oEfIpXlLFB@Rlol0*sWy#3tc3O1Bb zEsoYJY>kCzBa?W)jEIjgCsYET=DANV&xR83+2z4`tQvaM-Hv&lMx|P`QI4)kl%TzL zyyLtvHoPy@qJNqT&8XP&dFFh$7Hp51bCoCodsAaamHJXG_B3_|lSBzb0sn^7nCK=# zwMhGHy4U-mPi z?R)cH^@i_!_vrg;|CiON{Vr~?KYo9Ds{2}umnbRWQ$NO+zCr%o8w;$#L*a?N|ab*nIkTtAEAmv z;zf+AO{f;`yrr`31m{I1O1QmCSLV9_KB_jMT0YuPXF!&i=RZKUs6+{m+j~CAcQc?l zSRS6Y3Dxqbhk6M;CV|meotoJ|i4s2lU)_T5W{_C2K&X~yPpJEV7&)O5B|MLVA0&KK zN~o5vkKhN_APKH4l_=rsG0ex|&|D|RN(t3Mh0WGSm=E6>4#VhFqQpL@{>au~$gBGh zRjw%PB^jYws1%xwl!-=gEviHbw-?sO8?X4s`uH1{tuH@or@m^fvezNgpFi~B;ly2k zp3aG%&R(@X9mE;4R~@KCiQ}g}YxI}5x*KcoCm=2Wf!`USS{~`JGhBMsPNNZs<*xY0 zfl8F%%yNW#J$w^vTn6F<5Noyw)$)u9JKQbsn4YfzLM2K(vS50OHi92#g18jK@-0HO zJoAGeC&1$&2>w=y5~r@WzS&@;EmngIL7dbgRLfUzn8DX#G`|3W2=rB=#H<4@y@Y;* zESU}B%mSfWx)b4Tut?O1vPzV2dkc471MA!g&ZH8m<)aNN>NI%FygD7(q7o%MZri?f zeb_)I4$cB`YKu@Uk9yb{7$bU)(bXzZ!sq|m+cty^611^Oi%>1kp0L9)Moy?i3D4u; z#}y#XfQ?mQLkZRLRS^8(8axfe&+uC%O89yV^Kmvbe+=U1Ekd3ie%uY> zjj*vXY$%~xp83I#=l=ZLKK*zRzg42d502Z~Y%tRJch3-`)j;sK5~}4ZILzQYjOKM9 zI69RmvB4ILn~jiHn}XmB-qj*hOLrptP4YS$Nu>(urZEMEstT?888~Nfzj0}QNri{z>D7w8%`i*8KGL93t@-5 z6&}+M#LRXdUMDEYh`2t2ADD*`XAm=)6Qbp-Aozjo7%@wh#c!4P`e47l9>aVf6KzFR zEkdGd-n$q*_`ri$ zgLjT0RLdhBc7}^?`tS@#_3O#4`YOo?>_i;l>KpP5cNvIRfw-qdFiTv^GbZeCH^AdW zw01Qo=I?p!6x+d%b3kxZ*U*L#s^ys<{P+W6MB;w@R*4c1?zp?zV5G4=B5`+%P%U4< zVFrJN(a^@p7@bO#z?&&%BjnZpi^M4{LbY@!swyW=LX=gagxjlM`FgB#AJqvhLbZIf zVMQTJ%nw9hq!J}OZhu^NJ=kCd((`*;glc)z!_GjDNg%IADpA5SX5V-640mcIu4)mg z<+%`cIM}eSD!WtAx5_QLw$oxE2+^l1T{$meP+|BTq^($7qRH6jV+GZp8aW;q<5G%9@ z)$+`bI~+V_HR@#iR*4cgYnzR5cZceYS8*~zwR{Dq3gm!(um+$KC2-a@8)3hq$E-87 z3Dwe_sH#wzFk%L^43#M1_QKr+sviSZKUkYlLbZIfVMUz<&skwP2ic+$B|L87u86Vv zDF{?jGeWgI>P`L1D@7_%!sowRzfwZAJbS_p$LfvLuk1QOi4va2!4J&C$g67Fmuh)V z2R~S`I~$&}j-?VMd_9KwU{#RSK~xDdLbZHthWTKPkE3EeP9;j9Hn4eC7cCO1rF)E3 zIgPlowfiXH_EPnu=DqXpaR;edIFZlu`c+OW9q*l&N4-HMO5m(*bhs;eKHfXycSfj| zN4lwBd8J4tN^oYI`W34NUX4;hwLD|O4tG5~c0wf?vF|6%M(~3%S`)EiRV^b#%QHXt zfy$lLOIW#63C{4TU!1kA9q#T>9W;W~K_yhnS8$lYcVaZGKwgc}sYD5!warG@uUO+_ zodK1Jj8HAziLB0GM2#q`LuAr%!xajd*{ANlt4Ye=ur2$FA@)+-k^kP zd8EV6FdgscuSTUsB}y<$yv|frSAy_rloG1tnHcI<*TG{aRH6jx0cIok@w29u!TObD zANx`*&-~yAV%2Azft41OD1rNPvk~skQ5`H2s^u#<%phY#8=OIvD1mx_*$8>X8XrAB zvqh+u?nG8+FyaD4StUxiy-+VfUDQT(WQ$NOA8lAstk}^HR#;S`gvTw^eZ1Dkj8sCk zJnCU*I5EzkRf^&@gOZGhc@^qcsMuM>%c@aAc$QGhb0O?-sCa4pD(z89cpe8oyyEqn zP`^rqYI#lvKUlG2toU0cO89yV^C7D?BUH=RW|$Agh&B+j8I>r3`lYS&kXNX3775kT zJ;v&yMzF4^5+&STSRapXym)>8#)}W0zGDual-*+9SI)d}_;EgaBhPQ{x5XLrUitQO z?enTy2;vVQ{t7}RO2ntzhT)miyY84%-+g?)|4fTeEj)QW!@)ku_x zPa#GdBK*C{KSdT z#$(W4fd9g%8i^8&Tl0+Y(HPN#7}-3(X~M!kVLqljhL%?Y zDoK<;-1zKZlUD=emCs-zR10}!&+n$Z8X&JcOOiwh%)fmeau<0uKwfz!CPKC7 zN3%YVR|DjgXM2(;L3_=U%gCz%@@f$CDiNy1`S7(_RmiIW@@nAo;SwbnH-EMo-_f7Y z@85xuG26ATTnqo|`9ED8^XeA(P$5Hp2ZEX5k~ZPba#z*5C-g_pL;J=SLE5#rK76!Q zg}fReuiOujGz9F)ljQCF3OU;I{R-LF_jjpQpe&vK}#r-PU zDC}1zQ6lau(MDmvilb_tx~3n2P>h^x+glfh4h&I~$6=o{=;r+(> zh<+fiM#!r=<`ri!`jI~ojqHgwkXIw*RV{f{B>dTG%d0-}s+PQpeKk*Z$DEFzxA!X_ zRm?;id(7kLM|;0=Lbc*Lk2Y`}%=Rmft`dke*Lk#oyvp_~CsZr$SJ4J{pVoe55+&lk z5^WUrD8$y^68Ib#R31;6Sc}v9Csp>%&Le-LD!+Ltuowo<|$Z zI6Mt+Z%OO7)0}7CZGGX3OAK)$vvxRHDxnf3ynW0L?Y|sZBB+Ivtl0=BWVN9Z?HA|k zX^t?Q+m%pBiP+#q`D^Uvxf0%{7VZ~B zifb?t-Y>O0B3(aJqJ+WA@Pn{b+1@!lZXP(mdoBG|xR>8bs%0x99`Fsi0vf%^|3 zAe}b{ZenQH3pAr%1 zn2Gf=SBL$oxqr1R=|w-dK6+ulaw3jOBwZrd(A@_kNrbnlg(yf3KnazUh+so^A0@mU z{IFdq`k@4*+^J+6<&Mj~=a7>N?W20Tx@j}qRd z7NQ_E03}pXB7zOweU$Ka7?tfx(GMjc<$h(75|P=^{VGN`(9|OBbrj31Y`=1e+fyRg zh@RVCqJ4RrT8u)o&XrI}i3m306~}BS;q9Omc8Ro?@EXP4$M!4VeM&^2UwH9FTTQo} zwOwa};O1S6YOucwj*<9QL8>)p!PPre8CTN3wDZ#eeW`sh` zhpo02Z7`yXCcH1FmGJopejrx-D>pWFO57*Tv)d>Ww9zKq^N=MNzR!m}Q{;Jte&@L# zAnY!qOwdLgNg_zQZAPfcEA7|YoXtfO-dBkTS%Nt?KRD;A#j(?mIGZ-AGC>sFwT0 z*<3V18!@lUa}pk_lqGZlKa=(?GS8ft7r%yEn^N8_@pHEQCuECDuqWDGqigYO=j}4V zPhE>UD$k-_g8lNYffDTPcDLnPZrl6k?|f8BfU>(jr=7|P)gtW?aqVCuUS(`l@oJF9 z{?emr6TH7#^r&dnwKO96sMxPZkt5Wxzx1e-z-a7FX3?WkEsaP%DoE_?%)a8-d)_Zb zmD*0F`7lYF;5FFkGQm$>ixJ_Op-Zq|p6)2&2zmB(t(P8^5}@pK?sR!ns-+QeZT_}3 zXy-xp#j*PcDShctwF#`QtMR>Vo$Ws!!AmFCsaZkzEgWUTyb8CpqBSEo}fhg_0gs) rP8wBvKbKLZD|Hx?`+?lr)7F4T~-;?p|PVUEEXLZFjN7iY?CK zF8}YDch2_;_D#liw2U0x+BUKyPn<00DRQ2H!_t*s8z$R&;FQSiNA(%o zI(ncr*E+IeATzh2@5qjpy<6G`T4G=8wSK|EI{=Gm`RClCb?=cq+ng3`ma_)3e?7SPWWi;IZZ0+JStRcg@0n1~Ms02F!+NfV_8Nu&!?Mrf<{*1cJQhu1S=Q`*q-E__rT=@qp(DuZlz}`F0Zc~__oEkQ- z{A$kABm0aP(%LezW23g=6goA5Ol`Z_h6AmyDq;JJywWn!mRo!0_OX0^Xu)RS#w~jd z9y7dSqroFu+6QMl)RqG~+S#eI9jfx5*~w!k9X4iYOMBzi9Q#JK4DDz=pyh^Oy}0@E zgSFMV9S5oYZNpjy+CI=Sa?FTHmVKuq^kw+-WM8*!w?C)Vj<%s~!^F z*(q$O2aX&(YO9f(wzF}n5c}(+g3GEFfNjP`Z5;Q;j2t#;;BE>Ptv2cJXR$vR)85W}O>E>+{X0MT zANPWewTV;mGtI_rL&uDu>CsEtcJSi|Q181bHeyRUvLnRE+$2A0HOyW4i-xJ)q+j!f zHhq{t*?-Jp;Lw(lEz645yB)$F$qOjyVw=_jIU5?!Ehmh3;X=8bsa z$!wgBf9{j*dVNN=j$l3x-ERPMTkN)GCV#fiTk&qn$F*VVZQI&92C&x_6Ixoxe|SiA z)3n>R?A5~j7}_#g{_WW-mjBaqEL5$mubd{2p5FSAAFthesyN*k#y_qolJa?Ae{)Gl zvF^2>X)B{+r{meNtozB%apAAL^<;uoY)bxnnjISX@yhM+WRI? zkF^^d7kur^(tc*n&#lI7*D_+%a9bm6Xf_=(cHn+3!&^GqMh?pVFw0K<(``oIY$fsI z2dO@lUv1H_jjw%lI`3Tj`KW2*D)D1(?VY&%Bx~D$2DTp5 znOP49zkF(x473dv18pm&aVSlWTlTqSn=#Cu_L26fmlN*xQEl05 zvM~xrc5CFb+{-7-mKNlP31geMZCl4++mW~0YcD=rWk;GFSPk3SSKT-ppUN)-?Jx2% zDHGe|liVBG!t(jakJ{eI)~yG${nu^W)^i(n8p)~B|F#`-+kulG-;TbOUu`>Vbn`a; zr_C6YH{la%g-K1=ziih&c;sltlOd@bU9!`yA#I#@Sz`8|tg1&ssbO3bA3o9lx8u4@ zz9@Qs^w7xQvHxu&qw+?)N0yt^BQ|%tZ^=%oKW^`h%g)N>m)^MSqFgr2k6v|b(crOi zi;nA!i`=4Td*dRvXjc2&!H;jzGL>KB4!%`87w@uODOrhz1dlZ)dCY_KMS|1&p)H%X zwR50o?bvGM@Nue_?+AYDPV%!+Ec`lJ_u6Y@%jnTNi35)PS+TZFpI;dA4XtImb3LYm zduh5$J*L+N)8z7j?XGtHf#Ym#r^T9QnA5so(yF(42a>-MRhK_gusulccCY|#{XeO9am=y|NU}$Z{C7; z#L|^b@?%)C4RYoAy>1J+>};5SkgHvVTyu`D)1rqZ^zphan^c9J3FjXF!_*!)Z^f}j z1NF`9FPictIT2^(4fs%mew?%ga$>(+uY;Tp^UPP-$eK0C*|2MU4n5533+r`|Tk%%C z4st8D$Zv-DU~e;NHrZi$vzE3IEqrDknw-7;x95j9ho%NhYRb-mi>7>K`)}KshdYDz zN;b&tA4+_ zPFAK_u(I8C)K}Me%FZ?X29NFC_Fi4TUtQb#WBq=0ZEwGYy7%AOm0x`t<>SkR{p=!0 zT|<0vuPp1@>aTibS=WYd(%AEcR|dLQ8-7l&EbH3vPkLop*M_gRaQ6*gv+}ErxSe`( z{%n_8hxHk`_wf35=@WZlSl33s*$czEHo0+;$~M~hiv1*qV%y|?ZEgGY>F^7l*=LY= zX?<95NKR>NwcUPHgz_JgIlksm~hCf}4nEmjlc5EEb zvNzXY4rt*H8#fy|2JSPM>(66G*^>v#aic{ugW^OnakNir`OUrJN^;+k!&=7b+un9d zrZYI^zgmrU6Liz|mKH9_+Lo4FAG)vSKkm2H#v8VcRe!wrVwG+2Lt%2rwM#Pnh7NB` z5A0zlSy9o;dYW&WB!q0 zFt=|8_V7tLgn)M(=ZC{zqA6@}F*3)8Ee<_sQHRPh^O!j@q|O+_-xFZnR|O-`v_W zu(r^K>|+1J2dYczaIf#vRN21waqjM8v0}cN)NYs0wr+17Vb51hnssH1g$?Km`5?Ga zvXa}p*l6(Rj?s;*pu^e@9IZS$f=9RpyluBW$rPfd+N-pJHEv|;2(Of zGPka)%7OW=Thf=4v)vnx88ND!PtIjSeoL@Uj^)!}J)o_9#Ngrm2mjap4a?ieOgfe) zJI}O)t@NY|dVad6Y0uou`(cyJIvaR9zs*jcMh&(nbpEU9e`BaMxr$(`_aytF>6GDN~nF{ zBvZSPUHKr9TK_Lwuxh>x`xYc?gD5ac^hhBCnm>%|HLU7*{?;yYsZ4QIEgM?|k8ubM5b&AHMeVZa(jRaBUWU;pMZM ztY7l_8mBzsa*L1O?CtZ?cmw@o@rj{-{O@|&u5LbgJ5~N7p7u}bQ*1BelE$qb`#sj< z@z}2USiX&K>Z9UTPnOTPr}^%$+KqALQ?$#t*W<79JMX_Z8^6ZohISkG@f#ghndeh{ zdwMs2-!H=cGHAA^ud}@7nO^I*y((VpU%|)bkNL#;BYi}E1M@bkC(K(J7d|%6%_q)> zbUt_S@BX{>r~TeI@uIW4#q<5EVe=ij#jPJK&(@zbzlgIRb&DtaSGTy2OU(Cp^iQ_8 zn~#bMpLCwoG^@lAbfU239#;<}X1=QKavzv_uApLD;g$EQ}l&7U%#7*{?;o#FVR z`YoO3-P%>-tK!Lil=`ImMH)}{-!!iB2Q`ejpvm@^uwBZh$dBt@Qos56{+Rltaplu_ z&V7}7;<_#TRerj?X}c<}e2O~5amTi+i_MJdWV&vo?H2K{-WKyJ^k=%?r9SF-A>+yZ zt9(?vD;dYszgzybH=J+3$Mr$=TW6kc>u~C$#zn=IPf;i9e?9&x-`BCS!khO z%y~jxap7b0#Qr|6=V`yC{%Jp_@pN43i7TIUKGfyo=Yiq8C7u7NkBX~y)BU9`pJYEx z^V9vho_M;hrupe{p`N(%De8%zzmnrc>aX(CcoXx;_oI5^slWHLTo2rtC#^^Mr16+YwKOIuOTQ#idU&UTM2&f5vvRyl_1AdgF0Q#jVaVA6ri>Zl9;pcBPNVPuJ%% zpR#eZcH?@U)?@$fb*Q-id-O@`smDj=v;Ss)A3j&wep(h+KDN$Se${@L9LJlI?M;vS zX*@kH*ArJh>2bUsADN#V-&3D-yt>7ceoNzNzts~@`#;T3`#Fs(f0f_cepWtqT%{CRsAaN>yJ3zRc){G zN#bcezMj~6RZra4)!1&ao`>;L{wm+DS9F!kpJG0Q&-Lj%x4-lD(s@-+T=}H?MLj+$ zzoUD^ud92$ipM&YkBTe*BH!m{{yDnHSMhuvdi}~r#g%`N z&vC@&v-=nMDjw=oJ}R#KJ>QNa+5Q#gkBa-}7q4IWsJPb?{XIWkZ})r^uh*xy{+?g> zhxJFrW1Y%J#eI9Dzvp}ZSFOYO{E6{;eR}I(0&kw!+czh}1p-$zK#=F>E{PSkv zL%V6b$j9H}Ha~4%7x^k)r%!MFJ>U92t24h&>-DI(pC5Yt%16bOzvsvEL(f<7Sf}z) zapmv%g@1nD>-j1k>r_4}uKYdU```AXviTF^u}M*a=U%7s zQE}y8zvmZqhV@6qWBtlU#jCa}Z`bp^|9yS)d=-y%DjyYB{zbme&-{93k+0(U{PFsg zPa3y*P|03V#XUXv^ z>z^3U=egIfd{o@WJw5-lc8dJu{4?thzaFCEp?>9~;zd2d-}CMKA?t@QPgFcT|4+9o z=J(d$^V82S-TEgyKk3`0+KoQF_4oY3Kde70uG)?Hz4iBe@BgaxIUnB`SM5fh-uf5$ zK0iy2U)j8h@ldDoN#kAYK7O6h$6a3k$KUd8|IIkrze?lOpZXW=1|JnK>JjB@A>KHmu~%&eEv$~_4@SI-}4Lqu>PoctY7)4cvb)8?RviVf7SY& zk8g~}I+c%#dp)t;BH!m{$@Rl*Ud4E*Q~7w@+3(MefA6cq(|PA{&vW+YWMaOG*Ya^+ z<0huP=coQ@Jk7Uy%kovc9-qShnlJy9=1(}~xY3#Kwx=GQ#yj76Y-|?a=FY>q#V1~{ ze~)qDqxxZ@@b4)7FRyrAF-dU9_5q9i*cks)42C%gNi55(KRv7?lX~o zOMSfmWBp!tjJuD=ecr}=6_5Q8eca#b%<9g+cjk54^8jhQalnwRZF`iDiYuQOZx}FS zP*48#=GW>U^U$JPB}KU==l8{;wG`&q@6PgOkWpR`@~SNT2v^R1pV?*1ySe0;s~dVKv+K0W297FRyLUX|6OeA2kr zull(m`TkK;zCYXF$L;m`8uOdaxuD(hRb2U0#eF`9dfdP9(?zoHKTg=}y6pR*6K?pW zv|UxF$CXdx{#RxG6YrfZ^B>gkQg+;o+g138e0xsP`Z0b_)4pe6asM9l#3PRxll5DO zyMN~i<16{kESBB38vjCTmapQ`-+j{W16unYSKB*&>Pr2CR;ql@wDa?sI;>8$T`I18 zI%l6d+pY;~Z8)x719p5;6*3ZgkyvVOPF7f-? zV%&Wk$DjP$Nj6@C?(H}-ohK^p^UBB9eLNoLTP>fm{A?bS)KeB$?ONRO>-AUp_S|gN zFMeG1{#0?%uKO4LmVd9Ls(+I2n>0~>k)O9)m9OG8eB$%K_MD-$r{Y!ZCi&g^r$$`) zSloPyd02-}xBOb;62~j|uWC2x&r<*R{cCSGjQgPdZp`{~(4K9lWj<5=scIdzxR0;O zPuGWT`N{g9#v5PzEITd?+Tg-7E#CO^rrEle9$(UY6_-AZ9TorMch0W+b-vnJb^Pk) zUuV7_e^oy;e}8h;pN(Iion0Ru|KfnE^)qc(^_%orzw(}h=Ed^wKmM|E&;BAmJx-sDbK~jnRvo`mf0eJsF+DFzedK&d&U>@`{5-14r{w&qCx0Jz z+Yg$UuXg^K=2!XqIvn!-^GNjZxbmrrd;P*+<)@z`to}~F?vZ@XP2EYS&%JaF;dQg@p;>xG_?SqD; z{+-J&+@rtDU$$jjH=kGUIw1R9#HCOF%Jn(lF5g}sw<4bJzdlc5Jo+~;b9MH4N5z#7 z=f~OgLiZo^>5z)g)YlDfO6IeVW8*BR@0Z4Xo+y76S3Wk5-Td=62{!!?M zN}T<)DV?{zPKy0k?Jsft_x@CI<)ij5<)iYMpXJ935m!F8j-~zM`xXo^eE(AMxDFKUhWY0GAbmuBoF_#; zh<=XaUL41J*pI^YX8V!yq5f{i9p5fL5A^ll$3^A)`Jw0gd9{iwA6rk-`n`XYkIMJY zSzb^492eut$JWWT9-lwTU**U3#Loj&yj~ys`z~7_!+zw)<%WBwDDFpFo*y@hzst{u z{dZ^YAOBtXbl&hocHZRqzOMS;dE9@mH$Uy4Z2SDYJ^y?meYU!>a$XSfy?w8z@E7_1 z`O)*!`IFY;@dn`&>nzUall%MT=RPXm=6~95x__0$rB9d-zP?F+kss%quMa97=a07= z^O?7m&p%;4EB_*2tp9P`{dZ>{-(o)G`;&hT^*m=4ujNztC+|P8adY2zeZb=lA-}lJ zCgRGcD(=^9ln?h$tvd-;@) z-N!T^yMLN-a{siRsZL4YuEn0$WQvg;${8QEndT?%0H>6DfLf$EMC-;H43> z?S7g0+x=6Er}s}SZpW`QKRwQ-ap}YTQ1cnY{Zq?N@1I({%D>KhKfbGeu=}3oZ}(5F z-Sqyc#clnxxc86hH|fKDO!Kk(rj@|*Q4TtgwObSSG+LWF8}}O z$hTMdsQjWIO1^)Q`G>gl$?I&~Y3=O1rK*2|k8fAZ_wkM2vruvAlaFKbfqk>{Rj)_+ z__$Z)^ZkpgAL92cR9v;2=kqx-drqdPNBOAy{QHSj{iEW-XVA<$RsMepV*dyqm2clK zE1f4Iu6#OI+^6Cb=8y7M`S$(0biXL}FBKQJ(n@=%b!bjy7^@s0&skrj-?Tzb? z@=^KrJwEH7s`XRF^ZtqL`Z&h*R{6_(pZ_J_AI!!v#B2Fj|8?2+`FdExzbc>aPnGtM zis$}SKH@my-=nns*V^&?yJAC+J9L&^8wGoKJwKEAy+&rAC!_^5mz-}pUu8PEGC zw(H|)`&U|z@{#$>&#WKf_uNIimXGycw|az+fB(HIKmUGWRsX1X?qB7@{*`T4>>uSL z@{8|phVfN#J5MNU*Um#MUNw%%_kXS5d_JrE^!u%8zKSa!J5S5%jQdyeJ>S${G^Y7zm2c`9*;d7WkJPnnPH7uoiQy$NmvMDnC8{PwP=}lzFpC?tvuYBCA;-Xz2$Ex*N_{e;p|0TzltUp7%mQU63sD^)4 zzB<0BctRuy9dgfpDoL(BQ<>UUfe7xP5KQVcZF6*C?=k3#YEg$z!pU1Pm_wh>OT_SGz z%BL)@d@Np;Z~kTVl(lQyo93teTo$+f?8(RLspaGC#(bL(X}jq>EQ{CjasOIA-fqmd z{UvQT-5<;1wS3&)ebW2pU5p#+Que*97;ntqAC<RJ_YS+f4%-_}%i`#zP1^a#);|p6r+R;diYuQ6@xBr1Bl6{YGsOG2h&!*i|HzxJG} z`4rDli~ZD|Cojua{h;E?Cyi(A~Z6={4}0^e(54Ve!lQ^+v9dVYUUIU&}w{`{!S;$Iru6-2Ii0$KA*K)BSy1{Bu)T-1@`u+fCK+l~1>jbmDm zk4r5d_xF5T$87sO-k5yuGyfR3^KgsX=P&!a#)*?Yf0g;Dd^^v#eEa;B`Q)F!((}eF z?&tH#`E44v^Y$k5;qzJ+A5{5VrsC=OYU*R>$@aT_zRTkI=R4)2^6m3r6F&BNF!Px> z>GNP&T>04NJNtY4Jec_;p9jl)RDLs`2ebUi?ymUEJliJbr{c;-jhFIK`S!Wb>aov* zR!3v)$& zuczL4Y?pD_DfQ?0b%g!ybw+=c?{Uv}pIULR$Md~ikNbNVl#j~yxYy%8wc@c|AD1GY zzt2kgg!$(0v2mZG9`_0FSBd$tU7xoe_xEBcf0gfXug86A#bdjSOSkpM>sLN1-{W47 z`_zhiJ)ZCDUJ=jV|D$|VzQ>Dta-Ul9*si~y%HuxIm5<8zxYy%8wc@H>kNdho|LoLc z`+fet5%;%wZtHP8Ii1JbS9`}0Or&iqSDe}X5>*FqcRDM`L3!fVC zqMk{|&Fr|~ai8aLop*o6u{7V~-aqbBE3Vr0xUU1X-doi;d~Ei)kLQFA>f(5&-YZor z9)0|MP(?g{zn}6^`5rI&C-1AYmdivi~i5+RQVqFeD|ppkL~)p=W!o*<)iXF?)A7&t$0(%*XGitM{tO_qmDp z*r+eH=NwA&^M3npd{Y1Pd!`m=o@eigV!h0spNr4` z^Z96e6KRdd&Y69G$n))c4Ou*XUrD@|sqi`alk7Pe_bKARU)J;N_u2QrV?BjW@K3)l zoNjNCAKF!M<>UPjzbB%6RDN&A#l9br^*`UA?Y3R2e?(mQ*!RoKziPXLPtE)=E)(4+ z#FdZD%WQkY_w|&I%6I?xeK!^N{)yj%Q|+p_^6`1jebH{;Yg0Zl-}lqdpT#^3apmLl zuxfjSzsmP{Ue?bxUoCFq>Fa>?kHzEnRjnVgeCkj0Rb2Vl_L`6Nb3HyXpMEH-N99}p zSbo)Z2_GA;Qh(uN{hZ~8{!~6S^H~p@te^7ZLg5qQ$|wE)T|GW3-~HqJ9Be-=-Ci+I z{CLKBLAUoTskoX~MLhIFO`nkO^~dd!+nan}ub%!?_`LP?vevlEeDD9T zy{g}okMF;+PUWNWd+KM~{@DNN@jdMy>reaL&NtGywVU~b_mx?lS$C)A_bRX#TVvwkaC$IALs<)_D^tiSVhOpRB1+)wjm|EuxM z&zItH&G)Og{wV*N`C%RwJ|V7re0$^kS8?yRvi&g|m(Z@NNBQ{t_j-%<$NM?>%X~3! zi+Nb5kI$c~?G^qi-{)slKPT&XS8|+9*Z(wb_1o`dpLfdQHGSAmOZ`J!`J~6|dVEyA z`^WP`n*CFUpRX=(rX@waNbgpcYU z_p$kz`WN*x&(pZqZ~Iq0aphC=Tb=$Y-^VxB@A23_ejJbUr0@^@uj0zb`^DDhw11RO z&HT_mg-?hpAFtEajnaC8kIMJ{jQ#A-*$(>P=gRei{JCO}*Zcj`c%7{=c@E#|_WQ^l zSKo(K@zme^+^47Kt1T~n&sycH@AIm-@=?#9D<74wzNf67>$d0oZF}SQzNNo-K41B$ z?};manJ>QI?ei_pLsgIGv&q>H^PxH0{`~vYF|K@6e=7f4`Mz$%dSYDp*!PreJL2>6 zUQd-zjeOgG%`esyap{N>9k=O_94>FqY;@d@qwWak?(-dq3i=boD#*P>5V zJpW#U@~`TLyiVm4^SMr+oj=5U759FNKI(fJ(nowB#Pj3!s<>*`tpiOZK6ae7xXQ1pKlh1o<>T>~@AbrZt^BHa zo7WTL%E#kua`xl%$Lmo(G2hm6>$jM%;$>UY?q=rw-_kNCXTjy}c>e!X#@Z!zEFaa@#tt$gJZ zfy-!lb-M`95yqDGUT3&9Y&)_$?nFX}@#-dQi7`cppgNlgB%S5ASW; zp_|Xa=T*LsCj3>tecw6tNxx5B7O&T5&@pQrV}D<-zvtWc!P9pA`_U>M{oRM}L5%3; zllPDEQTg_L`EEYpeIUhn<#FZHdBs}o-F))-p!`+7y-y(Z@$XZsxbopVb98TfRDP`A zzn87z$|u&@FyBRoS$)b!<;U^$_gAR6@`>Zvc)|t;TRqB0<;VHy@ApvgdVLzl{2{w8 zuY6+M^W*yC{iEW_C$0nDKgvhuhxOCvPh3|$u6*J;>GMbVsC>qEr?UM*#gz~Juu^Y) zRDP`Ak1sMV+KqJ%N{&ZO%xhoAd_Gt|r*R)&n-6I`ozG?QdVPF;*6Z*2wm+urdi^RM z{oTj*yVS?GSNW)XTdz_dpSLQmd~97xeSAJEAC>R#pYiccj~A)G$CZz*+hzI6U**U8 zeLkzW@`-i&d{#axKaOvDzL9RP$CXbU$3e;YMwySwkMlD>? z?Rr0`c=UIlxDI&#C?A=hzsJVsv(Fz}54+Xr=VM_V^LA}L?3VBAq3}`p%%2|Ld*gK$ z`@rF+pten@0xbpG$ez=dne@6MMe1ETw`!wIa zXLepE zy?;absQktWi)ZiW_wDlcfvC9h@%M++>!b2x{S(*UBkL~}S3a>$Ussin%8%pQ*fuol zFB!k#hwQqD_k*_^$I;(QqkL3;)%=|1p{yPiuiMAp{}bN}r2O;zxITFQsCZSK-fmb2 zynm#R$dBu%&mR?!>zKD2*GV5o=@Z_s<@w_mUA)_R?)#UDt9JeUS3a+5`KbI@zppfZkIn#661xxsx!o;Px3vuwBI~G*2#HD<@>XtA3Q(ygNiGkA};EW{pAh$PiT$AB%E$X5`dEH84`|osozL4MPCuk^^RayMu{ifNn(cQLujOO?Q;&~r zZ&|yAzp6jPrBCubKC8$3LFIcq)^GcT)oI@cOnp?mrcdbqVtZrU+YNCamsqEY7j*`o zp6ayiEZg2JUgBf%IDgE)ES|12_V4Mq*za+>l#gw1kNzd&W%+Ttq))OgrFE)&kH`9L ze9PKZ@tQuN|5bk${vqG{GuEl%%16~{@veLvjeR{apX_()G4^ry{J0LQxbi9DjC(!) zwesV->h)N^rQ2owX1~XH;UBhF#idWO4y4=V`LWJoe-HiO`LUl>T=^97uw6BMM852| zP=C>Gi2Jz2eo%4cw*c$Ma)9tGMzh;-TMa`iT74&*oD$Z{0uU zTRoN^&tp}*C!eg}O6n}Drziicp75NHZ&&Ppt1IzfbD^Lg-RSS@N#W!Dkoy$*b;hHQuX{z@ zk6*%H<$JuS$B$p)IUmoD?b>-)>HZ~rRKCZ(9^YST#l0TSk9GPw&~VUnhjg(%H%|Rs zcKjND_}(#kx8zuJTnqvHs>ax5}QQkp8Mpe;y#Ov-#ztG9Try>gjxK;cPp+pS>Q>FXHa6 z>N(@)Za&^Wwfw8b>!c65`S>_a6#iak^ojXCe;Sm(*sfUrc%N^f9`~2^gz@T}_w{Uk zOMg*M9N(fI;a{_!{CT$Gc`&hm#pgZzc`X%Jb;fz_{ib|WzIrY~#g&iRf0d8QSI>>8 zxblg0`hKK*RDP_#*7G*XCyt}956WNV$MLQCJW`m4-mcH*xGpJwm0!gDc~12_Rg8!A zHtxSwbq0TxubwxPakXxTb;;+C@`>xD=d0)OR9yL}^;Y?)eD&O;iYuR3r>{TCN9D)* z{dp}FS3Yq*_%pY&J*e~*VUL2>y^SUa(h{xlLAE#72v>VqGuaobC z^lRe$Yy8$To}Hba<;uGQx;b~#khp+RdMS#^N;;j zj7y#MC?DG0EvrAg*IN14%;!E-mu-AL-wK})S3X|npuP4ws~#VfU-W04^WXBVy|}+v z{T7e&S;du))oDIu+g0XYGrwfqGoKJwKGy$Pe#y9(`KWyNkMq;xw!KYkcRC+3|8T!D z^-uFvJnjE9zlhThX}qRS$oKkfyHX#E+wU=M?OHtEkG6KRIQ^XZsJQYe;wAl7=CAU- z{x~kay)jOm#eR|2Z~k4jy`dfzS3X!|KXyE-$G@litRG71DT^x~tJCsr9fl*2v+K-hzF%ikapg0<>9p+m1ot1b@-Er+ zGUcQ4?Rs)rkKeCRaphyzjm^jF=^V01_Pm$!QTZPC{;c&Jg6GF}Crt5J_Pl||y?;DE z`m21qE?wF`BCdRzr}F(M5m!DF79G4wxAB^IL3Z6z`Kx@p z&Yafc*OOIT`NTRK?tI7JpHu3u@?-se|3$@>PaMbQtNxO`Z%6s4{5ZaTA4J8KkI!45 zKjTkcDtq6K@=^I7_xWGzIRwv-?Z$P$`^WR6zsis6L(xBBUGli{iR+}#ALXy|dW%4g!hHM8T6`%nD*s>=Ny;ji-JeDHN%#g&iGTd${iz@e4rmBn#Z<$Jss_xw0m zD<0b&^u{4Orv2~zqkL3;Tu;1zR9yOeGi;Nz9-j}&XM)I&>#fg26<0o;6K7g0t;hE- z<)iY|@kqs`PuSkZU!Tg3U&<$Lm*>a&eH~MA~o6uo9|!BN9C*Ik%}vySf{T)D!*aBohrw#tMzN9D)$#QR6Zl~3o*v-M5K%jbjgQTcJb^?9h`(&y;So6~xH|582^M7}y6 zskrnB{nPow)!Fe&`NZw={8+!QV=69v;{4ftnac4(9cM*;9A97ORlI8c1^z}#OPiTE+l&udFFB_E|zZ(DER(bwS9M_b; z@|k%5jM?$a{U<(lb$0wxJ}SRzKIF$i6_-AK-j#1}^ShU4$1mmM`-|6KkLhH{EGL# z^5@$%D3z1X?}74OT?9r&D*q|;{KQLQTZPCen{_s zb*nRczsdXA+qLTkX+7RQ%3tN%_497+hVM5Ob>?y9W7iGRdi=Vd@>ltG{XDIwm_H(} zeC+x|T940L<*)Mn`$ygn?xW($C)VlLZIqA7kM;X~3KdsAaUA`+mhw^gaeVzgj*2TE zpSM2G{koj;QTZPC@k;N1rSmGrW4m!3@cvQ$DnG72MgN3#!{f>)u9H50l)uW4>t`{4 z!n*2l}9Ma7j*tkc&Ym2cN8tbV`#>DPIbkBTcFyKa#B`*khlqw?c? z@O56rm5yoxKIV&3NS+^_pdpRj*zP)}wOZlsOkIUm)JWl!N zsc_%TuD6%su1>Gv;`kIIkr`#PrL$|sJa-)B)iD!*!ceVvcJRY(Czf?xW($C)Vlf58p@I-259)e(|g>xVc~ceVF9?eHQocrFNdY`SzAS z;gU_d<*Rt{J-hJz;`Doeb@}JtCoTD2aQ3;(-(T(Zvt6Ze)h=}w-#<<3Q9df)`=N8+ zd$aHFdp#;HeUk6bru8Tv-!A)pUz%Tx@1e_et4GC^Pce?+`}oR7<=a%UAAhgB_fI8S z9k1mxKD@6$`FK3$Tm9BwjV1k47FRx2r{$NtpP|%W<=gn0Puct_i%XyUd-QQWNPm$} z|76d>mhE3z|K#6`_i?oOWAWH7b?%nt`+B1MRle6>w*HuZj7y)q&bXdPf019zpRj(a zxc5(Nw;0E;PAVUjPZwlAo$F6~w)KaPOCD~B@mfCd{U^%D<1ydrZ{i>0@kPazkJV{D zCGVZ6__P1ozx(zU`QdxhHolf;`&XK;;?jrtV1FOKPpy2?b=CeZo&WZ`?O$m<^iOg8 zO5@6hI*a31J^m`+>$m-=Tf50|KaESDyno_*5~RP#Pv=S6u8MpA#CD5utbSiXF+Wp( zm2X35KeivG`ITsOyp~UVpM&!8c+9tc=;9x3|4Qpoaphxmnor6597_FFzKyT>l+B;A zxb#WZTiY(*U!=dtryq*rm-+bmpyKKJoVH7y#qleRD<75b^_Q(bUDOxj(kI{Evh}CT z$G0oy7xN^npDM0=ig66lwO`g^`z&q>?$?NagR?>>xsHy`ge z=_B&(I#pVak9+j@c@p#e^M1_tdQ@Eci06BiPrc9O`gW=PBF<0Wt~eixeyDRla-TSF z{kppHSNU;14EpY{?EM2OUayZ|S64nUUgU>)<^2=KtBA+_G5st+eZNrtD&Mv@ttVYK%Hqn$#xc!L*Td3y=pU~?`V{L@ zo&KJ0^D}MNw@bxUyS5*tK3=EtQTetGq&~iG#C)G8G2i$1nD6zdxbjigU6qf@kN&=0 z_1-t}?TYit`$5IyJa?ZspVR%lTmR?hCo(_Gw{$&BeLP;TPqDt$>F@b*T)cl&JkDqL ziSyR`NBOAyIPTv6em+_2dMWLV?IIa2&R6YsKYv#7=&yWKT={#xf8H;vwzQToSika7ajz$~>-lhT zoU-;kU&ZV7>8-!#yMMfHsp7Ft<)h-hz0u$E;o|%!^iOHLUZ39jd%n-ldaq~3`jwB0 zd;i3CJ>UGh_{XyAnPu^MeR}Kf`PTo|ZrS`Pi^uwvkBWQ$#CAO&E{%>FdAOui~+O<>PVt+?UP6 z;UAoz^|xP7&abC+=5fDn;Q4-i-mjm?xbn&4?o;^J$oG2u^Q?W|x4M;&ir4aq{#E&* z-~4lZtS9<-Jw;skA_G@klfT=~Sf)nDf0anE;uk9$2To{n!?Pt337 zuY6+M>+yK(H=qArzqjl8Dz1Dy?mq7Caj&O{v(BXb?CpBK@~Mg|pFHmQg@28FuhYjx zUH_~VujLc{tMbJ>kL^Yu-`*mweDb*G`~GFe-)vm+=TVslrPm2P?#E4k-mg}ie=p9f zyZGan@1HAUT=~a*^EY3AKGS_HZrkP8VLa~J>(@g(-rMa`KKK=%zsj~ZZkNh;f4?r_ zby__0&7ZIKI9!}x)zhxp-da9>oz2@-J|2(x=3h20MZ5WR5BK-&js4*Mu|HK@`Or>r zK3`A2seJd3^UC73y?!3<+XWZ>ko|kU-=+1}6R+jt=e^!;E&rHr{?;#ky~TZscJt?6 zJnq};pVvHIt6dw%bbFN#e#QQk<|}`d@BVRIEN&K^9XX6KqzWqi2O@1D~Mhfae4sqUVO^ z0q>*dgXahDpcjM}0&k%gh8F>^qZfl02d|=+gqH#@p_hS|1^+-V53c~8N3R6044y%+ z3afhJqR8QE<_K7hk^6Zd%=5y zv(c^azTgb>aCihb72O7p0w@NwV(^zrZsU^Mzf_#`k2eF}Uk7=b<=J_GEFJ_|k@?2SGbJ`W5-UjSbS z2BR;A$Adl4m%^8UUD21rSAd<+SHV|&gFjxouDEt^$6a57IBv=joH2e%$8T}mmJXit! zclaM*S@etWOJFJVEAXpearA5O>tGS|oA6s;A@tkuJ79kFd+_^U9`pzBhhR?h$M7d$ zHuPuk=U`^^7x0&02K3kPH(*-yckuUMD)f)=PhfKNFYvEmGW73o!(* z2!2LS0Z$2jKu--%1HMI12Tu>aLeB`#1pb4b1)ddrik=;w1AK&@3!WSN8$B;PA9xqN z0K6cWh;D=z25+Djg%<<=LN5U?30_7o4KD-!iCzv~9=w2F5nc&Ai(Um@6+DGr9bN-G zj$R918$5zu7hVrMh~5Bh0$u1n@P^=C^v3We;4buL@aEul^cL`z;1+a$cmTKwy*0cI zxE?(a-VR)Y-T~ebT#4Qp-Ua*>y&JqcxCFf?JP2Hb9s&;q=c8NTy}&u>ec)DbCVD@3 zI5-VG5^e)0qxXl~!C%lF@EGuC^nvhLa18n&_+W4(`cU{V(24GZj{t|FkA#l`2ceIF zj|B&!{|p}wI?#WCPXzm;PlitcBhjb9r-S{_XToQJebDE?=YkgW`S1l`2>K%UVz4Lr z68KWE8~U&C)f}aMfpr3`G11q9mfd3AbL;n+g z5iE^<8GZ#Uf&Lf#8dwzl2K**yL{Eg@1`D9yh2I17qW=wl0Omq}1b+->M}G=`24+G3 z2mS)gi2e%x8cc`&7XA)Qjs5}t5ln&p8U6+Q0sR~NyMY7$WPczAenC$TPXT^JPX$j6 zzC%w7PY1q6&j8N|zCh0m&jLO}&j!y9K1R<8&jmg}&jZg3-b2q1F96;~F9bJ&H_?m0 zi-OnCi^EHRSI|qrOM@5D%ficnzoS=xR|LyrfZi4!2(CqM5AOi3 zLhl6c3@%6S3hxFkMehOc2`)wthKGO)(8J&sa4vdpcpq>UdS7@ya5{PfJQAFO9tH0Y zPDGD}JHYYi1KvJYz6)%Ez6ZV+Y>2)e?gCBd z2jB<6dgzDYN5IkF-v#rb--rJV=0<-Ae+1@0e*%9BW<`Gv{|C&3{u2HQOppEs z{uWGw{vQ4TOo{#p{u%rc{VV(%u#^6VKXM8He*J~>e|U266M9N`D)2pe8hBdp4SITb z2Jj_%CU|D>IeJ!jHt-304tP%RA$o3j9`HVTK6rlc4tha&A@CM@VR#YnI(jj9aqud7 zNq8yn5_%bUS?~|^^6(1adGt!~%HSFFs_<&yN%R`Vl_;BCQm=&)hev}G&|}~O zz;WoY@HlWZ`e67F@F(vFc9uM|FUkYCac12$fUjcSPUj<(cwntwJ zUkA2D-vHkTwnG06z8UmG-wNLb`l9cE?*yBo?}qOI8=>!m?+4B33Gf48ee^@{!(bis zqwr&3P4pA+lVCOU)9^E3W%P6K^I!$^-{F6NWzjFfFM*}dufVT@#nG?9uY*Od zKY_{7zreqO$`B{|J6YPXSK}en3wRPXoS1PX|vAzCzCk&jkL1o&}y2 ze2ShOo&$V@o(rBE{2M(lJRf)$y#Tx*n22tK7Y1*j7ljuC|3WVTF9}{oFAXmP{)t`= zULL%FUJ+giJd0ihUKKorUL9ToJdR!qUK>1uUKd^uJc!-^ZUSBCKJbR%Ui8NBCg3jg zX7J|VcJvnTmf#k2e|P}63B5JE4Y(dX5Z(@4gWdt&5nPGh8Qul_6}=n0JGcbBCp-vT zgdPG91?Qt%;Jv^(=zZW;a3*>`csMu>JrZsMC!_a=+reMZ9q<_NXY_&aSa1ybAoyT# zB>GVJFwlwagpUA+qK|}+0tcawfsX|TqW=sZ4?56)flmbcqfdrU0VC0;!KZ`$&}YJD zfql^Dz~_P%^!e}wUtd`g-^Vur>N7 z_-~*;`WEd_ztic`Y!lxurc~x_&(4F-33no8=xPA9|G&5AAuhQYoQ;9p8%_) zpMswTtDv8Sp93qRUx5D(mP7v&ei1BL^e*oq}e*}LFW=DSte+Fhj{|Ej8%!vL9{u)e&{ucfYOpX2l{t--p{u%xS`~m$N z{JVjReUnW=4E%zg9G(LFh@J|b8hnSI7M>1#jh+FX5qyE38J-1vhMo%2CojDK(7g}1s+AO1Fs7nLaz^R04AWD;XdF#^hWT;;BNG$@Mho+bYFN2a4WhW z+#mc6y%oGQxBrT#DWU-Vf@9I+;Df+X=tJN`!4c@g;ZATE z`cLqY;9&I8@G)R4`Z)N{U<~>M_%EOxeG+^!XhWY0p9Y4b&w$Sat?0AibHHBc^WgKr zQ1pfHMPLwmJbVe*9eo-6SFj8E3iwK}Bl>Fi8n7MuI{1394f;m-CNKbfGkgo!5`7zd zJJ=k3Cwv#!1bq*DFW3-$KimbH&=0^5g7wf3!;gTq(T~B8gEi1k!cT!!(a*rof|bzE z!!Lm4(f@$|36?>>1iuWHM869E3oM3y9ex8WjD8EA2o^-Y1HTLAL%$FI8_bRV5dH|v zf&K*k6wHeL9R3fO3H>Gf6__6V4g4*b2K_z!1DF#16Z|vyBl=hPH((d~8>Zx30Q~wR zrvvch;3xEy@KoS?^fd6a;2ZSx@C@Kf^i1%~;B)k>@ND1{^c?V<;6wD>@I2ss^nCFA z;2rdW@Iv4%^uq8W;C1w3@Z#WA^pfyW;3f1j@Uq|^=;h%R!1L&p;FZBM=vCp>z?0}T z;5ETx=(XW>z{BYE;Pt@+=q9)s+>hQ6-U!@--UQwh+=<>C?h9^1ZwdDUH=_r@TY($V z+rZm`>(JZ5+k>moJHk7GE6}^ZyMoKmyTf~c@#sPDU~nONC_D_Dhu#a`8=Q@9h4%$# zpohaFz^UjqcoaAZ-42fiC!oi`2Y}dEw!{EaW=p!r!4nZFU9}UK# zkA;r|2cVCKPXMFQC&DLzQRq|PQ^5%I>F^m~U-Vh<*l82SSELNFM8F+3jZ zfxZ;J4D5=&9KHhVguV*C8f=fg7QPN_i@pKA5p0G28+^Cl;8*S z)bKRmTl94B^x!M>jPOk0Kj>NDS;431+2J|BN9eiWxxv5D^TP9ichL*L3xbL0MtEWH z26|C=G4L<+67Z7XW%SbUGT@)+<>2MP3+NT$mB6#;Rp3>@Q|Q&FIU0e?mx2#*EFpbvr%21lX~g%1Or=uY?ua47mn_$Y7?`WX0Fa3K26@bRDn z{TKK|us`}__!KY_eHwf^*bjXsd=}UTeGYssXhEM3UjT-nFM=-yd!jFaF9o}y{|a9Y zc1B+bUj=qRUjttY2BNQrZvb1PZ-V~@`lD}wZv|VRZ-?&yo1yQ5?*<#A?}hIJeb8O- z1h4`6LHHrCF8UGpQLq;Jargnyu;HklP=xO2Uz}M&* z;2FUe=$YYJz-Q>$;Mu{)=sDrJzz67g;CaD&==tFVz}x7B;70H!dJ%Y0@EUq?cnR+1E z-N2>jJ>WgT#puEC5O4u{7~BHRMehyo1I|M43-1R`M~{FY3=;Qhgg=+SToI39ff zd>}X$Jq|ty9ECmvJ`@~*J{;}@hoS!j9|;ad9}OP^#-fjd{|v^UPk{dd+R-P$CxbTh zsqkrFIQk6uOwfux8$Ji@g+32H9}Gob2wwySp~u6QfZfrT!G8t2ps#?h1UsUyhOYtJ zp|69l2iu@;gl_@^&^N=kfGyFt!MB6W(Radkflbi&!1sa;(f7k$pb7l|{2*8l{V@Cp zSR4Hq{5V(x{UrPpSQY&Y{47`r{XF~vSRVZk_@7`I^h@x|U`h0=@V~%f=-1&lz{2Ra z;E7;C^gHmoU_SKw@V~*_=nvtKz#QmL;7`G<=+EK*fSJ%=!e4>u(ci$|f@#p-!#{v2 z(LcdIgFm8wg?|I~a8JWDoC|o)dhCo*SMAypNs_o*%q}UJzagyoFvEUIe_3UJPCwyoz2DUJAT~UItzk z`~$r_yaIS0y%M}Kcm};Hyc&2Cy#~A{cnrNZybgF6y&k+icmUl5H-r1p8^Rlbd(fM} zn}R#ho5Ov z7(N9234IuRxB-2H#lRuxqu`^#IP|gbao_;-@$d;?H2OsNBrpnn3VbRUfj%8R1MG`F z3qBj{jXoDX4-7+J0AC0Oqc4WXgFVof!k2+v(U-$lfSu4+!B>Or(bvM)fo;(@z&C=e z(0_w(2K~^t!nc9G=sVy$!KUcD;d{VF==xSO@(m{1{jh{RI3Z zSPlI&{0vwb{T%!}SONWa_#a?d^o#IIU@7z~@T*{P^lR|zU=j42@LOOZ^xN<|V1D#_ z@cUpM^at>VU{3VM@F!q4^k?wrU}p3e@Rwi)^w;n=U|RHd@b_RU^pEgQU~=>?@ULJp z^zX1e*!SDFod3gr1V5vvfTsjMpr?kX0pFshgQo{yp=X3=0{=nJ0?!IQMb8e;0X{;{ z1+`K5#2I6TKfi9Gr$83Acfh(fh;g;4kP7cntV6`apOrI0k(Xd@wi?eJFew=tOtI zM}R}oN5V&egV4vo$ASaVe}<0-9q7NnCxZRaC&QFG1wD*34AHo4gFX6ak8p(2v7UfYs4Y!B2x#(9gop zffdm&z<&qJq5lcL2$n{_48H=FK>rJV4J?X&1AY@Uq9?*{g9XshX3x5ZuM*jf+2&O>)4F3ZDfc_2s-M~Y=lTAkq z{DPhwo&x-co(i5Ce21PEo(_DCo&lZ_e1V=Bo&|h{o(-NIe2ktGo(p_{o(G;6yoa72 zUI4s}UI=akZ=x507X`1O7l)Ssub`KLmj*AQmxY%De@CwXuLzz)uMDpOo<^?*uMVC- zuL-XO9!0MMuL~YRuMckkCZL<)KHxs|M)1bqZuF+`X5bEVUw8{}E4m-tAN&oy6}&aL z0lh6e5L}Di9^L_5h29C?8C;Iu72XY8irxd>6I_fQ3=aVppohUN;9T_H@IK%y^uF+Z z;B@o|cqBLlJqq3*oQNI`cYx#32fzn{W6|T_gTPVfL*PTf5$MC=PH-6dPwnEIQY+C4EhB4FQ6TL5_~dfL!Szt28N^0fX@W2=(FK-z+UL{;Pb&y^o8(6U=Vsd zd7aR zeGhyu*bsd`+y$D@55NzC_0SK)kASt&kHL?FHPBDOPk~j@&%n=umC(<_FM#FI|A7Aq zmO;M+zYLZ{zY6~gEQWp^egiCwehZ!m7DT@TzYFF=zYqT#%#HpK{s_#0{sjIM%!>XT z{tuW5{U!Vrm>&HN{4JOU{XP5xm=gUH{4@9?`d9cjU=Q>+OwYLh`1Nbf|KZ8OPv|M( zslfN>Y2azWH|Xi%8Niq5nc$hh=jd7C*}y00Ip8_Lhv>QCdBFSV`QZ7%JLm=Bg}__r zh2cfO>*&Sc#lfrSCE=yOOXy|bWx+qt%fl;x=g}*{D}!gytHP^+C(&!bYl6qnYs2e+ zhtcc7>w^c-O>i@~AH5;G5x57v3A`z|6TLay7u<&467C0XMh}3u0ymEkx2cGQ_1-ytNDvJKUdR;ZVX=mLn!093X?%%KY>V0%q*Q=`cx~E^y>=lqhpOhg4gFuh z`yn3m2>1YGSLhD`ABOA<{ZZg!kR72v0elj&1N5hX&p@_?{%_zE$S;z7y~_kVl~J0_*{K5PDBw4Wt!%FW_#F$Y0;2Dq>=w|`Xh8zujJa7V}5&F5n^B}*2 zegW`8$Oz~c0VhEU&@TpF0vQ7RQsCbqM?k*}csXP+^nU=ag!~rz)xc{Y2SL9Mcs-;R z`i;PwAp1eT1$ZlD0QB2|cR==nei!g=$R5!D3A`852l`~-zaYJ!w*n(bPv{QKhqHz6+c82C1%JM?#f??HYB{e9pEkhP%C0M3N04*etG$B{(xFTd0^p%0DKt6`P8gO;UOz3L@*MfWiy&LdnkoTak3+xVg8~XY{7xE_b4S^d$ zUW2{~a8t-D&^HHe0eKPnFMwM@o`?QR;MS0TL*Ev-9pq`~I{<$Lc>?;5z?~qELf;v< z3*;f_y8?ScBIq8l7vx{idjtDG?uFhLxCi8J=>33uLGFOwA2qyhT*zzZPt(EkFw2r?Y{Ux61x zhC=@v@KT5mJp^6`ISl$0z<)pnLB9%kHRNFE*8;DD902_W;Ej;|q2CO=1+owH+km%2 z_J)2Z@Gi)n(C-2M6S6z>`+$=nyFtGn*b1qE{s8bnNDt@_10R9>2Kr;b$05Il{v_}z z$o9~m0X_@a2Kp4>bC9i|zW|&H`8o8LfG6SR1${2? z8^{vS=K;Ti(3g0fm2fWrnKujf|G+MgxzLvac7=QieHq}gklE0e2d)75FZ7jwD?>hk zzAA7v$cNC^0Ims{4t;H4H^_gWuLE2c@(%R%fa^ovg1!N8L&)pUHwJD3nFf6`;O3B* zp#L2B3&;!5w*vkWG6niJz-=MVK;Is?1LR5QzXt9Ic?|k*fICAThTa3XE93#_H9!w? zKlI&zy&?BO-yPT&au4)9f&CzNLf;$MA95S?eSrHyZic=;a3JIc=m!7~gj@^#VBjH; ztDp}89tybv`eDGsAt7`hSO@tV^r66EkiSA74m=X_7wGlCqaf!)Zvc*jOoZM990fTC zdNXh| zUf_L@-q8OAydUC0kAM$Ac7^^B@L|Z#&>sap2H6q%6Tl}SJ3xOL_zYxQ=>G;zf&3Es z^S~D%zkvQC@FmFR&|d*ggKPr*HQ?)z4WYjYd<(KZ^tXZUK-Pu+9`HYqZqPpfPKT@s zeJ1cj$ZF6(27Urr8Tu^Xe<3SC{~S0QvMlsDz%L^sRy0 zK%RxZ9dLWdQ_z0}{59lp=sN*_19=4cF2Ej;2ch=_)<9aJ_X6$)nGC%TaCgW*q3;3Q z6LJ^yy?}c|ZihYqxDVtO==%ZphujFg7I*;UI_L)h4~AR~{kOnDkbgiQ3_J{S8T2E7 zKIBs9Lx4je7eg-qheIxcJ_1+|xd8g_fDMpyp*I4XAmgDQ4Qz&-1--{Se5n&#@-Ob? zObfZ%qtG<6(9%2(KLjzlzNxVv{Sd$*r_(n;ez^0h{p-dRns;v~j4U*^?9Y z?KiOv<6XsQ0XyB^#!g-KsT*0SB{OqUd#p|*wlxRTjT%+ocx1oE;dIUxxOu?1QH5G6 z)7{3E{E)?V^!-(A(oK4rMcdi~3&RV|g~p+Uv=MsOtxtV(VQ5QDs@EUWcbl}aR}zu2x-OmX!%kz^X+8CYyEF)|3&40TlTZ! z7gfI&g`KdIGih?EAybEH{*CX?BRk%6JxBFO>?L-z{B8UF$=G@7wPQ={DEZPZnO1Rp zrT*{#B_Hi@$nPl5;X^l%wd1VjuitF2u`_$%F(r1CyfdO-A3EMWbFDhtj+S@dS#JaK zC;q->UqWmqzgj*ywB+CanK}tdx;6iLq2)`>%(s*CsR$&^|C#zp^)ByMo?p8p7OQ&j zcJ4Qjt~cKPleV|77izxg>ix)$f9kYt39*?tcuGEezxV!pd}4*|Xn8rSGCz$RB@}ee&zn8B9Jum`L@Dw2ujmX zjDJ>qsXGfkKj(H*5lEUQzuxf^rqKFH@W%8{>~)l^c>mJyeey$4JeRg$rFe;p#6!+o z4SbC_1GN3ABro|Ow9lIrFL|PP*#2b6lON^$$%2=c^j{RtbWY zKdB@6FWb+bVt>g8p>01aUh+i!w*ASHCqK&hlLaq%5|lcTwqT`riA%Y&78;3ZFjQYX?DtQ0SCDOa}?pDg(r2?Egevy!~z zgU~*2R=nhc;$i!fB~N~o^Ct^l@+2rFByGV;@e&uxkDae-;9DgKR{o@p5F=T8>AXzb@C0`>!0NQ?5l9zlC+UL!R zmwZq>Y=5%k$&YgWWWh_G1f_(eEm$dD;zIec^HmLes|3NypVX23m+j|IvA^Vl(6*ly zFL|PV+x}$5BM-A`BpIcc6)#?7b^iRkNd^|zI270IrH~l2;>C@{HJ-Wu5`hHsJmzt* zE26X>9_sl5T~C8)CzsqmI~nou-W$I}{JtoxeIA}|{ye;rcb#X9AMU)F?~p(70ZUy# z{%CpUhMQ*6@%|mxzD?*Hc*P&dj+S??TEWy`{K(uF$&Pz}pV0=DJPs`#Z{$m|<$QI< z!3p4(ckEpsQr)S4^o;nbsuOPs=XCo155>of2ab=HhY7Q#?P&S%qA$&S7`JSF zwd9FxX!+ozLzDUWhOtkWyq|fdxn5}baJ%Gs;omsV)K4^d{FxLdE$`en#LUnBpoSUb zk2m^>D^35De6&^HSLyuGOIv+xj)zX0mJcrIZ{p*Qy5vc+6V+UJGNG1_@16cJ`Qz^T zz)N&|yull{_9RsD;jm}T^&;&2(L2VE&O6Pa>yDOp?%VAn^2dMq$v2EYXJ3CKp_ccr z`_FW;6TR2%Jvu(PXtKHPXnFg-%lJXQ&}Q9_Rg_Q8PXA{0c{D$7l7l=Bc^r}m{IqeX zwmOqOSDRnCKR<09=6RP0q1yAdwbY5CNwf)iZv`$LL)A}i)y?(0UX`Phzr}a}~$67zt z@U%`!`_uZVLDI2ld0Ho><7xer&|W{)@U%`!`_uZVL2La~!_)ey*&pktg!cNWhNpE> z+Mm`>3GMY$4NvQ&v_Gw%658vh8lKiqX@6QjCA8O1H9QW@=W7IEF^Yq6c461`j1l~^ z2<%i_{baR{T=u-QPHM&@)=z6B=s+z`>!f7I!TKrLajo@J4NvQ&v_Gw%k{x^fRKwHy zso5Xvr)0-oKh^NGPD=aJ`YG9wP0Q0dDcPa*Q?g^PpK5qoCpG(H{gmw3>!%u?)=6o9 zT0bQ_fwg|B;c13<{5qsRPr*eWIRc~vf{(RNxk@ACwX(wKZ=)@cR0`fJRTQ*Vn@q+QonPO zcn54p%ln+40QE@yp>aj1<-@_rJSgb19cc?ziVwa@`V(>gV$PSAcR0R2k1IhfUv3_x zIBWUv%cO21uE$~>DtQ@KGM?=5)e65V&C@ud^V0aDxD@-PS8@()c2@$CrkuaYXymxDu>ETgz*& zQ*G@}sRPu7aUM^o`ztTMAiOwteDdtPbQ+|w{GWpT)G`?v6a(U43 zlqcF>@<#K04cb~><~u>DLum_EikJI%x$khe9<{v3*Fm4-O-S+4^7cGP@%Gq`mJeqq z^M=dUuZa7l=B@jA^2aZ8KVL~+>Q3%E;?(@nQQqZw)aC1-&-aH~-jnOYLVo^okSD5_ zfIlC5+%GLp}B+T$n-UYrdu+em>PvzT9&t>W`K$HxH5>El>9utvF8ZFXVnh z%gcRyxzEL9ztTL7FFG%cBZ`YXzBD|IBif(F7um7LmxibDMf)%8=Pw#ZWQWEVp*_Ad zyj-6I?eUe^O+KGhikJI%8b@^g&>COV?kI2HuhVfZUw5>;_Bz$p{>A%vzHhR}R}K85 zaYuf($IJbn+$V-IUt9O{WT#R*-5-+wbbm(iW@~FVCSuzCJtLPc2XPfhHa@t{Anv_Bz$p{&XMMiu}0TFPbOF zKP~U4ewQuA?|zZp%=jw#-8%VwuPF69XcQNUPgXomo!&Bie}dvb@sQ1qPZqr7t>_Q` zPFrSt>UY`f@ny%SQas|4X}w5Z(iqH{W4^y0zq9N$HP(N2l=sd(el@^5FxgZbAKUCX6@l?KtOn@0xxo z`KU0kJNXkod7=3o7w`8^Jx_MDJh@`FrPq0sj`wDqZ1T^n<5ZaUU%7fB<;!bXH}Pj$ z;*XXW|J@DNPwd=R+OLlC;X51lHF3UVJriI5`CCl9wS3W^6JDHb;{4WAC2@8;&R5m@ z;qJ7PpP>GP%g+5LL>y zU(a22KG})cj+XbPCU)GR2R}&hi8(%6-hVf-J8FIg+u7=*Gs#Xd&Pv{4 zf5;WuT=qxH2Yg<4=7%MD*YfULNx!12-#dlk>`5Ie`S6{@PJHUhN01%qmzH<9euDlZ z&Z0O={iyl(IA6V28B6|1-W?_HbHAd!SD0Y;OUUY596m}&jU=RfhMQlD$uJa3ub>8AT3 zsUz`I+JZk7Pjyb`mreZ6iWfiVa~Ank?(0`0`_bnwLi_WVh8KV0?bmtK*!iIJ zzPF=%e9g=W=DIauU1P_2C9$LBgW=Opqxn5p`sLTjA7|a<^PrZe&wZvp_&i8xe;(BE z-sLr)QNO&ewtUanxg_~KsO9}@pXpo!J3c-Sk{$UxsO6mtPThiz5B@UVd|$yiIr%)O z<>_-D`9q%v$)5drP{ZR;v(e`xW2emLrb_bBi`N`Y{)Y!1_&l9A{M$9=^Ou%SdWHKr ze9kidm-+nF5#CKdk2*2=I}cjE+&oGB%!&`t59+^c)F1LED?aA9rv1r^cT>;RLvClq zd#U>nD(bVzF1!pXlvdu_1HmP@*}%bo@&s@il=_t{!?7YpRD*G zHLk^pA5|Hjn2= zx?W_#JE`$5{$$0|IHG!yP1=H$=8N&*6U%kIT6oG6)lJ%;_V^%mU5<}S>}dINc_DwY z;vK$UF4l?6gBkIDYFzv5PiA~-KBPQJz6fQj7%%zZ6MGyliIez~CEp4s%K1|X-c98z zx*x z2(m-(OHh1bj*ph7^=Ps~?@N$BvhJ+r@qU7_gZCxKPBG3(-eG^p71~_xmzJmZB20Yn zzJ%?MmZ$e6$PT?PL2>q^4wXE;7eRLDeF?H7{nGOEUIf{p_a&%bQa@@Q??sRu5AREm zKazKPUqZvvdl9rhy)R++OULu>H~UaykoVQ9sLUnejDc zoB=f}=S^VpI3)Fv$03hH5`jDpc^vEr@jBcCVpddTa+jzC@yb~N(&A+LwL9_$F@ z^O?$^ZijRAFQ{HdB5Db=kzU1oQ{ai_l~u^|NW#H z=J?T%btZp;>$fxCJ67{u>dpK2-f~A?M$c)Zqo&Oyd%lv7PJ7dQA0XUxY)|ql`t^A8 zJ#j4`{w#Tq-`Q~FJbEq~?f0_zez%riRCO2~pM3Aa>Hh2`<~i+qNj+=%ctZD*aS=Vu z-@j1ufm>_doA5oOy2^Cd}r3l6-$z%ggZ==GT`b7I9S6X zU+>^xmjcP zI|6w<*wOgW`N2EC+oSYcRkq;kXlfLVMjx!_)c{?N94gtw4L-O2gCo z6zxyzRtBwgD-G{<{j2$%T(8d~om*kfy)0R`((=yE$?yNV#}AoD_2ccBtP`nu>Ql1) z=)531S(xvi$IU8-{P{iyBOe#}xX8za9f7}cfkLtYPgJ=hV*>%opjK0o|Ftq1x% zSZ2%Yd&{{$CL4MDlcLPykjKHEp7MIg>%npUR{A?j(ck%ZiWhfYDxLdL>{mv7aCzzP zKYM>o+KW3c;Vi}%@ix!X`9CVnQ#|ea9y`ui@OFI6`OCzoqI{Y2*N~H0@e&|Df3aS& z;^Bu~Cq;j<;yDiFM@8$Tjq_I9d?jTf^;^uB{6~fBs@mqCMdgo#Q|=ea#hL1}Vm#+n z{3@Pzap$>1)zTk7^}DIk7L@o)Td>-B@vmCync`+&cO;IBJ1=q0>$&v4Sn_Mfry8#B z)mCp3pK7_j`{~~S#^3*|fsd@rEP0BnY_>mH@Sfy{9SXUf z8PEBV_(c4B;$D^TA^)Cu+Mi1CK`LK9kE^VB$&ciV;zIL%mOPzbHrt;pcp69cc_~lS z&WiUrKN27Ld#=^O)8FB(fpckp+T$h9#eP}yh8=&Y%Qp8<0K2%ZiWq?>eXbtQ7C1@)Dp;b(R$`^MTZl zmtVh3C?pP&ABm68`O1nHzr>%=x*xOWtE_mbr?j8#@&1VG9;W#rxOlVV?~)&xw6(l5 zb?2vTJJIdEZld<0;7xqX*#A*J)h`Eav%iv$Z%+Cl@d@Au+0pX;jlFK7{5pW4u?N^rPrcA*n+xAKj9Q^9xB`YI%?ASNsXs zj+*zrG~>(v_oLHI-P}3e{4SrT*iQIV($?}Z9~X!}+}83D_e1*S^-B7w z<=wkD9^y|;Vn@q6Y{!-Oz#odYmXFi@LZ0lr75m!`?>$|bFKUw=E$_1(Id6b`ksU4X z^-SU#NSx76 z<}n`{e>gtD<2>G!Jk5J{ze1j8wYao{?hUx&&T4A*wONo^3;~U zkDml2k3${@duZhKkk>M?h^<0nNov(XnFtK zoy_y*=;6c;waJc_55>;yZ0Eehj+T$n59&{FQ(`BcJjnbmjFt~;6Fc4mYzOh8erb81 z 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..a0bfb16869c23e275833c75a12cdaf49de7e3150 GIT binary patch literal 107784 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 OE741?mQ_`|CjJME;Org% literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.fbx b/unilabos/device_mesh/devices/toyo_xyz/meshes/slider3_link.fbx new file mode 100644 index 0000000000000000000000000000000000000000..6cec9641a953b17d0ace1b8e4ac632a63440aa0d GIT binary patch literal 351568 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 - + self.srdf_str = ''' + ''' @@ -43,23 +67,46 @@ class ResourceVisualization: ''' self.root = etree.fromstring(self.robot_state_str) + self.root_srdf = etree.fromstring(self.srdf_str) xacro_uri = self.root.nsmap["xacro"] + self.moveit_nodes = {} + self.moveit_nodes_kinematics = {} + self.moveit_controllers_yaml = { + "moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager", + "moveit_simple_controller_manager": { + "controller_names": [] + } + } + self.ros2_controllers_yaml = { + "controller_manager": { + "ros__parameters": { + "update_rate": 100, + "joint_state_broadcaster": { + "type": "joint_state_broadcaster/JointStateBroadcaster", + } + } + } + } + # 遍历设备节点 for node in device.values(): - if node['type'] == 'device' and node['class'] != '': - device_class = node['class'] - # 检查设备类型是否在注册表中 - if device_class not in registry.device_type_registry.keys(): - raise ValueError(f"设备类型 {device_class} 未在注册表中注册") - elif node['type'] in self.resource_type: - # print(registry.resource_type_registry) - resource_class = node['class'] - if resource_class not in registry.resource_type_registry.keys(): - raise ValueError(f"资源类型 {resource_class} 未在注册表中注册") - elif "model" in registry.resource_type_registry[resource_class].keys(): - model_config = registry.resource_type_registry[resource_class]['model'] + if node['type'] in self.resource_type or (node['type'] == 'device' and node['class'] != ''): + model_config = {} + if node['type'] in self.resource_type: + resource_class = node['class'] + if resource_class not in registry.resource_type_registry.keys(): + raise ValueError(f"资源类型 {resource_class} 未在注册表中注册") + elif "model" in registry.resource_type_registry[resource_class].keys(): + model_config = registry.resource_type_registry[resource_class]['model'] + elif node['type'] == 'device' and node['class'] != '': + device_class = node['class'] + if device_class not in registry.device_type_registry.keys(): + raise ValueError(f"设备类型 {device_class} 未在注册表中注册") + elif "model" in registry.device_type_registry[device_class].keys(): + model_config = registry.device_type_registry[device_class]['model'] + if model_config: if model_config['type'] == 'resource': self.resource_model[node['id']] = { 'mesh': f"{str(self.mesh_path)}/resources/{model_config['mesh']}", @@ -71,18 +118,45 @@ class ResourceVisualization: 'mesh_tf': model_config['children_mesh_tf'] } elif model_config['type'] == 'device': + new_include = etree.SubElement(self.root, f"{{{xacro_uri}}}include") new_include.set("filename", f"{str(self.mesh_path)}/devices/{model_config['mesh']}/macro_device.xacro") new_dev = etree.SubElement(self.root, f"{{{xacro_uri}}}{model_config['mesh']}") new_dev.set("parent_link", "world") new_dev.set("mesh_path", str(self.mesh_path)) new_dev.set("device_name", node["id"]+"_") - new_dev.set("station_name", node["parent"]+'_') + # if node["parent"] is not None: + # new_dev.set("station_name", node["parent"]+'_') + + print('o'*20) + node["parent"] + node["id"] + print('o'*20) new_dev.set("x",str(float(node["position"]["x"])/1000)) new_dev.set("y",str(float(node["position"]["y"])/1000)) new_dev.set("z",str(float(node["position"]["z"])/1000)) if "rotation" in node["config"]: - new_dev.set("r",str(float(node["config"]["rotation"]["z"])/1000)) + new_dev.set("rx",str(float(node["config"]["rotation"]["x"]))) + new_dev.set("ry",str(float(node["config"]["rotation"]["y"]))) + new_dev.set("r",str(float(node["config"]["rotation"]["z"]))) + if "device_config" in node["config"]: + for key, value in node["config"]["device_config"].items(): + new_dev.set(key, str(float(value))) + + # 添加ros2_controller + if node['class'].startswith('moveit.'): + new_include_controller = etree.SubElement(self.root, f"{{{xacro_uri}}}include") + new_include_controller.set("filename", f"{str(self.mesh_path)}/devices/{model_config['mesh']}/config/macro.ros2_control.xacro") + new_controller = etree.SubElement(self.root, f"{{{xacro_uri}}}{model_config['mesh']}_ros2_control") + new_controller.set("device_name", node["id"]+"_") + new_controller.set("mesh_path", str(self.mesh_path)) + + # 添加moveit的srdf + new_include_srdf = etree.SubElement(self.root_srdf, f"{{{xacro_uri}}}include") + new_include_srdf.set("filename", f"{str(self.mesh_path)}/devices/{model_config['mesh']}/config/macro.srdf.xacro") + new_srdf = etree.SubElement(self.root_srdf, f"{{{xacro_uri}}}{model_config['mesh']}_srdf") + new_srdf.set("device_name", node["id"]+"_") + self.moveit_nodes[node["id"]] = model_config['mesh'] else: print("错误的注册表类型!") re = etree.tostring(self.root, encoding="unicode") @@ -90,8 +164,37 @@ class ResourceVisualization: xacro.process_doc(doc) self.urdf_str = doc.toxml() + re_srdf = etree.tostring(self.root_srdf, encoding="unicode") + doc_srdf = xacro.parse(re_srdf) + xacro.process_doc(doc_srdf) + self.urdf_str_srdf = doc_srdf.toxml() + if self.moveit_nodes: + self.moveit_init() - def create_launch_description(self, urdf_str: str) -> LaunchDescription: + def moveit_init(self): + + for name, config in self.moveit_nodes.items(): + controller_dict = yaml.safe_load(open(f"{str(self.mesh_path)}/devices/{config}/config/ros2_controllers.yaml", "r")) + moveit_dict = yaml.safe_load(open(f"{str(self.mesh_path)}/devices/{config}/config/moveit_controllers.yaml", "r")) + kinematics_dict = yaml.safe_load(open(f"{str(self.mesh_path)}/devices/{config}/config/kinematics.yaml", "r")) + + for key_kinematics, value_kinematics in kinematics_dict.items(): + self.moveit_nodes_kinematics[f'{name}_{key_kinematics}'] = value_kinematics + + for key, value in controller_dict['controller_manager']['ros__parameters'].items(): + if key == 'update_rate' or key == 'joint_state_broadcaster': + continue + self.ros2_controllers_yaml['controller_manager']['ros__parameters'][f"{name}_{key}"] = value + controller_dict[key]['ros__parameters']['joints'] = [f"{name}_{joint}" for joint in controller_dict[key]['ros__parameters']['joints']] + self.ros2_controllers_yaml[f"{name}_{key}"] = controller_dict[key] + + for controller_name in moveit_dict['moveit_simple_controller_manager']['controller_names']: + self.moveit_controllers_yaml['moveit_simple_controller_manager']['controller_names'].append(f"{name}_{controller_name}") + moveit_dict['moveit_simple_controller_manager'][controller_name]['joints'] = [f"{name}_{joint}" for joint in moveit_dict['moveit_simple_controller_manager'][controller_name]['joints']] + self.moveit_controllers_yaml['moveit_simple_controller_manager'][f"{name}_{controller_name}"] = moveit_dict['moveit_simple_controller_manager'][controller_name] + + + def create_launch_description(self) -> LaunchDescription: """ 创建launch描述,包含robot_state_publisher和move_group节点 @@ -101,10 +204,93 @@ class ResourceVisualization: Returns: LaunchDescription: launch描述对象 """ + moveit_configs_utils_path = Path(get_package_share_directory("moveit_configs_utils")) + default_folder = moveit_configs_utils_path / "default_configs" + planning_pattern = re.compile("^(.*)_planning.yaml$") + pipelines = [] - + for pipeline in get_pattern_matches(default_folder, planning_pattern): + if pipeline not in pipelines: + pipelines.append(pipeline) + + if "ompl" in pipelines: + default_planning_pipeline = "ompl" + else: + default_planning_pipeline = pipelines[0] + + planning_pipelines = { + "planning_pipelines": pipelines, + "default_planning_pipeline": default_planning_pipeline, + } + + for pipeline in pipelines: + planning_pipelines[pipeline] = load_yaml( + default_folder / f"{pipeline}_planning.yaml" + ) + + if "ompl" in planning_pipelines: + ompl_config = planning_pipelines["ompl"] + if "planner_configs" not in ompl_config: + ompl_config.update(load_yaml(default_folder / "ompl_defaults.yaml")) + + yaml.safe_dump(self.ros2_controllers_yaml, open(f"{str(self.mesh_path)}/ros2_controllers.yaml", "w")) + + robot_description_planning = { + "default_velocity_scaling_factor": 0.1, + "default_acceleration_scaling_factor": 0.1, + "cartesian_limits": { + "max_trans_vel": 1.0, + "max_trans_acc": 2.25, + "max_trans_dec": -5.0, + "max_rot_vel": 1.57 + } + } # 解析URDF文件 - robot_description = urdf_str + robot_description = self.urdf_str + urdf_str_srdf = self.urdf_str_srdf + + kinematics_dict = self.moveit_nodes_kinematics + + if self.moveit_nodes: + controllers = [] + ros2_controllers = ParameterFile(f"{str(self.mesh_path)}/ros2_controllers.yaml", allow_substs=True) + + controllers.append( + nd( + package="controller_manager", + executable="ros2_control_node", + output='screen', + parameters=[ + {"robot_description": robot_description}, + ros2_controllers, + ] + ) + ) + for controller in self.moveit_controllers_yaml['moveit_simple_controller_manager']['controller_names']: + controllers.append( + nd( + package="controller_manager", + executable="spawner", + arguments=[f"{controller}", "--controller-manager", f"controller_manager"], + output="screen", + ) + ) + controllers.append( + nd( + package="controller_manager", + executable="spawner", + arguments=["joint_state_broadcaster", "--controller-manager", f"controller_manager"], + output="screen", + ) + ) + for i in controllers: + self.launch_description.add_action(i) + else: + ros2_controllers = None + + + + # 创建robot_state_publisher节点 robot_state_publisher = nd( @@ -115,23 +301,21 @@ class ResourceVisualization: parameters=[{ 'robot_description': robot_description, 'use_sim_time': False - }] + }, + # kinematics_dict + ] ) - # joint_state_publisher_node = nd( - # package='joint_state_publisher_gui', # 或 joint_state_publisher - # executable='joint_state_publisher_gui', - # name='joint_state_publisher', - # output='screen' - # ) # 创建move_group节点 move_group = nd( package='moveit_ros_move_group', executable='move_group', output='screen', parameters=[{ + 'allow_trajectory_execution': True, 'robot_description': robot_description, - 'robot_description_semantic': self.srdf_str, + 'robot_description_semantic': urdf_str_srdf, + 'robot_description_kinematics': kinematics_dict, 'capabilities': '', 'disable_capabilities': '', 'monitor_dynamics': False, @@ -141,7 +325,13 @@ class ResourceVisualization: 'publish_geometry_updates': True, 'publish_state_updates': True, 'publish_transforms_updates': True, - }] + # 'robot_description_planning': robot_description_planning, + }, + self.moveit_controllers_yaml, + # ompl_planning_pipeline_config, + robot_description_planning, + planning_pipelines, + ] ) # 将节点添加到launch描述中 @@ -156,7 +346,14 @@ class ResourceVisualization: executable='rviz2', name='rviz2', arguments=['-d', f"{str(self.mesh_path)}/view_robot.rviz"], - output='screen' + output='screen', + parameters=[ + {'robot_description_kinematics': kinematics_dict, + }, + robot_description_planning, + planning_pipelines, + + ] ) self.launch_description.add_action(rviz_node) @@ -169,6 +366,11 @@ class ResourceVisualization: Args: urdf_str: URDF文件路径 """ - launch_description = self.create_launch_description(self.urdf_str) + launch_description = self.create_launch_description() + # print('--------------------------------') + # print(self.moveit_controllers_yaml) + # print('--------------------------------') + # print(self.urdf_str) + # print('--------------------------------') self.launch_service.include_launch_description(launch_description) self.launch_service.run() \ No newline at end of file diff --git a/unilabos/device_mesh/ros2_controllers.yaml b/unilabos/device_mesh/ros2_controllers.yaml new file mode 100644 index 00000000..7dbad85c --- /dev/null +++ b/unilabos/device_mesh/ros2_controllers.yaml @@ -0,0 +1,31 @@ +arm_slider_arm_controller: + ros__parameters: + command_interfaces: + - position + joints: + - arm_slider_arm_base_joint + - arm_slider_arm_link_1_joint + - arm_slider_arm_link_2_joint + - arm_slider_arm_link_3_joint + - arm_slider_gripper_base_joint + state_interfaces: + - position + - velocity +arm_slider_gripper_controller: + ros__parameters: + command_interfaces: + - position + joints: + - arm_slider_gripper_right_joint + state_interfaces: + - position + - velocity +controller_manager: + ros__parameters: + arm_slider_arm_controller: + type: joint_trajectory_controller/JointTrajectoryController + arm_slider_gripper_controller: + type: joint_trajectory_controller/JointTrajectoryController + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + update_rate: 100 diff --git a/unilabos/device_mesh/view_robot.rviz b/unilabos/device_mesh/view_robot.rviz index 64f6b358..50e0543e 100644 --- a/unilabos/device_mesh/view_robot.rviz +++ b/unilabos/device_mesh/view_robot.rviz @@ -1,23 +1,15 @@ Panels: - Class: rviz_common/Displays - Help Height: 138 + Help Height: 0 Name: Displays Property Tree Widget: Expanded: - - /Global Options1 - - /TF1 - /TF1/Tree1 - - /RobotModel1 - - /PlanningScene1 - - /PlanningScene1/Scene Geometry1 - - /RobotState1 - - /RobotState1/Links1 - - /MotionPlanning1 - /MotionPlanning1/Scene Geometry1 - /MotionPlanning1/Scene Robot1 - /MotionPlanning1/Planning Request1 - Splitter Ratio: 0.5 - Tree Height: 345 + Splitter Ratio: 0.5016146302223206 + Tree Height: 1112 - Class: rviz_common/Selection Name: Selection - Class: rviz_common/Tool Properties @@ -93,7 +85,7 @@ Visualization Manager: Value: false Visual Enabled: true - Class: moveit_rviz_plugin/PlanningScene - Enabled: false + Enabled: true Move Group Namespace: "" Name: PlanningScene Planning Scene Topic: /monitored_planning_scene @@ -104,7 +96,7 @@ Visualization Manager: Scene Display Time: 0.009999999776482582 Show Scene Geometry: true Voxel Coloring: Z-Axis - Voxel Rendering: Occupied Voxels + Voxel Rendering: Disabled Scene Robot: Attached Body Color: 150; 50; 150 Links: @@ -113,10 +105,108 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order + arm_slider_arm_base: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_arm_link_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_arm_link_2: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_arm_link_3: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_arm_slideway: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + arm_slider_gripper_base: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_left: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_right: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_first_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_fourth_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_main_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_second_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_socketTypeHEPAModule: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_third_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + hotel_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false + world: + Alpha: 1 + Show Axes: false + Show Trail: false Robot Alpha: 1 Show Robot Collision: false Show Robot Visual: false - Value: false + Value: true - Attached Body Color: 150; 50; 150 Class: moveit_rviz_plugin/RobotState Collision Enabled: false @@ -166,43 +256,100 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order - PLR_STATION_deck_device_link: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_first_link: + arm_slider_arm_base: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_fourth_link: + arm_slider_arm_link_1: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_main_link: + arm_slider_arm_link_2: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_second_link: + arm_slider_arm_link_3: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_socketTypeGenericSbsFootprint: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_socketTypeHEPAModule: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_third_link: + arm_slider_arm_slideway: Alpha: 1 Show Axes: false Show Trail: false Value: true + arm_slider_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + arm_slider_gripper_base: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_left: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_right: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_first_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_fourth_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_main_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_second_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_socketTypeHEPAModule: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_third_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + hotel_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false world: Alpha: 1 Show Axes: false @@ -230,7 +377,7 @@ Visualization Manager: Goal State Color: 250; 128; 0 Interactive Marker Size: 0 Joint Violation Color: 255; 0; 255 - Planning Group: "" + Planning Group: arm_slider_arm Query Goal State: false Query Start State: false Show Workspace: false @@ -242,9 +389,9 @@ Visualization Manager: Scene Alpha: 0.8999999761581421 Scene Color: 50; 230; 50 Scene Display Time: 0.009999999776482582 - Show Scene Geometry: true - Voxel Coloring: Z-Axis - Voxel Rendering: Occupied Voxels + Show Scene Geometry: false + Voxel Coloring: Cell Probability + Voxel Rendering: All Voxels Scene Robot: Attached Body Color: 150; 50; 150 Links: @@ -253,43 +400,100 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order - PLR_STATION_deck_device_link: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_first_link: + arm_slider_arm_base: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_fourth_link: + arm_slider_arm_link_1: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_main_link: + arm_slider_arm_link_2: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_second_link: + arm_slider_arm_link_3: Alpha: 1 Show Axes: false Show Trail: false Value: true - PLR_STATION_deck_socketTypeGenericSbsFootprint: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_socketTypeHEPAModule: - Alpha: 1 - Show Axes: false - Show Trail: false - PLR_STATION_deck_third_link: + arm_slider_arm_slideway: Alpha: 1 Show Axes: false Show Trail: false Value: true + arm_slider_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + arm_slider_gripper_base: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_left: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + arm_slider_gripper_right: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_first_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_fourth_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_main_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_second_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + deck_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_socketTypeHEPAModule: + Alpha: 1 + Show Axes: false + Show Trail: false + deck_third_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + hotel_device_link: + Alpha: 1 + Show Axes: false + Show Trail: false + hotel_socketTypeGenericSbsFootprint: + Alpha: 1 + Show Axes: false + Show Trail: false world: Alpha: 1 Show Axes: false @@ -345,43 +549,43 @@ Visualization Manager: Views: Current: Class: rviz_default_plugins/Orbit - Distance: 1.0284695625305176 + Distance: 2.622864246368408 Enable Stereo Rendering: Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false Focal Point: - X: 0.29730814695358276 - Y: 0.21228469908237457 - Z: 0.20008830726146698 + X: -0.2880733013153076 + Y: -0.16004444658756256 + Z: -0.16730672121047974 Focal Shape Fixed Size: true Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979560136795044 + Pitch: 0.4297958016395569 Target Frame: Value: Orbit (rviz) - Yaw: 0.06074193865060806 + Yaw: 0.3525616228580475 Saved: ~ Window Geometry: Displays: collapsed: false - Height: 1656 + Height: 2032 Hide Left Dock: false Hide Right Dock: true MotionPlanning: - collapsed: false + collapsed: true MotionPlanning - Trajectory Slider: collapsed: false - QMainWindow State: 000000ff00000000fd0000000400000000000003a3000005dcfc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000006e000002510000018200fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000007a00fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002cb0000037f000002b800ffffff000000010000010f00000387fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003b000003870000013200fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d0065010000000000000450000000000000000000000627000005dc00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd0000000400000000000003a30000079bfc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000027000004c60000018200fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000007a00fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000004f9000002c9000002b800ffffff000000010000010f00000387fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003b000003870000013200fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d0065010000000000000450000000000000000000000bc50000079b00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730000000000ffffffff0000000000000000 Selection: collapsed: false Tool Properties: collapsed: false Views: collapsed: true - Width: 2518 - X: 385 - Y: 120 + Width: 3956 + X: 140 + Y: 54 diff --git a/unilabos/devices/liquid_handling/biomek.py b/unilabos/devices/liquid_handling/biomek.py new file mode 100644 index 00000000..3fe3049d --- /dev/null +++ b/unilabos/devices/liquid_handling/biomek.py @@ -0,0 +1,1098 @@ +import json +import pathlib +from typing import Sequence, Optional, List, Union, Literal + +import requests +from geometry_msgs.msg import Point +from pylabrobot.liquid_handling import LiquidHandler +from pylabrobot.resources import ( + TipRack, + Container, + Coordinate, +) +import copy +from unilabos_msgs.msg import Resource + +from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker # type: ignore + + +class LiquidHandlerBiomek: + """ + Biomek液体处理器的实现类,继承自LiquidHandlerAbstract。 + 该类用于处理Biomek液体处理器的特定操作。 + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._status = "Idle" # 初始状态为 Idle + self._success = False # 初始成功状态为 False + self._status_queue = kwargs.get("status_queue", None) # 状态队列 + self.temp_protocol = {} + self.py32_path = "/opt/py32" # Biomek的Python 3.2路径 + + # 预定义的仪器分类 + self.tip_racks = [ + "BC230", "BC1025F", "BC50", "TipRack200", "TipRack1000", + "tip", "tips", "Tip", "Tips" + ] + + self.reservoirs = [ + "AgilentReservoir", "nest_12_reservoir_15ml", "nest_1_reservoir_195ml", + "reservoir", "Reservoir", "waste", "Waste" + ] + + self.plates_96 = [ + "BCDeep96Round", "Matrix96_750uL", "NEST 2ml Deep Well Plate", "nest_96_wellplate_100ul_pcr_full_skirt", + "nest_96_wellplate_200ul_flat", "Matrix96", "96", "plate", "Plate" + ] + + self.aspirate_techniques = { + 'MC P300 high':{ + 'Position': 'P1', + 'Height': -2.0, + 'Volume': '50', + 'liquidtype': 'Well Contents', + 'WellsX': 12, + 'LabwareClass': 'Matrix96_750uL', + 'AutoSelectPrototype': True, + 'ColsFirst': True, + 'CustomHeight': False, + 'DataSetPattern': False, + 'HeightFrom': 0, + 'LocalPattern': True, + 'Operation': 'Aspirate', + 'OverrideHeight': False, + 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), + 'Prototype': 'MC P300 High', + 'ReferencedPattern': '', + 'RowsFirst': False, + 'SectionExpression': '', + 'SelectionInfo': (1,), + 'SetMark': True, + 'Source': True, + 'StartAtMark': False, + 'StartAtSelection': True, + 'UseExpression': False}, + } + + self.dispense_techniques = { + 'MC P300 high':{ + 'Position': 'P11', + 'Height': -2.0, + 'Volume': '50', + 'liquidtype': 'Tip Contents', + 'WellsX': 12, + 'LabwareClass': 'Matrix96_750uL', + 'AutoSelectPrototype': True, + 'ColsFirst': True, + 'CustomHeight': False, + 'DataSetPattern': False, + 'HeightFrom': 0, + 'LocalPattern': True, + 'Operation': 'Dispense', + 'OverrideHeight': False, + 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), + 'Prototype': 'MC P300 High', + 'ReferencedPattern': '', + 'RowsFirst': False, + 'SectionExpression': '', + 'SelectionInfo': (1,), + 'SetMark': True, + 'Source': False, + 'StartAtMark': False, + 'StartAtSelection': True, + 'UseExpression': False} + } + + def _get_instrument_type(self, class_name: str) -> str: + """ + 根据class_name判断仪器类型 + + Returns: + str: "tip_rack", "reservoir", "plate_96", 或 "unknown" + """ + # 检查是否是枪头架 + for tip_name in self.tip_racks: + if tip_name in class_name: + return "tip_rack" + + # 检查是否是储液槽 + for reservoir_name in self.reservoirs: + if reservoir_name in class_name: + return "reservoir" + + # 检查是否是96孔板 + for plate_name in self.plates_96: + if plate_name in class_name: + return "plate_96" + + return "unknown" + + @classmethod + def deserialize(cls, data: dict, allow_marshal: bool = False) -> LiquidHandler: + return LiquidHandler.deserialize(data, allow_marshal) + + @property + def success(self): + """ + 获取操作是否成功的状态。 + + Returns: + bool: 如果操作成功,返回True;否则返回False。 + """ + return self._success + + def create_protocol( + self, + protocol_name: str, + protocol_description: str, + protocol_version: str, + protocol_author: str, + protocol_date: str, + protocol_type: str, + none_keys: List[str] = [], + ): + """ + 创建一个新的协议。 + + Args: + protocol_name (str): 协议名称 + protocol_description (str): 协议描述 + protocol_version (str): 协议版本 + protocol_author (str): 协议作者 + protocol_date (str): 协议日期 + protocol_type (str): 协议类型 + none_keys (List[str]): 需要设置为None的键列表 + + Returns: + dict: 创建的协议字典 + """ + self.temp_protocol = { + "meta": { + "name": protocol_name, + "description": protocol_description, + "version": protocol_version, + "author": protocol_author, + "date": protocol_date, + "type": protocol_type, + }, + "labwares": {}, + "steps": [], + } + return self.temp_protocol + + def run_protocol(self): + """ + 执行创建的实验流程。 + 工作站的完整执行流程是, + 从 create_protocol 开始,创建新的 method, + 随后执行 transfer_liquid 等操作向实验流程添加步骤, + 最后 run_protocol 执行整个方法。 + + Returns: + dict: 执行结果 + """ + #use popen or subprocess to create py32 process and communicate send the temp protocol to it + if not self.temp_protocol: + raise ValueError("No protocol created. Please create a protocol first.") + + # 模拟执行协议 + self._status = "Running" + self._success = True + # 在这里可以添加实际执行协议的逻辑 + + response = requests.post("localhost:5000/api/protocols", json=self.temp_protocol) + + def create_resource( + self, + resource_tracker: DeviceNodeResourceTracker, + resources: list[Resource], + bind_parent_id: str, + bind_location: dict[str, float], + liquid_input_slot: list[int], + liquid_type: list[str], + liquid_volume: list[int], + slot_on_deck: int, + ): + """ + 创建一个新的资源。 + + Args: + device_id (str): 设备ID + res_id (str): 资源ID + class_name (str): 资源类名 + parent (str): 父级ID + bind_locations (Point): 绑定位置 + liquid_input_slot (list[int]): 液体输入槽列表 + liquid_type (list[str]): 液体类型列表 + liquid_volume (list[int]): 液体体积列表 + slot_on_deck (int): 甲板上的槽位 + + Returns: + dict: 创建的资源字典 + """ + # TODO:需要对好接口,下面这个是临时的 + for resource in resources: + res_id = resource.id + class_name = resource.name + parent = bind_parent_id + liquid_input_slot = liquid_input_slot + liquid_type = liquid_type + liquid_volume = liquid_volume + slot_on_deck = slot_on_deck + + resource = { + "id": res_id, + "class": class_name, + "parent": parent, + "bind_locations": bind_location, + "liquid_input_slot": liquid_input_slot, + "liquid_type": liquid_type, + "liquid_volume": liquid_volume, + "slot_on_deck": slot_on_deck, + } + self.temp_protocol["labwares"].append(resource) + return resources + + def transfer_liquid( + self, + sources: Sequence[Container], + targets: Sequence[Container], + tip_racks: Sequence[TipRack], + *, + use_channels: Optional[List[int]] = None, + asp_vols: Union[List[float], float], + dis_vols: Union[List[float], float], + asp_flow_rates: Optional[List[Optional[float]]] = None, + dis_flow_rates: Optional[List[Optional[float]]] = None, + offsets: Optional[List[Coordinate]] = None, + touch_tip: bool = False, + liquid_height: Optional[List[Optional[float]]] = None, + blow_out_air_volume: Optional[List[Optional[float]]] = None, + spread: Literal["wide", "tight", "custom"] = "wide", + is_96_well: bool = False, + mix_stage: Optional[Literal["none", "before", "after", "both"]] = "none", + mix_times: Optional[int] = None, + mix_vol: Optional[int] = None, + mix_rate: Optional[int] = None, + mix_liquid_height: Optional[float] = None, + delays: Optional[List[int]] = None, + none_keys: List[str] = [] + ): + + transfer_params = { + "Span8": False, + "Pod": "Pod1", + "items": {}, + "Wash": False, + "Dynamic?": True, + "AutoSelectActiveWashTechnique": False, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": False, + "ChangeTipsBetweenSources": False, + "DefaultCaption": "", + "UseExpression": False, + "LeaveTipsOn": False, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": False, + "Replicates": "1", + "ShowTipHandlingDetails": False, + "ShowTransferDetails": True, + "Solvent": "Well Content", + "Span8Wash": False, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": False, + "SplitVolumeCleaning": False, + "Stop": "Destinations", + "TipLocation": "BC1025F", + "UseCurrentTips": False, + "UseDisposableTips": True, + "UseFixedTips": False, + "UseJIT": True, + "UseMandrelSelection": True, + "UseProbes": [True, True, True, True, True, True, True, True], + "WashCycles": "1", + "WashVolume": "110%", + "Wizard": False + } + + items: dict = {} + for idx, (src, dst) in enumerate(zip(sources, targets)): + items[str(idx)] = { + "Source": str(src), + "Destination": str(dst), + "Volume": dis_vols[idx] + } + transfer_params["items"] = items + + transfer_params["Solvent"] = "Water" + TipLocation = tip_racks[0].name + transfer_params["TipLocation"] = TipLocation + + if len(tip_racks) == 1: + transfer_params['UseCurrentTips'] = True + elif len(tip_racks) > 1: + transfer_params["ChangeTipsBetweenDests"] = True + + self.temp_protocol["steps"].append(transfer_params) + + return + + def instrument_setup_biomek( + self, + id: str, + parent: str, + slot_on_deck: str, + class_name: str, + liquid_type: list[str], + liquid_volume: list[int], + liquid_input_wells: list[str], + ): + """ + 设置Biomek仪器的参数配置,按照DeckItems格式 + + 根据不同的仪器类型(容器、tip rack等)设置相应的参数结构 + 位置作为键,配置列表作为值 + """ + + # 判断仪器类型 + instrument_type = self._get_instrument_type(class_name) + + config = None # 初始化为None + + if instrument_type == "reservoir": + # 储液槽类型配置 + config = { + "Properties": { + "Name": id, # 使用id作为名称 + "Device": "", + "liquidtype": liquid_type[0] if liquid_type else "Water", + "BarCode": "", + "SenseEveryTime": False + }, + "Known": True, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}}, + "EvalAmounts": (float(liquid_volume[0]),) if liquid_volume else (0,), + "Nominal": False, + "EvalLiquids": (liquid_type[0],) if liquid_type else ("Water",) + } + + elif instrument_type == "plate_96": + # 96孔板类型配置 + volume_per_well = float(liquid_volume[0]) if liquid_volume else 0 + liquid_per_well = liquid_type[0] if liquid_type else "Water" + + config = { + "Properties": { + "Name": id, # 使用id作为名称 + "Device": "", + "liquidtype": liquid_per_well, + "BarCode": "", + "SenseEveryTime": False + }, + "Known": True, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}}, + "EvalAmounts": tuple([volume_per_well] * 96), + "Nominal": False, + "EvalLiquids": tuple([liquid_per_well] * 96) + } + + elif instrument_type == "tip_rack": + # 枪头架类型配置 + tip_config = { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": False, + "RT_Used": False, + "Dirty": False, + "RT_Dirty": False, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + } + + config = { + "Tips": tip_config, + "RT_Tips": tip_config.copy(), + "Properties": {}, + "Known": False, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}} + } + + # 按照DeckItems格式存储:位置作为键,配置列表作为值 + if config is not None: + self.temp_protocol["labwares"][slot_on_deck] = [config] + else: + # 空位置 + self.temp_protocol["labwares"][slot_on_deck] = [] + + return + + def transfer_biomek( + self, + source: str, + target: str, + tip_rack: str, + volume: float, + aspirate_techniques: str, + dispense_techniques: str, + ): + """ + 处理Biomek的液体转移操作。 + + """ + items = [] + + asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques]) + dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques]) + + asp_params['Position'] = source + dis_params['Position'] = target + asp_params['Volume'] = str(volume) + dis_params['Volume'] = str(volume) + + items.append(asp_params) + items.append(dis_params) + + transfer_params = { + "Span8": False, + "Pod": "Pod1", + "items": [], + "Wash": False, + "Dynamic?": True, + "AutoSelectActiveWashTechnique": False, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": True, + "ChangeTipsBetweenSources": False, + "DefaultCaption": "", + "UseExpression": False, + "LeaveTipsOn": False, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": False, + "Replicates": "1", + "ShowTipHandlingDetails": False, + "ShowTransferDetails": True, + "Solvent": "Water", + "Span8Wash": False, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": False, + "SplitVolumeCleaning": False, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": False, + "UseDisposableTips": False, + "UseFixedTips": False, + "UseJIT": True, + "UseMandrelSelection": True, + "UseProbes": [True, True, True, True, True, True, True, True], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": False + } + transfer_params["items"] = items + transfer_params["Solvent"] = 'Water' + transfer_params["TipLocation"] = tip_rack + tmp={'transfer': transfer_params} + self.temp_protocol["steps"].append(tmp) + + return + + + def move_biomek( + self, + source: str, + target: str, + ): + """ + 处理Biomek移动板子的操作。 + + """ + + move_params = { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": source, + "Target": target, + "LeaveBottomLabware": False, + } + self.temp_protocol["steps"].append(move_params) + + return + + def incubation_biomek( + self, + time: int, + ): + """ + 处理Biomek的孵育操作。 + """ + incubation_params = { + "Message": "Paused", + "Location": "the whole system", + "Time": time, + "Mode": "TimedResource" + } + self.temp_protocol["steps"].append(incubation_params) + + return + + def oscillation_biomek( + self, + rpm: int, + time: int, + ): + """ + 处理Biomek的振荡操作。 + """ + oscillation_params = { + 'Device': 'OrbitalShaker0', + 'Parameters': (str(rpm), '2', str(time), 'CounterClockwise'), + 'Command': 'Timed Shake' + } + self.temp_protocol["steps"].append(oscillation_params) + + return + + +if __name__ == "__main__": + + print("=== Biomek完整流程测试 ===") + print("包含: 仪器设置 + 完整实验步骤") + + # 完整的步骤信息(从biomek.py复制) + steps_info = ''' + { + "steps": [ + { + "step_number": 1, + "operation": "transfer", + "description": "转移PCR产物或酶促反应液至0.5ml 96孔板中", + "parameters": { + "source": "P1", + "target": "P11", + "tip_rack": "BC230", + "volume": 50 + } + }, + { + "step_number": 2, + "operation": "transfer", + "description": "加入2倍体积的Bind Beads BC至产物中", + "parameters": { + "source": "P2", + "target": "P11", + "tip_rack": "BC230", + "volume": 100 + } + }, + { + "step_number": 3, + "operation": "oscillation", + "description": "振荡混匀300秒", + "parameters": { + "rpm": 800, + "time": 300 + } + }, + { + "step_number": 4, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "P11", + "target": "P12" + } + }, + { + "step_number": 5, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 6, + "operation": "transfer", + "description": "吸弃或倒除上清液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 150 + } + }, + { + "step_number": 7, + "operation": "transfer", + "description": "加入300-500μl 75%乙醇", + "parameters": { + "source": "P3", + "target": "P12", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 8, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P12", + "target": "Orbital1" + } + }, + { + "step_number": 9, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 10, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "Orbital1", + "target": "P12" + } + }, + { + "step_number": 11, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 12, + "operation": "transfer", + "description": "吸弃或倒弃废液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 13, + "operation": "transfer", + "description": "重复加入75%乙醇", + "parameters": { + "source": "P3", + "target": "P12", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 14, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P12", + "target": "Orbital1" + } + }, + { + "step_number": 15, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 16, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "Orbital1", + "target": "P12" + } + }, + { + "step_number": 17, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 18, + "operation": "transfer", + "description": "吸弃或倒弃废液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 19, + "operation": "move_labware", + "description": "正放96孔板,空气干燥15分钟", + "parameters": { + "source": "P12", + "target": "P13" + } + }, + { + "step_number": 20, + "operation": "incubation", + "description": "空气干燥15分钟", + "parameters": { + "time": 900 + } + }, + { + "step_number": 21, + "operation": "transfer", + "description": "加入30-50μl Elution Buffer", + "parameters": { + "source": "P4", + "target": "P13", + "tip_rack": "BC230", + "volume": 40 + } + }, + { + "step_number": 22, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P13", + "target": "Orbital1" + } + }, + { + "step_number": 23, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 24, + "operation": "move_labware", + "description": "室温静置3分钟", + "parameters": { + "source": "Orbital1", + "target": "P13" + } + }, + { + "step_number": 25, + "operation": "incubation", + "description": "室温静置3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 26, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附2分钟", + "parameters": { + "source": "P13", + "target": "P12" + } + }, + { + "step_number": 27, + "operation": "incubation", + "description": "吸附2分钟", + "parameters": { + "time": 120 + } + }, + { + "step_number": 28, + "operation": "transfer", + "description": "将DNA转移至新的板中", + "parameters": { + "source": "P12", + "target": "P14", + "tip_rack": "BC230", + "volume": 40 + } + } + ] + } +''' + # 完整的labware配置信息 + labware_with_liquid = ''' + [ + { + "id": "Tip Rack BC230 TL1", + "parent": "deck", + "slot_on_deck": "TL1", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL2", + "parent": "deck", + "slot_on_deck": "TL2", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL3", + "parent": "deck", + "slot_on_deck": "TL3", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL4", + "parent": "deck", + "slot_on_deck": "TL4", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL5", + "parent": "deck", + "slot_on_deck": "TL5", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P5", + "parent": "deck", + "slot_on_deck": "P5", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P6", + "parent": "deck", + "slot_on_deck": "P6", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P15", + "parent": "deck", + "slot_on_deck": "P15", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P16", + "parent": "deck", + "slot_on_deck": "P16", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "stock plate on P1", + "parent": "deck", + "slot_on_deck": "P1", + "class_name": "AgilentReservoir", + "liquid_type": ["PCR product"], + "liquid_volume": [5000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P2", + "parent": "deck", + "slot_on_deck": "P2", + "class_name": "AgilentReservoir", + "liquid_type": ["bind beads"], + "liquid_volume": [100000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P3", + "parent": "deck", + "slot_on_deck": "P3", + "class_name": "AgilentReservoir", + "liquid_type": ["75% ethanol"], + "liquid_volume": [100000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P4", + "parent": "deck", + "slot_on_deck": "P4", + "class_name": "AgilentReservoir", + "liquid_type": ["Elution Buffer"], + "liquid_volume": [5000], + "liquid_input_wells": ["A1"] + }, + { + "id": "working plate on P11", + "parent": "deck", + "slot_on_deck": "P11", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "working plate on P13", + "parent": "deck", + "slot_on_deck": "P13", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "working plate on P14", + "parent": "deck", + "slot_on_deck": "P14", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "waste on P22", + "parent": "deck", + "slot_on_deck": "P22", + "class_name": "AgilentReservoir", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "oscillation", + "parent": "deck", + "slot_on_deck": "Orbital1", + "class_name": "Orbital", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + } + ] + ''' + + # 创建handler实例 + handler = LiquidHandlerBiomek() + + # 创建协议 + protocol = handler.create_protocol( + protocol_name="DNA纯化完整流程", + protocol_description="使用磁珠进行DNA纯化的完整自动化流程", + protocol_version="1.0", + protocol_author="Biomek系统", + protocol_date="2024-01-01", + protocol_type="DNA_purification" + ) + + print("\n=== 第一步:设置所有仪器 ===") + # 解析labware配置 + labwares = json.loads(labware_with_liquid) + + # 设置所有仪器 + instrument_count = 0 + for labware in labwares: + print(f"设置仪器: {labware['id']} ({labware['class_name']}) 在位置 {labware['slot_on_deck']}") + handler.instrument_setup_biomek( + id=labware['id'], + parent=labware['parent'], + slot_on_deck=labware['slot_on_deck'], + class_name=labware['class_name'], + liquid_type=labware['liquid_type'], + liquid_volume=labware['liquid_volume'], + liquid_input_wells=labware['liquid_input_wells'] + ) + instrument_count += 1 + + print(f"总共设置了 {instrument_count} 个仪器位置") + + print("\n=== 第二步:执行实验步骤 ===") + # 解析步骤信息 + input_steps = json.loads(steps_info) + + # 执行所有步骤 + step_count = 0 + for step in input_steps['steps']: + operation = step['operation'] + parameters = step['parameters'] + description = step['description'] + + print(f"步骤 {step['step_number']}: {description}") + + if operation == 'transfer': + handler.transfer_biomek( + source=parameters['source'], + target=parameters['target'], + volume=parameters['volume'], + tip_rack=parameters['tip_rack'], + aspirate_techniques='MC P300 high', + dispense_techniques='MC P300 high' + ) + elif operation == 'move_labware': + handler.move_biomek( + source=parameters['source'], + target=parameters['target'] + ) + elif operation == 'oscillation': + handler.oscillation_biomek( + rpm=parameters['rpm'], + time=parameters['time'] + ) + elif operation == 'incubation': + handler.incubation_biomek( + time=parameters['time'] + ) + + step_count += 1 + + print(f"总共执行了 {step_count} 个步骤") + + print("\n=== 第三步:保存完整协议 ===") + # 获取脚本目录 + script_dir = pathlib.Path(__file__).parent + + # 保存完整协议 + complete_output_path = script_dir / "complete_biomek_protocol_0608.json" + with open(complete_output_path, 'w', encoding='utf-8') as f: + json.dump(handler.temp_protocol, f, indent=4, ensure_ascii=False) + + print(f"完整协议已保存到: {complete_output_path}") + + print("\n=== 测试完成 ===") + print("完整的DNA纯化流程已成功转换为Biomek格式!") diff --git a/unilabos/devices/liquid_handling/biomek.txt b/unilabos/devices/liquid_handling/biomek.txt new file mode 100644 index 00000000..2d830a6d --- /dev/null +++ b/unilabos/devices/liquid_handling/biomek.txt @@ -0,0 +1,642 @@ + + 当前方法 Method0530 包含 36 个步骤 + + 步骤 0: + Bitmap: OStepUI.ocx,START + Let: {} + Weak: {} + Prompt: {} + + 步骤 1: + BarcodeInput?: False + DeckItems: {'P1': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\Matrix96_750uL', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0), 'Nominal': False, 'EvalLiquids': ('Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water')}], 'P10': [{'Tips': {'Class': 'TipClasses\\T50F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T50F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC50F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P8': [], 'P9': [{'Tips': {'Class': 'TipClasses\\T50F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T50F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC50F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P11': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\BCDeep96Round', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 'Nominal': False, 'EvalLiquids': ('Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water')}], 'P12': [], 'P13': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\BCDeep96Round', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0), 'Nominal': False, 'EvalLiquids': ('Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water')}], 'P14': [], 'P15': [], 'P16': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P17': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P18': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P19': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P20': [], 'P2': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\Matrix96_750uL', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0), 'Nominal': False, 'EvalLiquids': ('Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water')}], 'P21': [], 'P22': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\AgilentReservoir', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (0.0,), 'Nominal': False, 'EvalLiquids': ('Water',)}], 'P23': [], 'P24': [], 'P25': [], 'P26': [], 'P27': [], 'P28': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P29': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'P30': [], 'P3': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\AgilentReservoir', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (300000.0,), 'Nominal': False, 'EvalLiquids': ('Water',)}], 'P4': [{'Properties': {'Name': '', 'Device': '', 'liquidtype': 'Water', 'BarCode': '', 'SenseEveryTime': False}, 'Known': True, 'Class': 'LabwareClasses\\Matrix96_750uL', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}, 'EvalAmounts': (500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0, 500.0), 'Nominal': False, 'EvalLiquids': ('Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water', 'Water')}], 'P5': [], 'P6': [], 'P7': [], 'TL1': [{'Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC230', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'TL2': [{'Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC230', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'TL3': [{'Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T230', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC230', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'TL4': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'TL5': [{'Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'RT_Tips': {'Class': 'TipClasses\\T1025F', 'Contents': [], '_RT_Contents': [], 'Used': False, 'RT_Used': False, 'Dirty': False, 'RT_Dirty': False, 'MaxVolumeUsed': 0.0, 'RT_MaxVolumeUsed': 0.0}, 'Properties': {}, 'Known': False, 'Class': 'LabwareClasses\\BC1025F', 'DataSets': {'Volume': {}}, 'RuntimeDataSets': {'Volume': {}}}], 'TR1': [], 'WS1': 'Water'} + Layout: Multichannel + Pause?: True + PodSetup: {'LeftHasTips': False, 'LeftTipType': '', 'RightHasTips': False, 'RightTipType': ''} + SplitterPosition: 206 + VerifyPodSetup?: True + + 步骤 2: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P1', 'Height': -2.0, 'Volume': '50', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'Matrix96_750uL', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P11', 'Height': -2.0, 'Volume': '50', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 50 µL from P1 to P11 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC230 + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 3: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P2', 'Height': -2.0, 'Volume': '100', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'Matrix96_750uL', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P11', 'Height': -2.0, 'Volume': '100', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 100 µL from P2 to P11 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC230 + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 4: + Pod: Pod1 + GripSide: A1 near + Source: P11 + Target: Orbital1 + LeaveBottomLabware: False + + 步骤 5: + Device: + Parameters: () + Command: + + 步骤 6: + Device: + Parameters: () + Command: + + 步骤 7: + Pod: Pod1 + GripSide: A1 near + Source: Orbital1 + Target: P11 + LeaveBottomLabware: False + + 步骤 8: + Pod: Pod1 + GripSide: A1 near + Source: P11 + Target: P12 + LeaveBottomLabware: False + + 步骤 9: + Message: Paused + Location: the whole system + Time: 180 + Mode: TimedResource + + 步骤 10: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '150', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P22', 'Height': -2.0, 'Volume': '150', 'liquidtype': 'Tip Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 150 µL from P12 to P22 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC230 + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 11: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P3', 'Height': -2.0, 'Volume': '400', 'liquidtype': 'Well Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P3 to P12 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 12: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P3', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P3 to P12 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 13: + Pod: Pod1 + GripSide: A1 near + Source: P12 + Target: Orbital1 + LeaveBottomLabware: False + + 步骤 14: + Device: + Parameters: () + Command: + + 步骤 15: + Pod: Pod1 + GripSide: A1 near + Source: Orbital1 + Target: P12 + LeaveBottomLabware: False + + 步骤 16: + Message: Paused + Location: the whole system + Time: 180 + Mode: TimedResource + + 步骤 17: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P22', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P12 to P22 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 18: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P22', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P12 to P22 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 19: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P3', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P3 to P12 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 20: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P3', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P3 to P12 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 21: + Pod: Pod1 + GripSide: A1 near + Source: P12 + Target: Orbital1 + LeaveBottomLabware: False + + 步骤 22: + Device: OrbitalShaker0 + Parameters: ('800', '3', '45', 'CounterClockwise', None) + Command: Timed Shake + + 步骤 23: + Pod: Pod1 + GripSide: A1 near + Source: Orbital1 + Target: P12 + LeaveBottomLabware: False + + 步骤 24: + Message: Paused + Location: the whole system + Time: 180 + Mode: TimedResource + + 步骤 25: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P22', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P12 to P22 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 26: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P22', 'Height': -2.0, 'Volume': '200', 'liquidtype': 'Tip Contents', 'LabwareClass': 'AgilentReservoir', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True,), 'Prototype': 'MC P300 High', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 200 µL from P12 to P22 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC1025F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 27: + Message: Paused + Location: the whole system + Time: 900 + Mode: TimedResource + + 步骤 28: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P4', 'Height': -2.0, 'Volume': '40', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'Matrix96_750uL', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P12', 'Height': -2.0, 'Volume': '40', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 40 µL from P4 to P12 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC50F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 29: + Pod: Pod1 + GripSide: A1 near + Source: P12 + Target: Orbital1 + LeaveBottomLabware: False + + 步骤 30: + Device: OrbitalShaker0 + Parameters: ('800', '3', '60', 'CounterClockwise', None) + Command: Timed Shake + + 步骤 31: + Message: Paused + Location: the whole system + Time: 180 + Mode: TimedResource + + 步骤 32: + Pod: Pod1 + GripSide: A1 near + Source: Orbital1 + Target: P12 + LeaveBottomLabware: False + + 步骤 33: + Message: Paused + Location: the whole system + Time: 120 + Mode: TimedResource + + 步骤 34: + Span8: False + Pod: Pod1 + Wash: False + items: [{'Position': 'P12', 'Height': -2.0, 'Volume': '40', 'liquidtype': 'Well Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Aspirate', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': True, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}, {'Position': 'P13', 'Height': -2.0, 'Volume': '40', 'liquidtype': 'Tip Contents', 'WellsX': 12, 'LabwareClass': 'BCDeep96Round', 'AutoSelectPrototype': True, 'ColsFirst': True, 'CustomHeight': False, 'DataSetPattern': False, 'HeightFrom': 0, 'LocalPattern': True, 'Operation': 'Dispense', 'OverrideHeight': False, 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), 'Prototype': 'MC', 'ReferencedPattern': '', 'RowsFirst': False, 'SectionExpression': '', 'SelectionInfo': (1,), 'SetMark': True, 'Source': False, 'StartAtMark': False, 'StartAtSelection': True, 'UseExpression': False}] + Dynamic?: True + AutoSelectActiveWashTechnique: False + ActiveWashTechnique: + ChangeTipsBetweenDests: True + ChangeTipsBetweenSources: False + DefaultCaption: Transfer 40 µL from P12 to P13 + UseExpression: False + LeaveTipsOn: False + MandrelExpression: + Repeats: 1 + RepeatsByVolume: False + Replicates: 1 + ShowTipHandlingDetails: True + ShowTransferDetails: True + Solvent: Water + Span8Wash: False + Span8WashVolume: 2 + Span8WasteVolume: 1 + SplitVolume: False + SplitVolumeCleaning: False + Stop: Destinations + TipLocation: BC50F + UseCurrentTips: False + UseDisposableTips: False + UseFixedTips: False + UseJIT: True + UseMandrelSelection: True + UseProbes: (True, True, True, True, True, True, True, True) + WashCycles: 4 + WashVolume: 110% + Wizard: False + + 步骤 35: + Type: + Bitmap: OStepUI.ocx,FINISH + cleardeck: True + cleardevices: True + cleanuppods: True + PodsToMaxZ: True + ClearGlobals: True + ParkPods: True + Authent: False + Collapsed: True + ConnectionString: + Password: + Path: + Report: False + Server: + TableName: + UserName: + Catalog: diff --git a/unilabos/devices/liquid_handling/biomek_temporary_protocol.json b/unilabos/devices/liquid_handling/biomek_temporary_protocol.json new file mode 100644 index 00000000..129c3ba2 --- /dev/null +++ b/unilabos/devices/liquid_handling/biomek_temporary_protocol.json @@ -0,0 +1,2697 @@ +{ + "meta": {}, + "labwares": [], + "steps": [ + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + }, + { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + ] +} \ No newline at end of file diff --git a/unilabos/devices/liquid_handling/biomek_test.py b/unilabos/devices/liquid_handling/biomek_test.py new file mode 100644 index 00000000..af6339a1 --- /dev/null +++ b/unilabos/devices/liquid_handling/biomek_test.py @@ -0,0 +1,1006 @@ +# import requests +from typing import List, Sequence, Optional, Union, Literal +# from geometry_msgs.msg import Point +# from unilabos_msgs.msg import Resource +# from pylabrobot.resources import ( +# Resource, +# TipRack, +# Container, +# Coordinate, +# Well +# ) +# from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker # type: ignore +# from .liquid_handler_abstract import LiquidHandlerAbstract + +import json +import pathlib +from typing import Sequence, Optional, List, Union, Literal +import copy + + + +#class LiquidHandlerBiomek(LiquidHandlerAbstract): + + +class LiquidHandlerBiomek: + """ + Biomek液体处理器的实现类,继承自LiquidHandlerAbstract。 + 该类用于处理Biomek液体处理器的特定操作。 + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._status = "Idle" # 初始状态为 Idle + self._success = False # 初始成功状态为 False + self._status_queue = kwargs.get("status_queue", None) # 状态队列 + self.temp_protocol = {} + self.py32_path = "/opt/py32" # Biomek的Python 3.2路径 + + # 预定义的仪器分类 + self.tip_racks = [ + "BC230", "BC1025F", "BC50", "TipRack200", "TipRack1000", + "tip", "tips", "Tip", "Tips" + ] + + self.reservoirs = [ + "AgilentReservoir", "nest_12_reservoir_15ml", "nest_1_reservoir_195ml", + "reservoir", "Reservoir", "waste", "Waste" + ] + + self.plates_96 = [ + "BCDeep96Round", "Matrix96_750uL", "NEST 2ml Deep Well Plate", "nest_96_wellplate_100ul_pcr_full_skirt", + "nest_96_wellplate_200ul_flat", "Matrix96", "96", "plate", "Plate" + ] + + self.aspirate_techniques = { + 'MC P300 high':{ + 'Position': 'P1', + 'Height': -2.0, + 'Volume': '50', + 'liquidtype': 'Well Contents', + 'WellsX': 12, + 'LabwareClass': 'Matrix96_750uL', + 'AutoSelectPrototype': True, + 'ColsFirst': True, + 'CustomHeight': False, + 'DataSetPattern': False, + 'HeightFrom': 0, + 'LocalPattern': True, + 'Operation': 'Aspirate', + 'OverrideHeight': False, + 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), + 'Prototype': 'MC P300 High', + 'ReferencedPattern': '', + 'RowsFirst': False, + 'SectionExpression': '', + 'SelectionInfo': (1,), + 'SetMark': True, + 'Source': True, + 'StartAtMark': False, + 'StartAtSelection': True, + 'UseExpression': False}, + } + + self.dispense_techniques = { + 'MC P300 high':{ + 'Position': 'P11', + 'Height': -2.0, + 'Volume': '50', + 'liquidtype': 'Tip Contents', + 'WellsX': 12, + 'LabwareClass': 'Matrix96_750uL', + 'AutoSelectPrototype': True, + 'ColsFirst': True, + 'CustomHeight': False, + 'DataSetPattern': False, + 'HeightFrom': 0, + 'LocalPattern': True, + 'Operation': 'Dispense', + 'OverrideHeight': False, + 'Pattern': (True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True), + 'Prototype': 'MC P300 High', + 'ReferencedPattern': '', + 'RowsFirst': False, + 'SectionExpression': '', + 'SelectionInfo': (1,), + 'SetMark': True, + 'Source': False, + 'StartAtMark': False, + 'StartAtSelection': True, + 'UseExpression': False} + } + + + def _get_instrument_type(self, class_name: str) -> str: + """ + 根据class_name判断仪器类型 + + Returns: + str: "tip_rack", "reservoir", "plate_96", 或 "unknown" + """ + # 检查是否是枪头架 + for tip_name in self.tip_racks: + if tip_name in class_name: + return "tip_rack" + + # 检查是否是储液槽 + for reservoir_name in self.reservoirs: + if reservoir_name in class_name: + return "reservoir" + + # 检查是否是96孔板 + for plate_name in self.plates_96: + if plate_name in class_name: + return "plate_96" + + return "unknown" + + def create_protocol( + self, + protocol_name: str, + protocol_description: str, + protocol_version: str, + protocol_author: str, + protocol_date: str, + protocol_type: str, + none_keys: List[str] = [], + ): + """ + 创建一个新的协议。 + + Args: + protocol_name (str): 协议名称 + protocol_description (str): 协议描述 + protocol_version (str): 协议版本 + protocol_author (str): 协议作者 + protocol_date (str): 协议日期 + protocol_type (str): 协议类型 + none_keys (List[str]): 需要设置为None的键列表 + + Returns: + dict: 创建的协议字典 + """ + self.temp_protocol = { + "meta": { + "name": protocol_name, + "description": protocol_description, + "version": protocol_version, + "author": protocol_author, + "date": protocol_date, + "type": protocol_type, + }, + "labwares": {}, # 改为字典格式以匹配DeckItems + "steps": [], + } + return self.temp_protocol + +# def run_protocol(self): +# """ +# 执行创建的实验流程。 +# 工作站的完整执行流程是, +# 从 create_protocol 开始,创建新的 method, +# 随后执行 transfer_liquid 等操作向实验流程添加步骤, +# 最后 run_protocol 执行整个方法。 + +# Returns: +# dict: 执行结果 +# """ +# #use popen or subprocess to create py32 process and communicate send the temp protocol to it +# if not self.temp_protocol: +# raise ValueError("No protocol created. Please create a protocol first.") + +# # 模拟执行协议 +# self._status = "Running" +# self._success = True +# # 在这里可以添加实际执行协议的逻辑 + +# response = requests.post("localhost:5000/api/protocols", json=self.temp_protocol) + +# def create_resource( +# self, +# resource_tracker: DeviceNodeResourceTracker, +# resources: list[Resource], +# bind_parent_id: str, +# bind_location: dict[str, float], +# liquid_input_slot: list[int], +# liquid_type: list[str], +# liquid_volume: list[int], +# slot_on_deck: int, +# res_id, +# class_name, +# bind_locations, +# parent +# ): +# """ +# 创建一个新的资源。 + +# Args: +# device_id (str): 设备ID +# res_id (str): 资源ID +# class_name (str): 资源类名 +# parent (str): 父级ID +# bind_locations (Point): 绑定位置 +# liquid_input_slot (list[int]): 液体输入槽列表 +# liquid_type (list[str]): 液体类型列表 +# liquid_volume (list[int]): 液体体积列表 +# slot_on_deck (int): 甲板上的槽位 + +# Returns: +# dict: 创建的资源字典 +# """ +# # TODO:需要对好接口,下面这个是临时的 +# resource = { +# "id": res_id, +# "class": class_name, +# "parent": parent, +# "bind_locations": bind_locations.to_dict(), +# "liquid_input_slot": liquid_input_slot, +# "liquid_type": liquid_type, +# "liquid_volume": liquid_volume, +# "slot_on_deck": slot_on_deck, +# } +# self.temp_protocol["labwares"].append(resource) +# return resource + def instrument_setup_biomek( + self, + id: str, + parent: str, + slot_on_deck: str, + class_name: str, + liquid_type: list[str], + liquid_volume: list[int], + liquid_input_wells: list[str], + ): + """ + 设置Biomek仪器的参数配置,按照DeckItems格式 + + 根据不同的仪器类型(容器、tip rack等)设置相应的参数结构 + 位置作为键,配置列表作为值 + """ + + # 判断仪器类型 + instrument_type = self._get_instrument_type(class_name) + + config = None # 初始化为None + + if instrument_type == "reservoir": + # 储液槽类型配置 + config = { + "Properties": { + "Name": id, # 使用id作为名称 + "Device": "", + "liquidtype": liquid_type[0] if liquid_type else "Water", + "BarCode": "", + "SenseEveryTime": False + }, + "Known": True, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}}, + "EvalAmounts": (float(liquid_volume[0]),) if liquid_volume else (0,), + "Nominal": False, + "EvalLiquids": (liquid_type[0],) if liquid_type else ("Water",) + } + + elif instrument_type == "plate_96": + # 96孔板类型配置 + volume_per_well = float(liquid_volume[0]) if liquid_volume else 0 + liquid_per_well = liquid_type[0] if liquid_type else "Water" + + config = { + "Properties": { + "Name": id, # 使用id作为名称 + "Device": "", + "liquidtype": liquid_per_well, + "BarCode": "", + "SenseEveryTime": False + }, + "Known": True, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}}, + "EvalAmounts": tuple([volume_per_well] * 96), + "Nominal": False, + "EvalLiquids": tuple([liquid_per_well] * 96) + } + + elif instrument_type == "tip_rack": + # 枪头架类型配置 + tip_config = { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": False, + "RT_Used": False, + "Dirty": False, + "RT_Dirty": False, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + } + + config = { + "Tips": tip_config, + "RT_Tips": tip_config.copy(), + "Properties": {}, + "Known": False, + "Class": f"LabwareClasses\\{class_name}", + "DataSets": {"Volume": {}}, + "RuntimeDataSets": {"Volume": {}} + } + + # 按照DeckItems格式存储:位置作为键,配置列表作为值 + if config is not None: + self.temp_protocol["labwares"][slot_on_deck] = [config] + else: + # 空位置 + self.temp_protocol["labwares"][slot_on_deck] = [] + + return + + def transfer_biomek( + self, + source: str, + target: str, + tip_rack: str, + volume: float, + aspirate_techniques: str, + dispense_techniques: str, + ): + """ + 处理Biomek的液体转移操作。 + + """ + items = [] + + asp_params = copy.deepcopy(self.aspirate_techniques[aspirate_techniques]) + dis_params = copy.deepcopy(self.dispense_techniques[dispense_techniques]) + + + asp_params['Position'] = source + dis_params['Position'] = target + asp_params['Volume'] = str(volume) + dis_params['Volume'] = str(volume) + + items.append(asp_params) + items.append(dis_params) + + transfer_params = { + "Span8": False, + "Pod": "Pod1", + "items": [], + "Wash": False, + "Dynamic?": True, + "AutoSelectActiveWashTechnique": False, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": True, + "ChangeTipsBetweenSources": False, + "DefaultCaption": "", + "UseExpression": False, + "LeaveTipsOn": False, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": False, + "Replicates": "1", + "ShowTipHandlingDetails": False, + "ShowTransferDetails": True, + "Solvent": "Water", + "Span8Wash": False, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": False, + "SplitVolumeCleaning": False, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": False, + "UseDisposableTips": False, + "UseFixedTips": False, + "UseJIT": True, + "UseMandrelSelection": True, + "UseProbes": [True, True, True, True, True, True, True, True], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": False + } + transfer_params["items"] = items + transfer_params["Solvent"] = 'Water' + transfer_params["TipLocation"] = tip_rack + tmp={'transfer': transfer_params} + + self.temp_protocol["steps"].append(tmp) + + + return + + def move_biomek( + self, + source: str, + target: str, + ): + """ + 处理Biomek移动板子的操作。 + + """ + + move_params = { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": source, + "Target": target, + "LeaveBottomLabware": False, + } + tmp={'move': move_params} + self.temp_protocol["steps"].append(tmp) + + return + + def incubation_biomek( + self, + time: int, + ): + """ + 处理Biomek的孵育操作。 + """ + incubation_params = { + "Message": "Paused", + "Location": "the whole system", + "Time": time, + "Mode": "TimedResource" + } + tmp={'incubation': incubation_params} + self.temp_protocol["steps"].append(tmp) + + return + + def oscillation_biomek( + self, + rpm: int, + time: int, + ): + """ + 处理Biomek的振荡操作。 + """ + oscillation_params = { + 'Device': 'OrbitalShaker0', + 'Parameters': (str(rpm), '2', str(time), 'CounterClockwise'), + 'Command': 'Timed Shake' + } + tmp={'oscillation': oscillation_params} + self.temp_protocol["steps"].append(tmp) + + return + + + +if __name__ == "__main__": + + print("=== Biomek完整流程测试 ===") + print("包含: 仪器设置 + 完整实验步骤") + + # 完整的步骤信息(从biomek.py复制) + steps_info = ''' + { + "steps": [ + { + "step_number": 1, + "operation": "transfer", + "description": "转移PCR产物或酶促反应液至0.5ml 96孔板中", + "parameters": { + "source": "P1", + "target": "P11", + "tip_rack": "BC230", + "volume": 50 + } + }, + { + "step_number": 2, + "operation": "transfer", + "description": "加入2倍体积的Bind Beads BC至产物中", + "parameters": { + "source": "P2", + "target": "P11", + "tip_rack": "BC230", + "volume": 100 + } + }, + { + "step_number": 3, + "operation": "oscillation", + "description": "振荡混匀300秒", + "parameters": { + "rpm": 800, + "time": 300 + } + }, + { + "step_number": 4, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "P11", + "target": "P12" + } + }, + { + "step_number": 5, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 6, + "operation": "transfer", + "description": "吸弃或倒除上清液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 150 + } + }, + { + "step_number": 7, + "operation": "transfer", + "description": "加入300-500μl 75%乙醇", + "parameters": { + "source": "P3", + "target": "P12", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 8, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P12", + "target": "Orbital1" + } + }, + { + "step_number": 9, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 10, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "Orbital1", + "target": "P12" + } + }, + { + "step_number": 11, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 12, + "operation": "transfer", + "description": "吸弃或倒弃废液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 13, + "operation": "transfer", + "description": "重复加入75%乙醇", + "parameters": { + "source": "P3", + "target": "P12", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 14, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P12", + "target": "Orbital1" + } + }, + { + "step_number": 15, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 16, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附3分钟", + "parameters": { + "source": "Orbital1", + "target": "P12" + } + }, + { + "step_number": 17, + "operation": "incubation", + "description": "吸附3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 18, + "operation": "transfer", + "description": "吸弃或倒弃废液", + "parameters": { + "source": "P12", + "target": "P22", + "tip_rack": "BC230", + "volume": 400 + } + }, + { + "step_number": 19, + "operation": "move_labware", + "description": "正放96孔板,空气干燥15分钟", + "parameters": { + "source": "P12", + "target": "P13" + } + }, + { + "step_number": 20, + "operation": "incubation", + "description": "空气干燥15分钟", + "parameters": { + "time": 900 + } + }, + { + "step_number": 21, + "operation": "transfer", + "description": "加入30-50μl Elution Buffer", + "parameters": { + "source": "P4", + "target": "P13", + "tip_rack": "BC230", + "volume": 40 + } + }, + { + "step_number": 22, + "operation": "move_labware", + "description": "移动至振荡器进行振荡混匀", + "parameters": { + "source": "P13", + "target": "Orbital1" + } + }, + { + "step_number": 23, + "operation": "oscillation", + "description": "振荡混匀60秒", + "parameters": { + "rpm": 800, + "time": 60 + } + }, + { + "step_number": 24, + "operation": "move_labware", + "description": "室温静置3分钟", + "parameters": { + "source": "Orbital1", + "target": "P13" + } + }, + { + "step_number": 25, + "operation": "incubation", + "description": "室温静置3分钟", + "parameters": { + "time": 180 + } + }, + { + "step_number": 26, + "operation": "move_labware", + "description": "转移至96孔磁力架上吸附2分钟", + "parameters": { + "source": "P13", + "target": "P12" + } + }, + { + "step_number": 27, + "operation": "incubation", + "description": "吸附2分钟", + "parameters": { + "time": 120 + } + }, + { + "step_number": 28, + "operation": "transfer", + "description": "将DNA转移至新的板中", + "parameters": { + "source": "P12", + "target": "P14", + "tip_rack": "BC230", + "volume": 40 + } + } + ] + } +''' + # 完整的labware配置信息 + labware_with_liquid = ''' + [ + { + "id": "Tip Rack BC230 TL1", + "parent": "deck", + "slot_on_deck": "TL1", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL2", + "parent": "deck", + "slot_on_deck": "TL2", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL3", + "parent": "deck", + "slot_on_deck": "TL3", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL4", + "parent": "deck", + "slot_on_deck": "TL4", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 TL5", + "parent": "deck", + "slot_on_deck": "TL5", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P5", + "parent": "deck", + "slot_on_deck": "P5", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P6", + "parent": "deck", + "slot_on_deck": "P6", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P15", + "parent": "deck", + "slot_on_deck": "P15", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "Tip Rack BC230 P16", + "parent": "deck", + "slot_on_deck": "P16", + "class_name": "BC230", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "stock plate on P1", + "parent": "deck", + "slot_on_deck": "P1", + "class_name": "AgilentReservoir", + "liquid_type": ["PCR product"], + "liquid_volume": [5000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P2", + "parent": "deck", + "slot_on_deck": "P2", + "class_name": "AgilentReservoir", + "liquid_type": ["bind beads"], + "liquid_volume": [100000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P3", + "parent": "deck", + "slot_on_deck": "P3", + "class_name": "AgilentReservoir", + "liquid_type": ["75% ethanol"], + "liquid_volume": [100000], + "liquid_input_wells": ["A1"] + }, + { + "id": "stock plate on P4", + "parent": "deck", + "slot_on_deck": "P4", + "class_name": "AgilentReservoir", + "liquid_type": ["Elution Buffer"], + "liquid_volume": [5000], + "liquid_input_wells": ["A1"] + }, + { + "id": "working plate on P11", + "parent": "deck", + "slot_on_deck": "P11", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "working plate on P13", + "parent": "deck", + "slot_on_deck": "P13", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "working plate on P14", + "parent": "deck", + "slot_on_deck": "P14", + "class_name": "BCDeep96Round", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "waste on P22", + "parent": "deck", + "slot_on_deck": "P22", + "class_name": "AgilentReservoir", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + }, + { + "id": "oscillation", + "parent": "deck", + "slot_on_deck": "Orbital1", + "class_name": "Orbital", + "liquid_type": [], + "liquid_volume": [], + "liquid_input_wells": [] + } + ] + ''' + + # 创建handler实例 + handler = LiquidHandlerBiomek() + + # 创建协议 + protocol = handler.create_protocol( + protocol_name="DNA纯化完整流程", + protocol_description="使用磁珠进行DNA纯化的完整自动化流程", + protocol_version="1.0", + protocol_author="Biomek系统", + protocol_date="2024-01-01", + protocol_type="DNA_purification" + ) + + print("\n=== 第一步:设置所有仪器 ===") + # 解析labware配置 + labwares = json.loads(labware_with_liquid) + + # 设置所有仪器 + instrument_count = 0 + for labware in labwares: + print(f"设置仪器: {labware['id']} ({labware['class_name']}) 在位置 {labware['slot_on_deck']}") + handler.instrument_setup_biomek( + id=labware['id'], + parent=labware['parent'], + slot_on_deck=labware['slot_on_deck'], + class_name=labware['class_name'], + liquid_type=labware['liquid_type'], + liquid_volume=labware['liquid_volume'], + liquid_input_wells=labware['liquid_input_wells'] + ) + instrument_count += 1 + + print(f"总共设置了 {instrument_count} 个仪器位置") + + print("\n=== 第二步:执行实验步骤 ===") + # 解析步骤信息 + input_steps = json.loads(steps_info) + + # 执行所有步骤 + step_count = 0 + for step in input_steps['steps']: + operation = step['operation'] + parameters = step['parameters'] + description = step['description'] + + print(f"步骤 {step['step_number']}: {description}") + + if operation == 'transfer': + + handler.transfer_biomek( + source=parameters['source'], + target=parameters['target'], + volume=parameters['volume'], + tip_rack=parameters['tip_rack'], + aspirate_techniques='MC P300 high', + dispense_techniques='MC P300 high' + ) + elif operation == 'move_labware': + handler.move_biomek( + source=parameters['source'], + target=parameters['target'] + ) + elif operation == 'oscillation': + handler.oscillation_biomek( + rpm=parameters['rpm'], + time=parameters['time'] + ) + elif operation == 'incubation': + handler.incubation_biomek( + time=parameters['time'] + ) + + step_count += 1 + + print(f"总共执行了 {step_count} 个步骤") + + print("\n=== 第三步:保存完整协议 ===") + # 获取脚本目录 + script_dir = pathlib.Path(__file__).parent + + # 保存完整协议 + complete_output_path = script_dir / "complete_biomek_protocol_0608.json" + with open(complete_output_path, 'w', encoding='utf-8') as f: + json.dump(handler.temp_protocol, f, indent=4, ensure_ascii=False) + + print(f"完整协议已保存到: {complete_output_path}") + + print("\n=== 测试完成 ===") + print("完整的DNA纯化流程已成功转换为Biomek格式!") diff --git a/unilabos/devices/liquid_handling/complete_biomek_protocol.json b/unilabos/devices/liquid_handling/complete_biomek_protocol.json new file mode 100644 index 00000000..2c0e95fd --- /dev/null +++ b/unilabos/devices/liquid_handling/complete_biomek_protocol.json @@ -0,0 +1,3760 @@ +{ + "meta": { + "name": "DNA纯化完整流程", + "description": "使用磁珠进行DNA纯化的完整自动化流程", + "version": "1.0", + "author": "Biomek系统", + "date": "2024-01-01", + "type": "DNA_purification" + }, + "labwares": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on TL1", + "Position": "TL1" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on TL2", + "Position": "TL2" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on TL3", + "Position": "TL3" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on TL4", + "Position": "TL4" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on TL5", + "Position": "TL5" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on P5", + "Position": "P5" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on P6", + "Position": "P6" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on P15", + "Position": "P15" + }, + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "Name": "Tip Rack BC230 on P16", + "Position": "P16" + }, + { + "Properties": { + "Name": "stock plate on P1", + "Device": "", + "liquidtype": "master_mix", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\nest_12_reservoir_15ml", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 10000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "master_mix" + ], + "Name": "stock plate on P1", + "Position": "P1" + }, + { + "Properties": { + "Name": "stock plate on P2", + "Device": "", + "liquidtype": "bind beads", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\nest_12_reservoir_15ml", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 10000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "bind beads" + ], + "Name": "stock plate on P2", + "Position": "P2" + }, + { + "Properties": { + "Name": "stock plate on P3", + "Device": "", + "liquidtype": "ethyl alcohol", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\nest_12_reservoir_15ml", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 10000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "ethyl alcohol" + ], + "Name": "stock plate on P3", + "Position": "P3" + }, + { + "Properties": { + "Name": "elution buffer on P4", + "Device": "", + "liquidtype": "elution buffer", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\nest_12_reservoir_15ml", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 5000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "elution buffer" + ], + "Name": "elution buffer on P4", + "Position": "P4" + }, + { + "Properties": { + "Name": "working plate on P11", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\NEST 2ml Deep Well Plate", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ], + "Name": "working plate on P11", + "Position": "P11" + }, + { + "Properties": { + "Name": "working plate on P13", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\NEST 2ml Deep Well Plate", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0, + 500.0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ], + "Name": "working plate on P13", + "Position": "P13" + }, + { + "Properties": { + "Name": "waste on P22", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\nest_1_reservoir_195ml", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0.0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water" + ], + "Name": "waste on P22", + "Position": "P22" + } + ], + "steps": [ + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P11", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "300", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P11", + "LeaveBottomLabware": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P11", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "45", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "45", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 900, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "60", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P13", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + } + ] +} \ No newline at end of file diff --git a/unilabos/devices/liquid_handling/complete_biomek_protocol_0608.json b/unilabos/devices/liquid_handling/complete_biomek_protocol_0608.json new file mode 100644 index 00000000..24b3d455 --- /dev/null +++ b/unilabos/devices/liquid_handling/complete_biomek_protocol_0608.json @@ -0,0 +1,4201 @@ +{ + "meta": { + "name": "DNA纯化完整流程", + "description": "使用磁珠进行DNA纯化的完整自动化流程", + "version": "1.0", + "author": "Biomek系统", + "date": "2024-01-01", + "type": "DNA_purification" + }, + "labwares": { + "TL1": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "TL2": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "TL3": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "TL4": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "TL5": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "P5": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "P6": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "P15": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "P16": [ + { + "Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "RT_Tips": { + "Class": "TipClasses\\T230", + "Contents": [], + "_RT_Contents": [], + "Used": false, + "RT_Used": false, + "Dirty": false, + "RT_Dirty": false, + "MaxVolumeUsed": 0.0, + "RT_MaxVolumeUsed": 0.0 + }, + "Properties": {}, + "Known": false, + "Class": "LabwareClasses\\BC230", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + } + } + ], + "P1": [ + { + "Properties": { + "Name": "stock plate on P1", + "Device": "", + "liquidtype": "PCR product", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\AgilentReservoir", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 5000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "PCR product" + ] + } + ], + "P2": [ + { + "Properties": { + "Name": "stock plate on P2", + "Device": "", + "liquidtype": "bind beads", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\AgilentReservoir", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 100000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "bind beads" + ] + } + ], + "P3": [ + { + "Properties": { + "Name": "stock plate on P3", + "Device": "", + "liquidtype": "75% ethanol", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\AgilentReservoir", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 100000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "75% ethanol" + ] + } + ], + "P4": [ + { + "Properties": { + "Name": "stock plate on P4", + "Device": "", + "liquidtype": "Elution Buffer", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\AgilentReservoir", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 5000.0 + ], + "Nominal": false, + "EvalLiquids": [ + "Elution Buffer" + ] + } + ], + "P11": [ + { + "Properties": { + "Name": "working plate on P11", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\BCDeep96Round", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ] + } + ], + "P12": [ + { + "Properties": { + "Name": "working plate on P12", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\BCDeep96Round", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ] + } + ], + "P13": [ + { + "Properties": { + "Name": "working plate on P13", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\BCDeep96Round", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ] + } + ], + "P14": [ + { + "Properties": { + "Name": "working plate on P14", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\BCDeep96Round", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water", + "Water" + ] + } + ], + "P22": [ + { + "Properties": { + "Name": "waste on P22", + "Device": "", + "liquidtype": "Water", + "BarCode": "", + "SenseEveryTime": false + }, + "Known": true, + "Class": "LabwareClasses\\AgilentReservoir", + "DataSets": { + "Volume": {} + }, + "RuntimeDataSets": { + "Volume": {} + }, + "EvalAmounts": [ + 0 + ], + "Nominal": false, + "EvalLiquids": [ + "Water" + ] + } + ], + "Orbital1": [] + }, + "steps": [ + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "300", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P11", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "60", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "60", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P12", + "Target": "P13", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 900, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P13", + "Target": "Orbital1", + "LeaveBottomLabware": false + } + }, + { + "oscillation": { + "Device": "OrbitalShaker0", + "Parameters": [ + "800", + "2", + "60", + "CounterClockwise" + ], + "Command": "Timed Shake" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "Orbital1", + "Target": "P13", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 180, + "Mode": "TimedResource" + } + }, + { + "move": { + "Pod": "Pod1", + "GripSide": "A1 near", + "Source": "P13", + "Target": "P12", + "LeaveBottomLabware": false + } + }, + { + "incubation": { + "Message": "Paused", + "Location": "the whole system", + "Time": 120, + "Mode": "TimedResource" + } + }, + { + "transfer": { + "Span8": false, + "Pod": "Pod1", + "items": [ + { + "Position": "P12", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Well Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Aspirate", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": true, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + }, + { + "Position": "P14", + "Height": -2.0, + "Volume": "40", + "liquidtype": "Tip Contents", + "WellsX": 12, + "LabwareClass": "Matrix96_750uL", + "AutoSelectPrototype": true, + "ColsFirst": true, + "CustomHeight": false, + "DataSetPattern": false, + "HeightFrom": 0, + "LocalPattern": true, + "Operation": "Dispense", + "OverrideHeight": false, + "Pattern": [ + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true, + true + ], + "Prototype": "MC P300 High", + "ReferencedPattern": "", + "RowsFirst": false, + "SectionExpression": "", + "SelectionInfo": [ + 1 + ], + "SetMark": true, + "Source": false, + "StartAtMark": false, + "StartAtSelection": true, + "UseExpression": false + } + ], + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": false, + "ShowTransferDetails": true, + "Solvent": "Water", + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC230", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [ + true, + true, + true, + true, + true, + true, + true, + true + ], + "WashCycles": "4", + "WashVolume": "110%", + "Wizard": false + } + } + ] +} \ No newline at end of file diff --git a/unilabos/devices/liquid_handling/converted protocol/sci-lucif-assay4_plr_background_tested.ipynb b/unilabos/devices/liquid_handling/converted protocol/sci-lucif-assay4_plr_background_tested.ipynb index daf47e23..f380fc68 100644 --- a/unilabos/devices/liquid_handling/converted protocol/sci-lucif-assay4_plr_background_tested.ipynb +++ b/unilabos/devices/liquid_handling/converted protocol/sci-lucif-assay4_plr_background_tested.ipynb @@ -2,18 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, "id": "6e581f88", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:44.429407Z", + "start_time": "2025-06-08T15:32:43.584559Z" + } + }, "source": [ "# NF‑κB Luciferase Reporter Assay – pylabrobot version\n", "\n", "import os\n", "import sys\n", - "os.getcwd()\n", - "sys.path.append('/Users/guangxinzhang/Documents/Deep Potential/pylabrobot/myfile')\n", - "\n", "from pylabrobot.resources import Coordinate\n", "from pylabrobot.liquid_handling.backends.chatterbox import LiquidHandlerChatterboxBackend\n", "from pylabrobot.visualizer.visualizer import Visualizer\n", @@ -24,33 +24,26 @@ " nest_1_reservoir_195ml,\n", " opentrons_96_tiprack_300ul\n", ")\n", - "from High_level_function.action_definition import DPLiquidHandler" - ] + "from pylabrobot.liquid_handling import LiquidHandler" + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", - "execution_count": 10, "id": "c3127d6e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Setting up the liquid handler.\n", - "Resource deck was assigned to the liquid handler.\n", - "Resource trash_container was assigned to the liquid handler.\n", - "Resource tiprack_1 was assigned to the liquid handler.\n", - "Resource tiprack_4 was assigned to the liquid handler.\n", - "Resource tiprack_8 was assigned to the liquid handler.\n", - "Resource tiprack_11 was assigned to the liquid handler.\n", - "Resource working_plate was assigned to the liquid handler.\n", - "Resource reagent_stock was assigned to the liquid handler.\n", - "Resource waste_liq was assigned to the liquid handler.\n" - ] + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:45.234924Z", + "start_time": "2025-06-08T15:32:45.194957Z" } - ], + }, "source": [ + "\n", + "# from pylabrobot.resources import set_volume_tracking\n", + "# from pylabrobot.resources import set_tip_tracking\n", + "# set_volume_tracking(enabled=True)\n", + "# set_tip_tracking(enabled=True)\n", "# ──────────────────────────────────────\n", "# User‑configurable constants (µL)\n", "MEDIUM_VOL = 100 # volume of spent medium to remove\n", @@ -62,7 +55,7 @@ "\n", "# ──────────────────────────────────────\n", "\n", - "lh = DPLiquidHandler(backend=LiquidHandlerChatterboxBackend(), deck=OTDeck())\n", + "lh = LiquidHandler(backend=LiquidHandlerChatterboxBackend(), deck=OTDeck())\n", "await lh.setup()\n", "#vis = Visualizer(resource=lh)\n", "#await vis.setup()\n", @@ -88,14 +81,36 @@ "# 1‑channel waste reservoir at slot 9\n", "waste_liq = nest_1_reservoir_195ml(name='waste_liq')\n", "lh.deck.assign_child_at_slot(waste_liq, slot=9)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Setting up the liquid handler.\n", + "Resource deck was assigned to the liquid handler.\n", + "Resource trash_container was assigned to the liquid handler.\n", + "Resource tiprack_1 was assigned to the liquid handler.\n", + "Resource tiprack_4 was assigned to the liquid handler.\n", + "Resource tiprack_8 was assigned to the liquid handler.\n", + "Resource tiprack_11 was assigned to the liquid handler.\n", + "Resource working_plate was assigned to the liquid handler.\n", + "Resource reagent_stock was assigned to the liquid handler.\n", + "Resource waste_liq was assigned to the liquid handler.\n" + ] + } + ], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 11, "id": "b5313453", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:45.425953Z", + "start_time": "2025-06-08T15:32:45.420965Z" + } + }, "source": [ "pbs = reagent_stock[0][0]\n", "lysis = reagent_stock[1][0]\n", @@ -103,14 +118,19 @@ "waste_liq = waste_liq[0]\n", "wells_name = [f\"A{i}\" for i in range(1, 13)]\n", "cells_all = working_plate[wells_name] # A1–A12" - ] + ], + "outputs": [], + "execution_count": 3 }, { "cell_type": "code", - "execution_count": 12, "id": "e85d6752", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:46.480024Z", + "start_time": "2025-06-08T15:32:46.473896Z" + } + }, "source": [ "working_plate_volumes = [\n", " ('culture medium', MEDIUM_VOL) if i % 8 == 0 else (None, 0)\n", @@ -119,14 +139,54 @@ "working_plate.set_well_liquids(working_plate_volumes)\n", "reagent_info = [('PBS Buffer', 5000), ('Lysis Buffer', 5000), ('Luciferase Reagent', 5000)]+[ (None, 0) ]* 9\n", "reagent_stock.set_well_liquids(reagent_info)\n", - "lh.set_tiprack(list(tipracks.values()))" - ] + "# lh.deck.set_tiprack(list(tipracks.values()))" + ], + "outputs": [], + "execution_count": 4 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:47.742983Z", + "start_time": "2025-06-08T15:32:47.731878Z" + } + }, + "cell_type": "code", + "source": [ + "# state = reagent_stock.serialize_all_state()\n", + "# print(state)\n", + "reagent_stock.load_all_state({'reagent_stock': {}, 'reagent_stock_A1': {'liquids': [['PBS Buffer', 5000]], 'pending_liquids': [], 'liquid_history': []}, 'reagent_stock_A2': {'liquids': [['Lysis Buffer', 5000]], 'pending_liquids': [['Lysis Buffer', 5000]], 'liquid_history': ['Lysis Buffer']}, 'reagent_stock_A3': {'liquids': [['Luciferase Reagent', 5000]], 'pending_liquids': [['Luciferase Reagent', 5000]], 'liquid_history': ['Luciferase Reagent']}, 'reagent_stock_A4': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A5': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A6': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A7': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A8': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A9': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A10': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A11': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}, 'reagent_stock_A12': {'liquids': [[None, 0]], 'pending_liquids': [[None, 0]], 'liquid_history': [None]}})\n", + "\n", + "reagent_stock[0][0].tracker.liquids" + ], + "id": "cd6ad8fb6494f14a", + "outputs": [ + { + "data": { + "text/plain": [ + "[('PBS Buffer', 5000)]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 5 }, { "cell_type": "code", - "execution_count": 13, "id": "9dbfb0e2", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T15:32:02.047523Z", + "start_time": "2025-06-08T15:32:02.042034Z" + } + }, + "source": [ + "from pylabrobot.resources import set_tip_tracking, set_volume_tracking\n", + "set_tip_tracking(True), set_volume_tracking(True)" + ], "outputs": [ { "data": { @@ -134,185 +194,9106 @@ "(None, None)" ] }, - "execution_count": 13, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], - "source": [ - "from pylabrobot.resources import set_tip_tracking, set_volume_tracking\n", - "set_tip_tracking(True), set_volume_tracking(True)" - ] + "execution_count": 12 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T16:04:23.597819Z", + "start_time": "2025-06-08T16:04:23.427478Z" + } + }, + "cell_type": "code", + "source": "lh.serialize()", + "id": "6b2801f34ac96ef6", + "outputs": [ + { + "data": { + "text/plain": [ + "{'name': 'lh_deck',\n", + " 'type': 'LiquidHandler',\n", + " 'size_x': 624.3,\n", + " 'size_y': 565.2,\n", + " 'size_z': 900,\n", + " 'location': {'x': 0, 'y': 0, 'z': 0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'liquid_handler',\n", + " 'model': None,\n", + " 'children': [{'name': 'deck',\n", + " 'type': 'OTDeck',\n", + " 'size_x': 624.3,\n", + " 'size_y': 565.2,\n", + " 'size_z': 900,\n", + " 'location': {'x': 0, 'y': 0, 'z': 0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'deck',\n", + " 'children': [{'name': 'trash_container',\n", + " 'type': 'Resource',\n", + " 'size_x': 172.86,\n", + " 'size_y': 165.86,\n", + " 'size_z': 82,\n", + " 'location': {'x': 265.0, 'y': 271.5, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': None,\n", + " 'model': None,\n", + " 'children': [{'name': 'trash',\n", + " 'type': 'Trash',\n", + " 'size_x': 172.86,\n", + " 'size_y': 165.86,\n", + " 'size_z': 82,\n", + " 'location': {'x': 0, 'y': 0, 'z': 0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'trash',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'trash_container',\n", + " 'max_volume': 'Infinity',\n", + " 'material_z_thickness': 0,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None}],\n", + " 'parent_name': 'deck'},\n", + " {'name': 'tiprack_1',\n", + " 'type': 'TipRack',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 64.49,\n", + " 'location': {'x': 0.0, 'y': 0.0, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_rack',\n", + " 'model': 'Opentrons OT-2 96 Tip Rack 300 µL',\n", + " 'children': [{'name': 'tiprack_1_A1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_A12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_B12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_C12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_D12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_E12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_F12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_G12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_1_H12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_1',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'B1',\n", + " 'C1',\n", + " 'D1',\n", + " 'E1',\n", + " 'F1',\n", + " 'G1',\n", + " 'H1',\n", + " 'A2',\n", + " 'B2',\n", + " 'C2',\n", + " 'D2',\n", + " 'E2',\n", + " 'F2',\n", + " 'G2',\n", + " 'H2',\n", + " 'A3',\n", + " 'B3',\n", + " 'C3',\n", + " 'D3',\n", + " 'E3',\n", + " 'F3',\n", + " 'G3',\n", + " 'H3',\n", + " 'A4',\n", + " 'B4',\n", + " 'C4',\n", + " 'D4',\n", + " 'E4',\n", + " 'F4',\n", + " 'G4',\n", + " 'H4',\n", + " 'A5',\n", + " 'B5',\n", + " 'C5',\n", + " 'D5',\n", + " 'E5',\n", + " 'F5',\n", + " 'G5',\n", + " 'H5',\n", + " 'A6',\n", + " 'B6',\n", + " 'C6',\n", + " 'D6',\n", + " 'E6',\n", + " 'F6',\n", + " 'G6',\n", + " 'H6',\n", + " 'A7',\n", + " 'B7',\n", + " 'C7',\n", + " 'D7',\n", + " 'E7',\n", + " 'F7',\n", + " 'G7',\n", + " 'H7',\n", + " 'A8',\n", + " 'B8',\n", + " 'C8',\n", + " 'D8',\n", + " 'E8',\n", + " 'F8',\n", + " 'G8',\n", + " 'H8',\n", + " 'A9',\n", + " 'B9',\n", + " 'C9',\n", + " 'D9',\n", + " 'E9',\n", + " 'F9',\n", + " 'G9',\n", + " 'H9',\n", + " 'A10',\n", + " 'B10',\n", + " 'C10',\n", + " 'D10',\n", + " 'E10',\n", + " 'F10',\n", + " 'G10',\n", + " 'H10',\n", + " 'A11',\n", + " 'B11',\n", + " 'C11',\n", + " 'D11',\n", + " 'E11',\n", + " 'F11',\n", + " 'G11',\n", + " 'H11',\n", + " 'A12',\n", + " 'B12',\n", + " 'C12',\n", + " 'D12',\n", + " 'E12',\n", + " 'F12',\n", + " 'G12',\n", + " 'H12']},\n", + " {'name': 'tiprack_4',\n", + " 'type': 'TipRack',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 64.49,\n", + " 'location': {'x': 0.0, 'y': 90.5, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_rack',\n", + " 'model': 'Opentrons OT-2 96 Tip Rack 300 µL',\n", + " 'children': [{'name': 'tiprack_4_A1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_A12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_B12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_C12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_D12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_E12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_F12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_G12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_4_H12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_4',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'B1',\n", + " 'C1',\n", + " 'D1',\n", + " 'E1',\n", + " 'F1',\n", + " 'G1',\n", + " 'H1',\n", + " 'A2',\n", + " 'B2',\n", + " 'C2',\n", + " 'D2',\n", + " 'E2',\n", + " 'F2',\n", + " 'G2',\n", + " 'H2',\n", + " 'A3',\n", + " 'B3',\n", + " 'C3',\n", + " 'D3',\n", + " 'E3',\n", + " 'F3',\n", + " 'G3',\n", + " 'H3',\n", + " 'A4',\n", + " 'B4',\n", + " 'C4',\n", + " 'D4',\n", + " 'E4',\n", + " 'F4',\n", + " 'G4',\n", + " 'H4',\n", + " 'A5',\n", + " 'B5',\n", + " 'C5',\n", + " 'D5',\n", + " 'E5',\n", + " 'F5',\n", + " 'G5',\n", + " 'H5',\n", + " 'A6',\n", + " 'B6',\n", + " 'C6',\n", + " 'D6',\n", + " 'E6',\n", + " 'F6',\n", + " 'G6',\n", + " 'H6',\n", + " 'A7',\n", + " 'B7',\n", + " 'C7',\n", + " 'D7',\n", + " 'E7',\n", + " 'F7',\n", + " 'G7',\n", + " 'H7',\n", + " 'A8',\n", + " 'B8',\n", + " 'C8',\n", + " 'D8',\n", + " 'E8',\n", + " 'F8',\n", + " 'G8',\n", + " 'H8',\n", + " 'A9',\n", + " 'B9',\n", + " 'C9',\n", + " 'D9',\n", + " 'E9',\n", + " 'F9',\n", + " 'G9',\n", + " 'H9',\n", + " 'A10',\n", + " 'B10',\n", + " 'C10',\n", + " 'D10',\n", + " 'E10',\n", + " 'F10',\n", + " 'G10',\n", + " 'H10',\n", + " 'A11',\n", + " 'B11',\n", + " 'C11',\n", + " 'D11',\n", + " 'E11',\n", + " 'F11',\n", + " 'G11',\n", + " 'H11',\n", + " 'A12',\n", + " 'B12',\n", + " 'C12',\n", + " 'D12',\n", + " 'E12',\n", + " 'F12',\n", + " 'G12',\n", + " 'H12']},\n", + " {'name': 'tiprack_8',\n", + " 'type': 'TipRack',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 64.49,\n", + " 'location': {'x': 132.5, 'y': 181.0, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_rack',\n", + " 'model': 'Opentrons OT-2 96 Tip Rack 300 µL',\n", + " 'children': [{'name': 'tiprack_8_A1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_A12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_B12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_C12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_D12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_E12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_F12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_G12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_8_H12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_8',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'B1',\n", + " 'C1',\n", + " 'D1',\n", + " 'E1',\n", + " 'F1',\n", + " 'G1',\n", + " 'H1',\n", + " 'A2',\n", + " 'B2',\n", + " 'C2',\n", + " 'D2',\n", + " 'E2',\n", + " 'F2',\n", + " 'G2',\n", + " 'H2',\n", + " 'A3',\n", + " 'B3',\n", + " 'C3',\n", + " 'D3',\n", + " 'E3',\n", + " 'F3',\n", + " 'G3',\n", + " 'H3',\n", + " 'A4',\n", + " 'B4',\n", + " 'C4',\n", + " 'D4',\n", + " 'E4',\n", + " 'F4',\n", + " 'G4',\n", + " 'H4',\n", + " 'A5',\n", + " 'B5',\n", + " 'C5',\n", + " 'D5',\n", + " 'E5',\n", + " 'F5',\n", + " 'G5',\n", + " 'H5',\n", + " 'A6',\n", + " 'B6',\n", + " 'C6',\n", + " 'D6',\n", + " 'E6',\n", + " 'F6',\n", + " 'G6',\n", + " 'H6',\n", + " 'A7',\n", + " 'B7',\n", + " 'C7',\n", + " 'D7',\n", + " 'E7',\n", + " 'F7',\n", + " 'G7',\n", + " 'H7',\n", + " 'A8',\n", + " 'B8',\n", + " 'C8',\n", + " 'D8',\n", + " 'E8',\n", + " 'F8',\n", + " 'G8',\n", + " 'H8',\n", + " 'A9',\n", + " 'B9',\n", + " 'C9',\n", + " 'D9',\n", + " 'E9',\n", + " 'F9',\n", + " 'G9',\n", + " 'H9',\n", + " 'A10',\n", + " 'B10',\n", + " 'C10',\n", + " 'D10',\n", + " 'E10',\n", + " 'F10',\n", + " 'G10',\n", + " 'H10',\n", + " 'A11',\n", + " 'B11',\n", + " 'C11',\n", + " 'D11',\n", + " 'E11',\n", + " 'F11',\n", + " 'G11',\n", + " 'H11',\n", + " 'A12',\n", + " 'B12',\n", + " 'C12',\n", + " 'D12',\n", + " 'E12',\n", + " 'F12',\n", + " 'G12',\n", + " 'H12']},\n", + " {'name': 'tiprack_11',\n", + " 'type': 'TipRack',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 64.49,\n", + " 'location': {'x': 132.5, 'y': 271.5, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_rack',\n", + " 'model': 'Opentrons OT-2 96 Tip Rack 300 µL',\n", + " 'children': [{'name': 'tiprack_11_A1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H1',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 12.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H2',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 21.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H3',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 30.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H4',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 39.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H5',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 48.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H6',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 57.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H7',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 66.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H8',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 75.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H9',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 84.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 72.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 63.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 54.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 45.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 36.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 27.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 18.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H10',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 93.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H11',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 102.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_A12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 72.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_B12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 63.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_C12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 54.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_D12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 45.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_E12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 36.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_F12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 27.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_G12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531,\n", + " 'y': 18.391,\n", + " 'z': 5.39,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}},\n", + " {'name': 'tiprack_11_H12',\n", + " 'type': 'TipSpot',\n", + " 'size_x': 3.698,\n", + " 'size_y': 3.698,\n", + " 'size_z': 0,\n", + " 'location': {'x': 111.531, 'y': 9.391, 'z': 5.39, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'tip_spot',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'tiprack_11',\n", + " 'prototype_tip': {'type': 'Tip',\n", + " 'total_tip_length': 59.3,\n", + " 'has_filter': False,\n", + " 'maximal_volume': 300.0,\n", + " 'fitting_depth': 7.47}}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'B1',\n", + " 'C1',\n", + " 'D1',\n", + " 'E1',\n", + " 'F1',\n", + " 'G1',\n", + " 'H1',\n", + " 'A2',\n", + " 'B2',\n", + " 'C2',\n", + " 'D2',\n", + " 'E2',\n", + " 'F2',\n", + " 'G2',\n", + " 'H2',\n", + " 'A3',\n", + " 'B3',\n", + " 'C3',\n", + " 'D3',\n", + " 'E3',\n", + " 'F3',\n", + " 'G3',\n", + " 'H3',\n", + " 'A4',\n", + " 'B4',\n", + " 'C4',\n", + " 'D4',\n", + " 'E4',\n", + " 'F4',\n", + " 'G4',\n", + " 'H4',\n", + " 'A5',\n", + " 'B5',\n", + " 'C5',\n", + " 'D5',\n", + " 'E5',\n", + " 'F5',\n", + " 'G5',\n", + " 'H5',\n", + " 'A6',\n", + " 'B6',\n", + " 'C6',\n", + " 'D6',\n", + " 'E6',\n", + " 'F6',\n", + " 'G6',\n", + " 'H6',\n", + " 'A7',\n", + " 'B7',\n", + " 'C7',\n", + " 'D7',\n", + " 'E7',\n", + " 'F7',\n", + " 'G7',\n", + " 'H7',\n", + " 'A8',\n", + " 'B8',\n", + " 'C8',\n", + " 'D8',\n", + " 'E8',\n", + " 'F8',\n", + " 'G8',\n", + " 'H8',\n", + " 'A9',\n", + " 'B9',\n", + " 'C9',\n", + " 'D9',\n", + " 'E9',\n", + " 'F9',\n", + " 'G9',\n", + " 'H9',\n", + " 'A10',\n", + " 'B10',\n", + " 'C10',\n", + " 'D10',\n", + " 'E10',\n", + " 'F10',\n", + " 'G10',\n", + " 'H10',\n", + " 'A11',\n", + " 'B11',\n", + " 'C11',\n", + " 'D11',\n", + " 'E11',\n", + " 'F11',\n", + " 'G11',\n", + " 'H11',\n", + " 'A12',\n", + " 'B12',\n", + " 'C12',\n", + " 'D12',\n", + " 'E12',\n", + " 'F12',\n", + " 'G12',\n", + " 'H12']},\n", + " {'name': 'working_plate',\n", + " 'type': 'Plate',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.47,\n", + " 'size_z': 14.22,\n", + " 'location': {'x': 265.0, 'y': 90.5, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'plate',\n", + " 'model': 'Corning 96 Well Plate 360 µL Flat',\n", + " 'children': [{'name': 'working_plate_A1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H1',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 11.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H2',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 20.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H3',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 29.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H4',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 38.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H5',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 47.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H6',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 56.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H7',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 65.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H8',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 74.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H9',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 83.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H10',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 92.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H11',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 101.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_A12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 71.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_B12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 62.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_C12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 53.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_D12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 44.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_E12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 35.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_F12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 26.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_G12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 17.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'},\n", + " {'name': 'working_plate_H12',\n", + " 'type': 'Well',\n", + " 'size_x': 4.851,\n", + " 'size_y': 4.851,\n", + " 'size_z': 10.67,\n", + " 'location': {'x': 110.9545,\n", + " 'y': 8.8145,\n", + " 'z': 3.55,\n", + " 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'working_plate',\n", + " 'max_volume': 360,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'circle'}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'B1',\n", + " 'C1',\n", + " 'D1',\n", + " 'E1',\n", + " 'F1',\n", + " 'G1',\n", + " 'H1',\n", + " 'A2',\n", + " 'B2',\n", + " 'C2',\n", + " 'D2',\n", + " 'E2',\n", + " 'F2',\n", + " 'G2',\n", + " 'H2',\n", + " 'A3',\n", + " 'B3',\n", + " 'C3',\n", + " 'D3',\n", + " 'E3',\n", + " 'F3',\n", + " 'G3',\n", + " 'H3',\n", + " 'A4',\n", + " 'B4',\n", + " 'C4',\n", + " 'D4',\n", + " 'E4',\n", + " 'F4',\n", + " 'G4',\n", + " 'H4',\n", + " 'A5',\n", + " 'B5',\n", + " 'C5',\n", + " 'D5',\n", + " 'E5',\n", + " 'F5',\n", + " 'G5',\n", + " 'H5',\n", + " 'A6',\n", + " 'B6',\n", + " 'C6',\n", + " 'D6',\n", + " 'E6',\n", + " 'F6',\n", + " 'G6',\n", + " 'H6',\n", + " 'A7',\n", + " 'B7',\n", + " 'C7',\n", + " 'D7',\n", + " 'E7',\n", + " 'F7',\n", + " 'G7',\n", + " 'H7',\n", + " 'A8',\n", + " 'B8',\n", + " 'C8',\n", + " 'D8',\n", + " 'E8',\n", + " 'F8',\n", + " 'G8',\n", + " 'H8',\n", + " 'A9',\n", + " 'B9',\n", + " 'C9',\n", + " 'D9',\n", + " 'E9',\n", + " 'F9',\n", + " 'G9',\n", + " 'H9',\n", + " 'A10',\n", + " 'B10',\n", + " 'C10',\n", + " 'D10',\n", + " 'E10',\n", + " 'F10',\n", + " 'G10',\n", + " 'H10',\n", + " 'A11',\n", + " 'B11',\n", + " 'C11',\n", + " 'D11',\n", + " 'E11',\n", + " 'F11',\n", + " 'G11',\n", + " 'H11',\n", + " 'A12',\n", + " 'B12',\n", + " 'C12',\n", + " 'D12',\n", + " 'E12',\n", + " 'F12',\n", + " 'G12',\n", + " 'H12']},\n", + " {'name': 'reagent_stock',\n", + " 'type': 'Plate',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 31.4,\n", + " 'location': {'x': 265.0, 'y': 0.0, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'plate',\n", + " 'model': 'NEST 12 Well Reservoir 15 mL',\n", + " 'children': [{'name': 'reagent_stock_A1',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 10.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A2',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 19.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A3',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 28.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A4',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 37.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A5',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 46.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A6',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 55.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A7',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 64.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A8',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 73.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A9',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 82.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A10',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 91.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A11',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 100.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'},\n", + " {'name': 'reagent_stock_A12',\n", + " 'type': 'Well',\n", + " 'size_x': 8.2,\n", + " 'size_y': 71.2,\n", + " 'size_z': 26.85,\n", + " 'location': {'x': 109.28, 'y': 7.18, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'reagent_stock',\n", + " 'max_volume': 15000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1',\n", + " 'A2',\n", + " 'A3',\n", + " 'A4',\n", + " 'A5',\n", + " 'A6',\n", + " 'A7',\n", + " 'A8',\n", + " 'A9',\n", + " 'A10',\n", + " 'A11',\n", + " 'A12']},\n", + " {'name': 'waste_liq',\n", + " 'type': 'Plate',\n", + " 'size_x': 127.76,\n", + " 'size_y': 85.48,\n", + " 'size_z': 31.4,\n", + " 'location': {'x': 265.0, 'y': 181.0, 'z': 0.0, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'plate',\n", + " 'model': 'NEST 1 Well Reservoir 195 mL',\n", + " 'children': [{'name': 'waste_liq_A1',\n", + " 'type': 'Well',\n", + " 'size_x': 106.8,\n", + " 'size_y': 71.2,\n", + " 'size_z': 25,\n", + " 'location': {'x': 10.48, 'y': 7.14, 'z': 4.55, 'type': 'Coordinate'},\n", + " 'rotation': {'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation'},\n", + " 'category': 'well',\n", + " 'model': None,\n", + " 'children': [],\n", + " 'parent_name': 'waste_liq',\n", + " 'max_volume': 195000,\n", + " 'material_z_thickness': None,\n", + " 'compute_volume_from_height': None,\n", + " 'compute_height_from_volume': None,\n", + " 'bottom_type': 'unknown',\n", + " 'cross_section_type': 'rectangle'}],\n", + " 'parent_name': 'deck',\n", + " 'ordering': ['A1']}],\n", + " 'parent_name': 'lh_deck'}],\n", + " 'parent_name': None,\n", + " 'backend': {'type': 'LiquidHandlerChatterboxBackend', 'num_channels': 8}}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 6 }, { "cell_type": "code", - "execution_count": 14, "id": "70094125", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_A1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A1 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_B1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A2 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_C1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A3 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_D1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A4 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_E1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A5 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_F1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A6 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_G1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A7 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_H1 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A8 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_A2 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A9 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_B2 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A10 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_C2 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A11 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n", - "Picking up tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: tiprack_1_D2 0,0,0 Tip 300.0 7.47 59.3 No \n", - "Aspirating:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 working_plate_A12 -2.5,0,0 0.2 None 0.2 \n", - "[Well(name=waste_liq_A1, location=Coordinate(010.480, 007.140, 004.550), size_x=106.8, size_y=71.2, size_z=25, category=well)]\n", - "Dispensing:\n", - "pip# vol(ul) resource offset flow rate blowout lld_z \n", - " p0: 100.0 waste_liq_A1 0,0,-5 3.0 None 0.0 \n", - "Dropping tips:\n", - "pip# resource offset tip type max volume (µL) fitting depth (mm) tip length (mm) filter \n", - " p0: trash 0,0.0,0 Tip 300.0 7.47 59.3 No \n" - ] + "metadata": { + "ExecuteTime": { + "end_time": "2025-06-08T14:25:19.507693Z", + "start_time": "2025-06-08T14:25:18.487272Z" } - ], + }, "source": [ "await lh.remove_liquid(\n", " vols=[MEDIUM_VOL]*12,\n", @@ -323,7 +9304,21 @@ " flow_rates=[0.2,3],\n", " offsets=[Coordinate(-2.5, 0, 0),Coordinate(0, 0, -5)]\n", ")" - ] + ], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'LiquidHandler' object has no attribute 'remove_liquid'", + "output_type": "error", + "traceback": [ + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mAttributeError\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[6]\u001B[39m\u001B[32m, line 1\u001B[39m\n\u001B[32m----> \u001B[39m\u001B[32m1\u001B[39m \u001B[38;5;28;01mawait\u001B[39;00m \u001B[43mlh\u001B[49m\u001B[43m.\u001B[49m\u001B[43mremove_liquid\u001B[49m(\n\u001B[32m 2\u001B[39m vols=[MEDIUM_VOL]*\u001B[32m12\u001B[39m,\n\u001B[32m 3\u001B[39m sources=cells_all,\n\u001B[32m 4\u001B[39m waste_liquid=waste_liq,\n\u001B[32m 5\u001B[39m top=[-\u001B[32m0.2\u001B[39m],\n\u001B[32m 6\u001B[39m liquid_height=[\u001B[32m0.2\u001B[39m,\u001B[32m0\u001B[39m],\n\u001B[32m 7\u001B[39m flow_rates=[\u001B[32m0.2\u001B[39m,\u001B[32m3\u001B[39m],\n\u001B[32m 8\u001B[39m offsets=[Coordinate(-\u001B[32m2.5\u001B[39m, \u001B[32m0\u001B[39m, \u001B[32m0\u001B[39m),Coordinate(\u001B[32m0\u001B[39m, \u001B[32m0\u001B[39m, -\u001B[32m5\u001B[39m)]\n\u001B[32m 9\u001B[39m )\n", + "\u001B[31mAttributeError\u001B[39m: 'LiquidHandler' object has no attribute 'remove_liquid'" + ] + } + ], + "execution_count": 6 }, { "cell_type": "code", diff --git a/unilabos/devices/liquid_handling/liquid_handler_abstract.py b/unilabos/devices/liquid_handling/liquid_handler_abstract.py index c349403e..4faa0427 100644 --- a/unilabos/devices/liquid_handling/liquid_handler_abstract.py +++ b/unilabos/devices/liquid_handling/liquid_handler_abstract.py @@ -6,13 +6,8 @@ import asyncio import time from pylabrobot.liquid_handling import LiquidHandler -from pylabrobot.resources import ( - Resource, - TipRack, - Container, - Coordinate, - Well -) +from pylabrobot.resources import Resource, TipRack, Container, Coordinate, Well + class LiquidHandlerAbstract(LiquidHandler): """Extended LiquidHandler with additional operations.""" @@ -21,6 +16,19 @@ class LiquidHandlerAbstract(LiquidHandler): # REMOVE LIQUID -------------------------------------------------- # --------------------------------------------------------------- + async def create_protocol( + self, + protocol_name: str, + protocol_description: str, + protocol_version: str, + protocol_author: str, + protocol_date: str, + protocol_type: str, + none_keys: List[str] = [], + ): + """Create a new protocol with the given metadata.""" + pass + async def remove_liquid( self, vols: List[float], @@ -35,26 +43,26 @@ class LiquidHandlerAbstract(LiquidHandler): spread: Optional[Literal["wide", "tight", "custom"]] = "wide", delays: Optional[List[int]] = None, is_96_well: Optional[bool] = False, - top: Optional[List(float)] = None, - none_keys: List[str] = [] + top: Optional[List[float]] = None, + none_keys: List[str] = [], ): """A complete *remove* (aspirate → waste) operation.""" trash = self.deck.get_trash_area() try: if is_96_well: - pass # This mode is not verified + pass # This mode is not verified else: if len(vols) != len(sources): raise ValueError("Length of `vols` must match `sources`.") for src, vol in zip(sources, vols): - self.move_to(src, dis_to_top=top[0] if top else 0) + await self.move_to(src, dis_to_top=top[0] if top else 0) tip = next(self.current_tip) await self.pick_up_tips(tip) await self.aspirate( resources=[src], vols=[vol], - use_channels=use_channels, # only aspirate96 used, default to None + use_channels=use_channels, # only aspirate96 used, default to None flow_rates=[flow_rates[0]] if flow_rates else None, offsets=[offsets[0]] if offsets else None, liquid_height=[liquid_height[0]] if liquid_height else None, @@ -64,15 +72,15 @@ class LiquidHandlerAbstract(LiquidHandler): await self.custom_delay(seconds=delays[0] if delays else 0) await self.dispense( resources=waste_liquid, - vols=[vol], - use_channels=use_channels, - flow_rates=[flow_rates[1]] if flow_rates else None, - offsets=[offsets[1]] if offsets else None, - liquid_height=[liquid_height[1]] if liquid_height else None, - blow_out_air_volume=blow_out_air_volume[1] if blow_out_air_volume else None, - spread=spread, - ) - await self.discard_tips() # For now, each of tips is discarded after use + vols=[vol], + use_channels=use_channels, + flow_rates=[flow_rates[1]] if flow_rates else None, + offsets=[offsets[1]] if offsets else None, + liquid_height=[liquid_height[1]] if liquid_height else None, + blow_out_air_volume=blow_out_air_volume[1] if blow_out_air_volume else None, + spread=spread, + ) + await self.discard_tips() # For now, each of tips is discarded after use except Exception as e: raise RuntimeError(f"Liquid removal failed: {e}") from e @@ -100,13 +108,13 @@ class LiquidHandlerAbstract(LiquidHandler): mix_vol: Optional[int] = None, mix_rate: Optional[int] = None, mix_liquid_height: Optional[float] = None, - none_keys: List[str] = [] + none_keys: List[str] = [], ): """A complete *add* (aspirate reagent → dispense into targets) operation.""" try: if is_96_well: - pass # This mode is not verified. + pass # This mode is not verified. else: if len(asp_vols) != len(targets): raise ValueError("Length of `vols` must match `targets`.") @@ -122,7 +130,7 @@ class LiquidHandlerAbstract(LiquidHandler): offsets=[offsets[0]] if offsets else None, liquid_height=[liquid_height[0]] if liquid_height else None, blow_out_air_volume=[blow_out_air_volume[0]] if blow_out_air_volume else None, - spread=spread + spread=spread, ) if delays is not None: await self.custom_delay(seconds=delays[0]) @@ -144,7 +152,8 @@ class LiquidHandlerAbstract(LiquidHandler): mix_vol=mix_vol, offsets=offsets if offsets else None, height_to_bottom=mix_liquid_height if mix_liquid_height else None, - mix_rate=mix_rate if mix_rate else None) + mix_rate=mix_rate if mix_rate else None, + ) if delays is not None: await self.custom_delay(seconds=delays[1]) await self.touch_tip(targets[_]) @@ -158,13 +167,13 @@ class LiquidHandlerAbstract(LiquidHandler): # --------------------------------------------------------------- async def transfer_liquid( self, - asp_vols: Union[List[float], float], - dis_vols: Union[List[float], float], sources: Sequence[Container], targets: Sequence[Container], tip_racks: Sequence[TipRack], *, use_channels: Optional[List[int]] = None, + asp_vols: Union[List[float], float], + dis_vols: Union[List[float], float], asp_flow_rates: Optional[List[Optional[float]]] = None, dis_flow_rates: Optional[List[Optional[float]]] = None, offsets: Optional[List[Coordinate]] = None, @@ -179,7 +188,7 @@ class LiquidHandlerAbstract(LiquidHandler): mix_rate: Optional[int] = None, mix_liquid_height: Optional[float] = None, delays: Optional[List[int]] = None, - none_keys: List[str] = [] + none_keys: List[str] = [], ): """Transfer liquid from each *source* well/plate to the corresponding *target*. @@ -201,14 +210,15 @@ class LiquidHandlerAbstract(LiquidHandler): # 96‑channel head mode # ------------------------------------------------------------------ if is_96_well: - pass # This mode is not verified + pass # This mode is not verified else: if not (len(asp_vols) == len(sources) and len(dis_vols) == len(targets)): raise ValueError("`sources`, `targets`, and `vols` must have the same length.") tip_iter = self.iter_tips(tip_racks) - for src, tgt, asp_vol, asp_flow_rate, dis_vol, dis_flow_rate in ( - zip(sources, targets, asp_vols, asp_flow_rates, dis_vols, dis_flow_rates)): + for src, tgt, asp_vol, asp_flow_rate, dis_vol, dis_flow_rate in zip( + sources, targets, asp_vols, asp_flow_rates, dis_vols, dis_flow_rates + ): tip = next(tip_iter) await self.pick_up_tips(tip) # Aspirate from source @@ -247,9 +257,9 @@ class LiquidHandlerAbstract(LiquidHandler): except Exception as exc: raise RuntimeError(f"Liquid transfer failed: {exc}") from exc -# --------------------------------------------------------------- -# Helper utilities -# --------------------------------------------------------------- + # --------------------------------------------------------------- + # Helper utilities + # --------------------------------------------------------------- async def custom_delay(self, seconds=0, msg=None): """ @@ -266,28 +276,26 @@ class LiquidHandlerAbstract(LiquidHandler): print(f"Done: {msg}") print(f"Current time: {time.strftime('%H:%M:%S')}") - async def touch_tip(self, - targets: Sequence[Container], - ): + async def touch_tip(self, targets: Sequence[Container]): """Touch the tip to the side of the well.""" await self.aspirate( resources=[targets], vols=[0], use_channels=None, flow_rates=None, - offsets=[Coordinate(x=-targets.get_size_x()/2,y=0,z=0)], + offsets=[Coordinate(x=-targets.get_size_x() / 2, y=0, z=0)], liquid_height=None, - blow_out_air_volume=None + blow_out_air_volume=None, ) - #await self.custom_delay(seconds=1) # In the simulation, we do not need to wait + # await self.custom_delay(seconds=1) # In the simulation, we do not need to wait await self.aspirate( resources=[targets], vols=[0], use_channels=None, flow_rates=None, - offsets=[Coordinate(x=targets.get_size_x()/2,y=0,z=0)], + offsets=[Coordinate(x=targets.get_size_x() / 2, y=0, z=0)], liquid_height=None, - blow_out_air_volume=None + blow_out_air_volume=None, ) async def mix( @@ -298,9 +306,9 @@ class LiquidHandlerAbstract(LiquidHandler): height_to_bottom: Optional[float] = None, offsets: Optional[Coordinate] = None, mix_rate: Optional[float] = None, - none_keys: List[str] = [] + none_keys: List[str] = [], ): - if mix_time is None: # No mixing required + if mix_time is None: # No mixing required return """Mix the liquid in the target wells.""" for _ in range(mix_time): @@ -333,7 +341,7 @@ class LiquidHandlerAbstract(LiquidHandler): tip_iter = self.iter_tips(tip_racks) self.current_tip = tip_iter - async def move_to(self, well: Well, dis_to_top: float = 0 , channel: int = 0): + async def move_to(self, well: Well, dis_to_top: float = 0, channel: int = 0): """ Move a single channel to a specific well with a given z-height. @@ -352,4 +360,3 @@ class LiquidHandlerAbstract(LiquidHandler): await self.move_channel_x(channel, abs_loc.x) await self.move_channel_y(channel, abs_loc.y) await self.move_channel_z(channel, abs_loc.z + well_height + dis_to_top) - diff --git a/unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py b/unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py new file mode 100644 index 00000000..712fdd9f --- /dev/null +++ b/unilabos/devices/liquid_handling/test liquid handler/convert_biomek.py @@ -0,0 +1,154 @@ + +import json +from typing import Sequence, Optional, List, Union, Literal +json_path = "/Users/guangxinzhang/Documents/Deep Potential/opentrons/convert/protocols/enriched_steps/sci-lucif-assay4.json" + +with open(json_path, "r") as f: + data = json.load(f) + +transfer_example = data[0] +#print(transfer_example) + + +temp_protocol = [] +TipLocation = "BC1025F" # Assuming this is a fixed tip location for the transfer +sources = transfer_example["sources"] # Assuming sources is a list of Container objects +targets = transfer_example["targets"] # Assuming targets is a list of Container objects +tip_racks = transfer_example["tip_racks"] # Assuming tip_racks is a list of TipRack objects +asp_vols = transfer_example["asp_vols"] # Assuming asp_vols is a list of volumes +solvent = "PBS" + +def transfer_liquid( + #self, + sources,#: Sequence[Container], + targets,#: Sequence[Container], + tip_racks,#: Sequence[TipRack], + TipLocation, + # *, + # use_channels: Optional[List[int]] = None, + asp_vols: Union[List[float], float], + solvent: Optional[str] = None, + # dis_vols: Union[List[float], float], + # asp_flow_rates: Optional[List[Optional[float]]] = None, + # dis_flow_rates: Optional[List[Optional[float]]] = None, + # offsets,#: Optional[List[]] = None, + # touch_tip: bool = False, + # liquid_height: Optional[List[Optional[float]]] = None, + # blow_out_air_volume: Optional[List[Optional[float]]] = None, + # spread: Literal["wide", "tight", "custom"] = "wide", + # is_96_well: bool = False, + # mix_stage: Optional[Literal["none", "before", "after", "both"]] = "none", + # mix_times,#: Optional[list() = None, + # mix_vol: Optional[int] = None, + # mix_rate: Optional[int] = None, + # mix_liquid_height: Optional[float] = None, + # delays: Optional[List[int]] = None, + # none_keys: List[str] = [] + ): + # -------- Build Biomek transfer step -------- + # 1) Construct default parameter scaffold (values mirror Biomek “Transfer” block). + + transfer_params = { + "Span8": False, + "Pod": "Pod1", + "items": {}, # to be filled below + "Wash": False, + "Dynamic?": True, + "AutoSelectActiveWashTechnique": False, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": False, + "ChangeTipsBetweenSources": False, + "DefaultCaption": "", # filled after we know first pair/vol + "UseExpression": False, + "LeaveTipsOn": False, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": False, + "Replicates": "1", + "ShowTipHandlingDetails": False, + "ShowTransferDetails": True, + "Solvent": "Water", + "Span8Wash": False, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": False, + "SplitVolumeCleaning": False, + "Stop": "Destinations", + "TipLocation": "BC1025F", + "UseCurrentTips": False, + "UseDisposableTips": True, + "UseFixedTips": False, + "UseJIT": True, + "UseMandrelSelection": True, + "UseProbes": [True, True, True, True, True, True, True, True], + "WashCycles": "1", + "WashVolume": "110%", + "Wizard": False + } + + items: dict = {} + for idx, (src, dst) in enumerate(zip(sources, targets)): + items[str(idx)] = { + "Source": str(src), + "Destination": str(dst), + "Volume": asp_vols[idx] + } + transfer_params["items"] = items + transfer_params["Solvent"] = solvent if solvent else "Water" + transfer_params["TipLocation"] = TipLocation + + if len(tip_racks) == 1: + transfer_params['UseCurrentTips'] = True + elif len(tip_racks) > 1: + transfer_params["ChangeTipsBetweenDests"] = True + + return transfer_params + +action = transfer_liquid(sources=sources,targets=targets,tip_racks=tip_racks, asp_vols=asp_vols,solvent = solvent, TipLocation=TipLocation) +print(json.dumps(action,indent=2)) +# print(action) + + + + +""" + "transfer": { + + "items": {}, + "Wash": false, + "Dynamic?": true, + "AutoSelectActiveWashTechnique": false, + "ActiveWashTechnique": "", + "ChangeTipsBetweenDests": true, + "ChangeTipsBetweenSources": false, + "DefaultCaption": "Transfer 100 µL from P13 to P3", + "UseExpression": false, + "LeaveTipsOn": false, + "MandrelExpression": "", + "Repeats": "1", + "RepeatsByVolume": false, + "Replicates": "1", + "ShowTipHandlingDetails": true, + "ShowTransferDetails": true, + + "Span8Wash": false, + "Span8WashVolume": "2", + "Span8WasteVolume": "1", + "SplitVolume": false, + "SplitVolumeCleaning": false, + "Stop": "Destinations", + "TipLocation": "BC1025F", + "UseCurrentTips": false, + "UseDisposableTips": false, + "UseFixedTips": false, + "UseJIT": true, + "UseMandrelSelection": true, + "UseProbes": [true, true, true, true, true, true, true, true], + "WashCycles": "3", + "WashVolume": "110%", + "Wizard": false +""" + + + + diff --git a/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json b/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json new file mode 100644 index 00000000..012a1606 --- /dev/null +++ b/unilabos/devices/liquid_handling/test liquid handler/sci-lucif-assay4.json @@ -0,0 +1,4033 @@ +[ + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + } + ], + "tip_racks": [ + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 8 + } + ], + "use_channels": null, + "asp_vols": [ + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0 + ], + "asp_flow_rates": [ + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8 + ], + "disp_vols": [ + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0, + 120.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": false, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5 + ], + "bottom": [ + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null + ], + "move": [ + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "reagent stock", + "slot": 3 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + } + ], + "use_channels": null, + "asp_vols": [ + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0 + ], + "asp_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "disp_vols": [ + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0, + 70.0 + ], + "dis_flow_rates": [ + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2, + null, + -2 + ], + "bottom": [ + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + }, + { + "well": "A1", + "labware": "waste", + "slot": 9 + } + ], + "tip_racks": [ + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 11 + }, + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + } + ], + "use_channels": null, + "asp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "asp_flow_rates": [ + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8, + 18.8 + ], + "disp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": false, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "top": [ + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5, + null, + -5 + ], + "bottom": [ + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null, + 0.2, + null + ], + "move": [ + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null, + [ + -2.5, + 0.0, + 0.0 + ], + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + -0.2 + ], + "bottom": [ + null + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "reagent stock", + "slot": 3 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + } + ], + "use_channels": null, + "asp_vols": [ + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0 + ], + "asp_flow_rates": [ + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0, + 47.0 + ], + "disp_vols": [ + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0, + 30.0 + ], + "dis_flow_rates": [ + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2, + 28.2 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "none", + "mix_times": 0, + "mix_vol": null, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 0 + ], + "top": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "bottom": [ + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5, + 0.5, + 5 + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ] + }, + { + "template": "transfer", + "sources": [ + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "reagent stock", + "slot": 3 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "targets": [ + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A1", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A2", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A3", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A4", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A5", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A6", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A7", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A8", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A9", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A10", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A11", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + }, + { + "well": "A12", + "labware": "working plate", + "slot": 6 + } + ], + "tip_racks": [ + { + "well": "A3", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A4", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A5", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A6", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A7", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A8", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A9", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A10", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A11", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A12", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 1 + }, + { + "well": "A1", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 4 + }, + { + "well": "A2", + "type": "Opentrons OT-2 96 Tip Rack 300 \u00b5L", + "slot": 4 + } + ], + "use_channels": null, + "asp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "asp_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "disp_vols": [ + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0, + 75.0 + ], + "dis_flow_rates": [ + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0, + 282.0 + ], + "offsets": null, + "touch_tip": true, + "liquid_height": null, + "blow_out_air_volume": [ + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0, + 0.0 + ], + "is_96_well": false, + "mix_stage": "after", + "mix_times": [ + 3 + ], + "mix_vol": 75.0, + "mix_rate": null, + "mix_liquid_height": null, + "delays": [ + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2 + ], + "top": [ + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5, + null, + -0.5 + ], + "bottom": [ + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null, + 0.5, + null + ], + "move": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "center": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ], + "move_to": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + } + ], + "mix_detail": [ + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + }, + { + "top": [], + "bottom": [], + "move": [], + "center": [] + }, + { + "top": [ + null + ], + "bottom": [ + 0.5 + ], + "move": [ + null + ], + "center": [ + false + ] + } + ] + } +] \ No newline at end of file diff --git a/unilabos/devices/mock/__init__.py b/unilabos/devices/mock/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/unilabos/devices/mock/mock_chiller.py b/unilabos/devices/mock/mock_chiller.py new file mode 100644 index 00000000..fbb823c9 --- /dev/null +++ b/unilabos/devices/mock/mock_chiller.py @@ -0,0 +1,177 @@ +import time +import threading + + +class MockChiller: + def __init__(self, port: str = "MOCK"): + self.port = port + self._current_temperature: float = 25.0 # 室温开始 + self._target_temperature: float = 25.0 + self._status: str = "Idle" + self._is_cooling: bool = False + self._is_heating: bool = False + self._vessel = "Unknown" + self._purpose = "Unknown" + + # 模拟温度变化的线程 + self._temperature_thread = None + self._running = True + self._temperature_thread = threading.Thread(target=self._temperature_control_loop) + self._temperature_thread.daemon = True + self._temperature_thread.start() + + @property + def current_temperature(self) -> float: + """当前温度 - 会被自动识别的设备属性""" + return self._current_temperature + + @property + def target_temperature(self) -> float: + """目标温度""" + return self._target_temperature + + @property + def status(self) -> str: + """设备状态 - 会被自动识别的设备属性""" + return self._status + + @property + def is_cooling(self) -> bool: + """是否正在冷却""" + return self._is_cooling + + @property + def is_heating(self) -> bool: + """是否正在加热""" + return self._is_heating + + @property + def vessel(self) -> str: + """当前操作的容器名称""" + return self._vessel + + @property + def purpose(self) -> str: + """当前操作目的""" + return self._purpose + + def heat_chill_start(self, vessel: str, temp: float, purpose: str): + """设置目标温度并记录容器和目的""" + self._vessel = str(vessel) + self._purpose = str(purpose) + self._target_temperature = float(temp) + + diff = self._target_temperature - self._current_temperature + if abs(diff) < 0.1: + self._status = "At Target Temperature" + self._is_cooling = False + self._is_heating = False + elif diff < 0: + self._status = "Cooling" + self._is_cooling = True + self._is_heating = False + else: + self._status = "Heating" + self._is_heating = True + self._is_cooling = False + + self._start_temperature_control() + return True + + def heat_chill_stop(self, vessel: str): + """停止加热/制冷""" + if vessel != self._vessel: + return {"success": False, "status": f"Wrong vessel: expected {self._vessel}, got {vessel}"} + + # 停止温度控制线程,锁定当前温度 + self._stop_temperature_control() + + # 更新状态 + self._status = "Stopped" + self._is_cooling = False + self._is_heating = False + + # 重新启动线程但保持温度 + self._running = True + self._temperature_thread = threading.Thread(target=self._temperature_control_loop) + self._temperature_thread.daemon = True + self._temperature_thread.start() + + return {"success": True, "status": self._status} + + def _start_temperature_control(self): + """启动温度控制线程""" + self._running = True + if self._temperature_thread is None or not self._temperature_thread.is_alive(): + self._temperature_thread = threading.Thread(target=self._temperature_control_loop) + self._temperature_thread.daemon = True + self._temperature_thread.start() + + def _stop_temperature_control(self): + """停止温度控制""" + self._running = False + if self._temperature_thread: + self._temperature_thread.join(timeout=1.0) + + def _temperature_control_loop(self): + """温度控制循环 - 模拟真实冷却器的温度变化""" + while self._running: + # 如果状态是 Stopped,不改变温度 + if self._status == "Stopped": + time.sleep(1.0) + continue + + temp_diff = self._target_temperature - self._current_temperature + + if abs(temp_diff) < 0.1: + self._status = "At Target Temperature" + self._is_cooling = False + self._is_heating = False + elif temp_diff < 0: + self._status = "Cooling" + self._is_cooling = True + self._is_heating = False + self._current_temperature -= 0.5 + else: + self._status = "Heating" + self._is_heating = True + self._is_cooling = False + self._current_temperature += 0.3 + + time.sleep(1.0) + + def emergency_stop(self): + """紧急停止""" + self._status = "Emergency Stop" + self._stop_temperature_control() + self._is_cooling = False + self._is_heating = False + + def get_status_info(self) -> dict: + """获取完整状态信息""" + return { + "current_temperature": self._current_temperature, + "target_temperature": self._target_temperature, + "status": self._status, + "is_cooling": self._is_cooling, + "is_heating": self._is_heating, + "vessel": self._vessel, + "purpose": self._purpose, + } + + +# 用于测试的主函数 +if __name__ == "__main__": + chiller = MockChiller() + + # 测试基本功能 + print("启动冷却器测试...") + print(f"初始状态: {chiller.get_status_info()}") + + # 模拟运行10秒 + for i in range(10): + time.sleep(1) + print(f"第{i+1}秒: 当前温度={chiller.current_temperature:.1f}°C, 状态={chiller.status}") + + chiller.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/mock/mock_filter.py b/unilabos/devices/mock/mock_filter.py new file mode 100644 index 00000000..f54e41ed --- /dev/null +++ b/unilabos/devices/mock/mock_filter.py @@ -0,0 +1,235 @@ +import time +import threading + + +class MockFilter: + def __init__(self, port: str = "MOCK"): + # 基本参数初始化 + self.port = port + self._status: str = "Idle" + self._is_filtering: bool = False + + # 过滤性能参数 + self._flow_rate: float = 1.0 # 流速(L/min) + self._pressure_drop: float = 0.0 # 压降(Pa) + self._filter_life: float = 100.0 # 滤芯寿命(%) + + # 过滤操作参数 + self._vessel: str = "" # 源容器 + self._filtrate_vessel: str = "" # 目标容器 + self._stir: bool = False # 是否搅拌 + self._stir_speed: float = 0.0 # 搅拌速度 + self._temperature: float = 25.0 # 温度(℃) + self._continue_heatchill: bool = False # 是否继续加热/制冷 + self._target_volume: float = 0.0 # 目标过滤体积(L) + self._filtered_volume: float = 0.0 # 已过滤体积(L) + self._progress: float = 0.0 # 过滤进度(%) + + # 线程控制 + self._filter_thread = None + self._running = False + + @property + def status(self) -> str: + return self._status + + @property + def is_filtering(self) -> bool: + return self._is_filtering + + @property + def flow_rate(self) -> float: + return self._flow_rate + + @property + def pressure_drop(self) -> float: + return self._pressure_drop + + @property + def filter_life(self) -> float: + return self._filter_life + # 新增 property + @property + def vessel(self) -> str: + return self._vessel + + @property + def filtrate_vessel(self) -> str: + return self._filtrate_vessel + + @property + def filtered_volume(self) -> float: + return self._filtered_volume + + @property + def progress(self) -> float: + return self._progress + + @property + def stir(self) -> bool: + return self._stir + + @property + def stir_speed(self) -> float: + return self._stir_speed + + @property + def temperature(self) -> float: + return self._temperature + + @property + def continue_heatchill(self) -> bool: + return self._continue_heatchill + + @property + def target_volume(self) -> float: + return self._target_volume + + def filter(self, vessel: str, filtrate_vessel: str, stir: bool = False, stir_speed: float = 0.0, temp: float = 25.0, continue_heatchill: bool = False, volume: float = 0.0) -> dict: + """新的过滤操作""" + # 停止任何正在进行的过滤 + if self._is_filtering: + self.stop_filtering() + # 验证参数 + if volume <= 0: + return {"success": False, "message": "Target volume must be greater than 0"} + # 设置新的过滤参数 + self._vessel = vessel + self._filtrate_vessel = filtrate_vessel + self._stir = stir + self._stir_speed = stir_speed + self._temperature = temp + self._continue_heatchill = continue_heatchill + self._target_volume = volume + # 重置过滤状态 + self._filtered_volume = 0.0 + self._progress = 0.0 + self._status = "Starting Filter" + # 启动过滤过程 + self._flow_rate = 1.0 # 设置默认流速 + self._start_filter_process() + + return {"success": True, "message": "Filter started"} + + def stop_filtering(self): + """停止过滤""" + self._status = "Stopping Filter" + self._stop_filter_process() + self._flow_rate = 0.0 + self._is_filtering = False + self._status = "Stopped" + return True + + def replace_filter(self): + """更换滤芯""" + self._filter_life = 100.0 + self._status = "Filter Replaced" + return True + + def _start_filter_process(self): + """启动过滤过程线程""" + if not self._running: + self._running = True + self._is_filtering = True + self._filter_thread = threading.Thread(target=self._filter_loop) + self._filter_thread.daemon = True + self._filter_thread.start() + + def _stop_filter_process(self): + """停止过滤过程""" + self._running = False + if self._filter_thread: + self._filter_thread.join(timeout=1.0) + + def _filter_loop(self): + """过滤进程主循环""" + update_interval = 1.0 # 更新间隔(秒) + + while self._running and self._is_filtering: + try: + self._status = "Filtering" + + # 计算这一秒过滤的体积 (L/min -> L/s) + volume_increment = (self._flow_rate / 60.0) * update_interval + + # 更新已过滤体积 + self._filtered_volume += volume_increment + + # 更新进度 (避免除零错误) + if self._target_volume > 0: + self._progress = min(100.0, (self._filtered_volume / self._target_volume) * 100.0) + + # 更新滤芯寿命 (每过滤1L减少0.5%寿命) + self._filter_life = max(0.0, self._filter_life - (volume_increment * 0.5)) + + # 更新压降 (根据滤芯寿命和流速动态计算) + life_factor = self._filter_life / 100.0 # 将寿命转换为0-1的因子 + flow_factor = self._flow_rate / 2.0 # 将流速标准化(假设2L/min是标准流速) + base_pressure = 100.0 # 基础压降 + # 压降随滤芯寿命降低而增加,随流速增加而增加 + self._pressure_drop = base_pressure * (2 - life_factor) * flow_factor + + # 检查是否完成目标体积 + if self._target_volume > 0 and self._filtered_volume >= self._target_volume: + self._status = "Completed" + self._progress = 100.0 + self.stop_filtering() + break + + # 检查滤芯寿命 + if self._filter_life <= 10.0: + self._status = "Filter Needs Replacement" + + time.sleep(update_interval) + + except Exception as e: + print(f"Error in filter loop: {e}") + self.emergency_stop() + break + + def emergency_stop(self): + """紧急停止""" + self._status = "Emergency Stop" + self._stop_filter_process() + self._is_filtering = False + self._flow_rate = 0.0 + + def get_status_info(self) -> dict: + """扩展的状态信息""" + return { + "status": self._status, + "is_filtering": self._is_filtering, + "flow_rate": self._flow_rate, + "pressure_drop": self._pressure_drop, + "filter_life": self._filter_life, + "vessel": self._vessel, + "filtrate_vessel": self._filtrate_vessel, + "filtered_volume": self._filtered_volume, + "target_volume": self._target_volume, + "progress": self._progress, + "temperature": self._temperature, + "stir": self._stir, + "stir_speed": self._stir_speed + } + + +# 用于测试的主函数 +if __name__ == "__main__": + filter_device = MockFilter() + + # 测试基本功能 + print("启动过滤器测试...") + print(f"初始状态: {filter_device.get_status_info()}") + + + + # 模拟运行10秒 + for i in range(10): + time.sleep(1) + print( + f"第{i+1}秒: " + f"寿命={filter_device.filter_life:.1f}%, 状态={filter_device.status}" + ) + + filter_device.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/mock/mock_heater.py b/unilabos/devices/mock/mock_heater.py new file mode 100644 index 00000000..47dd8d85 --- /dev/null +++ b/unilabos/devices/mock/mock_heater.py @@ -0,0 +1,247 @@ +import time +import threading + +class MockHeater: + def __init__(self, port: str = "MOCK"): + self.port = port + self._current_temperature: float = 25.0 # 室温开始 + self._target_temperature: float = 25.0 + self._status: str = "Idle" + self._is_heating: bool = False + self._heating_power: float = 0.0 # 加热功率百分比 0-100 + self._max_temperature: float = 300.0 # 最大加热温度 + + # 新增加的属性 + self._vessel: str = "Unknown" + self._purpose: str = "Unknown" + self._stir: bool = False + self._stir_speed: float = 0.0 + + # 模拟加热过程的线程 + self._heating_thread = None + self._running = True + self._heating_thread = threading.Thread(target=self._heating_control_loop) + self._heating_thread.daemon = True + self._heating_thread.start() + + @property + def current_temperature(self) -> float: + """当前温度 - 会被自动识别的设备属性""" + return self._current_temperature + + @property + def target_temperature(self) -> float: + """目标温度""" + return self._target_temperature + + @property + def status(self) -> str: + """设备状态 - 会被自动识别的设备属性""" + return self._status + + @property + def is_heating(self) -> bool: + """是否正在加热""" + return self._is_heating + + @property + def heating_power(self) -> float: + """加热功率百分比""" + return self._heating_power + + @property + def max_temperature(self) -> float: + """最大加热温度""" + return self._max_temperature + + @property + def vessel(self) -> str: + """当前操作的容器名称""" + return self._vessel + + @property + def purpose(self) -> str: + """操作目的""" + return self._purpose + + @property + def stir(self) -> bool: + """是否搅拌""" + return self._stir + + @property + def stir_speed(self) -> float: + """搅拌速度""" + return self._stir_speed + + def heat_chill_start(self, vessel: str, temp: float, purpose: str) -> dict: + """开始加热/制冷过程""" + self._vessel = str(vessel) + self._purpose = str(purpose) + self._target_temperature = float(temp) + + diff = self._target_temperature - self._current_temperature + if abs(diff) < 0.1: + self._status = "At Target Temperature" + self._is_heating = False + elif diff > 0: + self._status = "Heating" + self._is_heating = True + else: + self._status = "Cooling Down" + self._is_heating = False + + return {"success": True, "status": self._status} + + def heat_chill_stop(self, vessel: str) -> dict: + """停止加热/制冷""" + if vessel != self._vessel: + return {"success": False, "status": f"Wrong vessel: expected {self._vessel}, got {vessel}"} + + self._status = "Stopped" + self._is_heating = False + self._heating_power = 0.0 + + return {"success": True, "status": self._status} + + def heat_chill(self, vessel: str, temp: float, time: float, + stir: bool = False, stir_speed: float = 0.0, + purpose: str = "Unknown") -> dict: + """完整的加热/制冷控制""" + self._vessel = str(vessel) + self._target_temperature = float(temp) + self._purpose = str(purpose) + self._stir = stir + self._stir_speed = stir_speed + + diff = self._target_temperature - self._current_temperature + if abs(diff) < 0.1: + self._status = "At Target Temperature" + self._is_heating = False + elif diff > 0: + self._status = "Heating" + self._is_heating = True + else: + self._status = "Cooling Down" + self._is_heating = False + + return {"success": True, "status": self._status} + + def set_temperature(self, temperature: float): + """设置目标温度 - 需要在注册表添加的设备动作""" + try: + temperature = float(temperature) + except ValueError: + self._status = "Error: Invalid temperature value" + return False + + if temperature > self._max_temperature: + self._status = f"Error: Temperature exceeds maximum ({self._max_temperature}°C)" + return False + + self._target_temperature = temperature + self._status = "Setting Temperature" + + # 启动加热控制 + self._start_heating_control() + return True + + def set_heating_power(self, power: float): + """设置加热功率""" + try: + power = float(power) + except ValueError: + self._status = "Error: Invalid power value" + return False + + self._heating_power = max(0.0, min(100.0, power)) # 限制在0-100% + return True + + def _start_heating_control(self): + """启动加热控制线程""" + if not self._running: + self._running = True + self._heating_thread = threading.Thread(target=self._heating_control_loop) + self._heating_thread.daemon = True + self._heating_thread.start() + + def _stop_heating_control(self): + """停止加热控制""" + self._running = False + if self._heating_thread: + self._heating_thread.join(timeout=1.0) + + def _heating_control_loop(self): + """加热控制循环""" + while self._running: + # 如果状态是 Stopped,不改变温度 + if self._status == "Stopped": + time.sleep(1.0) + continue + + temp_diff = self._target_temperature - self._current_temperature + + if abs(temp_diff) < 0.1: + self._status = "At Target Temperature" + self._is_heating = False + self._heating_power = 10.0 + elif temp_diff > 0: + self._status = "Heating" + self._is_heating = True + self._heating_power = min(100.0, abs(temp_diff) * 2) + self._current_temperature += 0.5 + else: + self._status = "Cooling Down" + self._is_heating = False + self._heating_power = 0.0 + self._current_temperature -= 0.2 + + time.sleep(1.0) + + def emergency_stop(self): + """紧急停止""" + self._status = "Emergency Stop" + self._stop_heating_control() + self._is_heating = False + self._heating_power = 0.0 + + def get_status_info(self) -> dict: + """获取完整状态信息""" + return { + "current_temperature": self._current_temperature, + "target_temperature": self._target_temperature, + "status": self._status, + "is_heating": self._is_heating, + "heating_power": self._heating_power, + "max_temperature": self._max_temperature, + "vessel": self._vessel, + "purpose": self._purpose, + "stir": self._stir, + "stir_speed": self._stir_speed + } + +# 用于测试的主函数 +if __name__ == "__main__": + heater = MockHeater() + + print("启动加热器测试...") + print(f"初始状态: {heater.get_status_info()}") + + # 设置目标温度为80度 + heater.set_temperature(80.0) + + # 模拟运行15秒 + try: + for i in range(15): + time.sleep(1) + status = heater.get_status_info() + print( + f"\r温度: {status['current_temperature']:.1f}°C / {status['target_temperature']:.1f}°C | " + f"功率: {status['heating_power']:.1f}% | 状态: {status['status']}", + end="" + ) + except KeyboardInterrupt: + heater.emergency_stop() + print("\n测试被手动停止") + + print("\n测试完成") \ No newline at end of file diff --git a/unilabos/devices/mock/mock_pump.py b/unilabos/devices/mock/mock_pump.py new file mode 100644 index 00000000..43cbf007 --- /dev/null +++ b/unilabos/devices/mock/mock_pump.py @@ -0,0 +1,360 @@ +import time +import threading +from datetime import datetime, timedelta + +class MockPump: + def __init__(self, port: str = "MOCK"): + self.port = port + + # 设备基本状态属性 + self._current_device = "MockPump1" # 设备标识符 + self._status: str = "Idle" # 设备状态:Idle, Running, Error, Stopped + self._pump_state: str = "Stopped" # 泵运行状态:Running, Stopped, Paused + + # 流量相关属性 + self._flow_rate: float = 0.0 # 当前流速 (mL/min) + self._target_flow_rate: float = 0.0 # 目标流速 (mL/min) + self._max_flow_rate: float = 100.0 # 最大流速 (mL/min) + self._total_volume: float = 0.0 # 累计流量 (mL) + + # 压力相关属性 + self._pressure: float = 0.0 # 当前压力 (bar) + self._max_pressure: float = 10.0 # 最大压力 (bar) + + # 运行控制线程 + self._pump_thread = None + self._running = False + self._thread_lock = threading.Lock() + + # 新增 PumpTransfer 相关属性 + self._from_vessel: str = "" + self._to_vessel: str = "" + self._transfer_volume: float = 0.0 + self._amount: str = "" + self._transfer_time: float = 0.0 + self._is_viscous: bool = False + self._rinsing_solvent: str = "" + self._rinsing_volume: float = 0.0 + self._rinsing_repeats: int = 0 + self._is_solid: bool = False + + # 时间追踪 + self._start_time: datetime = None + self._time_spent: timedelta = timedelta() + self._time_remaining: timedelta = timedelta() + + # ==================== 状态属性 ==================== + # 这些属性会被Uni-Lab系统自动识别并定时对外广播 + + @property + def status(self) -> str: + return self._status + + @property + def current_device(self) -> str: + """当前设备标识符""" + return self._current_device + + @property + def pump_state(self) -> str: + return self._pump_state + + @property + def flow_rate(self) -> float: + return self._flow_rate + + @property + def target_flow_rate(self) -> float: + return self._target_flow_rate + + @property + def pressure(self) -> float: + return self._pressure + + @property + def total_volume(self) -> float: + return self._total_volume + + @property + def max_flow_rate(self) -> float: + return self._max_flow_rate + + @property + def max_pressure(self) -> float: + return self._max_pressure + + # 添加新的属性访问器 + @property + def from_vessel(self) -> str: + return self._from_vessel + + @property + def to_vessel(self) -> str: + return self._to_vessel + + @property + def transfer_volume(self) -> float: + return self._transfer_volume + + @property + def amount(self) -> str: + return self._amount + + @property + def transfer_time(self) -> float: + return self._transfer_time + + @property + def is_viscous(self) -> bool: + return self._is_viscous + + @property + def rinsing_solvent(self) -> str: + return self._rinsing_solvent + + @property + def rinsing_volume(self) -> float: + return self._rinsing_volume + + @property + def rinsing_repeats(self) -> int: + return self._rinsing_repeats + + @property + def is_solid(self) -> bool: + return self._is_solid + + # 修改这两个属性装饰器 + @property + def time_spent(self) -> float: + """已用时间(秒)""" + if isinstance(self._time_spent, timedelta): + return self._time_spent.total_seconds() + return float(self._time_spent) + + @property + def time_remaining(self) -> float: + """剩余时间(秒)""" + if isinstance(self._time_remaining, timedelta): + return self._time_remaining.total_seconds() + return float(self._time_remaining) + + # ==================== 设备控制方法 ==================== + # 这些方法需要在注册表中添加,会作为ActionServer接受控制指令 + def pump_transfer(self, from_vessel: str, to_vessel: str, volume: float, + amount: str = "", time: float = 0.0, viscous: bool = False, + rinsing_solvent: str = "", rinsing_volume: float = 0.0, + rinsing_repeats: int = 0, solid: bool = False) -> dict: + """Execute pump transfer operation""" + # Stop any existing operation first + self._stop_pump_operation() + + # Set transfer parameters + self._from_vessel = from_vessel + self._to_vessel = to_vessel + self._transfer_volume = float(volume) + self._amount = amount + self._transfer_time = float(time) + self._is_viscous = viscous + self._rinsing_solvent = rinsing_solvent + self._rinsing_volume = float(rinsing_volume) + self._rinsing_repeats = int(rinsing_repeats) + self._is_solid = solid + + # Calculate flow rate + if self._transfer_time > 0 and self._transfer_volume > 0: + self._target_flow_rate = (self._transfer_volume / self._transfer_time) * 60.0 + else: + self._target_flow_rate = 10.0 if not self._is_viscous else 5.0 + + # Reset timers and counters + self._start_time = datetime.now() + self._time_spent = timedelta() + self._time_remaining = timedelta(seconds=self._transfer_time) + self._total_volume = 0.0 + self._flow_rate = 0.0 + + # Start pump operation + self._pump_state = "Running" + self._status = "Starting Transfer" + self._running = True + + # Start pump operation thread + self._pump_thread = threading.Thread(target=self._pump_operation_loop) + self._pump_thread.daemon = True + self._pump_thread.start() + + # Wait briefly to ensure thread starts + time.sleep(0.1) + + return { + "success": True, + "status": self._status, + "current_device": self._current_device, + "time_spent": 0.0, + "time_remaining": float(self._transfer_time) + } + + def pause_pump(self) -> str: + + if self._pump_state != "Running": + self._status = "Error: Pump not running" + return "Error" + + self._pump_state = "Paused" + self._status = "Pump Paused" + self._stop_pump_operation() + + return "Success" + + def resume_pump(self) -> str: + + if self._pump_state != "Paused": + self._status = "Error: Pump not paused" + return "Error" + + self._pump_state = "Running" + self._status = "Resuming Pump" + self._start_pump_operation() + + return "Success" + + def reset_volume_counter(self) -> str: + self._total_volume = 0.0 + self._status = "Volume counter reset" + return "Success" + + def emergency_stop(self) -> str: + self._status = "Emergency Stop" + self._pump_state = "Stopped" + self._stop_pump_operation() + self._flow_rate = 0.0 + self._pressure = 0.0 + self._target_flow_rate = 0.0 + + return "Success" + + # ==================== 内部控制方法 ==================== + + def _start_pump_operation(self): + with self._thread_lock: + if not self._running: + self._running = True + self._pump_thread = threading.Thread(target=self._pump_operation_loop) + self._pump_thread.daemon = True + self._pump_thread.start() + + def _stop_pump_operation(self): + with self._thread_lock: + self._running = False + if self._pump_thread and self._pump_thread.is_alive(): + self._pump_thread.join(timeout=2.0) + + def _pump_operation_loop(self): + """泵运行主循环""" + print("Pump operation loop started") # Debug print + + while self._running and self._pump_state == "Running": + try: + # Calculate flow rate adjustment + flow_diff = self._target_flow_rate - self._flow_rate + + # Adjust flow rate more aggressively (50% of difference) + adjustment = flow_diff * 0.5 + self._flow_rate += adjustment + + # Ensure flow rate is within bounds + self._flow_rate = max(0.1, min(self._max_flow_rate, self._flow_rate)) + + # Update status based on flow rate + if abs(flow_diff) < 0.1: + self._status = "Running at Target Flow Rate" + else: + self._status = "Adjusting Flow Rate" + + # Calculate volume increment + volume_increment = (self._flow_rate / 60.0) # mL/s + self._total_volume += volume_increment + + # Update time tracking + self._time_spent = datetime.now() - self._start_time + if self._transfer_time > 0: + remaining = self._transfer_time - self._time_spent.total_seconds() + self._time_remaining = timedelta(seconds=max(0, remaining)) + + # Check completion + if self._total_volume >= self._transfer_volume: + self._status = "Transfer Completed" + self._pump_state = "Stopped" + self._running = False + break + + # Update pressure + self._pressure = (self._flow_rate / self._max_flow_rate) * self._max_pressure + + print(f"Debug - Flow: {self._flow_rate:.1f}, Volume: {self._total_volume:.1f}") # Debug print + + time.sleep(1.0) + + except Exception as e: + print(f"Error in pump operation: {str(e)}") + self._status = "Error in pump operation" + self._pump_state = "Stopped" + self._running = False + break + + def get_status_info(self) -> dict: + """ + 获取完整的设备状态信息 + + Returns: + dict: 包含所有设备状态的字典 + """ + return { + "status": self._status, + "pump_state": self._pump_state, + "flow_rate": self._flow_rate, + "target_flow_rate": self._target_flow_rate, + "pressure": self._pressure, + "total_volume": self._total_volume, + "max_flow_rate": self._max_flow_rate, + "max_pressure": self._max_pressure, + "current_device": self._current_device, + "from_vessel": self._from_vessel, + "to_vessel": self._to_vessel, + "transfer_volume": self._transfer_volume, + "amount": self._amount, + "transfer_time": self._transfer_time, + "is_viscous": self._is_viscous, + "rinsing_solvent": self._rinsing_solvent, + "rinsing_volume": self._rinsing_volume, + "rinsing_repeats": self._rinsing_repeats, + "is_solid": self._is_solid, + "time_spent": self._time_spent.total_seconds(), + "time_remaining": self._time_remaining.total_seconds() + } + + +# 用于测试的主函数 +if __name__ == "__main__": + pump = MockPump() + + # 测试基本功能 + print("启动泵设备测试...") + print(f"初始状态: {pump.get_status_info()}") + + # 设置流速并启动 + pump.set_flow_rate(50.0) + pump.start_pump() + + # 模拟运行10秒 + for i in range(10): + time.sleep(1) + print(f"第{i+1}秒: 流速={pump.flow_rate:.1f}mL/min, 压力={pump.pressure:.2f}bar, 状态={pump.status}") + + # 测试方向切换 + print("切换泵方向...") + + + pump.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/mock/mock_rotavap.py b/unilabos/devices/mock/mock_rotavap.py new file mode 100644 index 00000000..9b2ea914 --- /dev/null +++ b/unilabos/devices/mock/mock_rotavap.py @@ -0,0 +1,390 @@ +import time +import threading +import json + + +class MockRotavap: + """ + 模拟旋转蒸发器设备类 + + 这个类模拟了一个实验室旋转蒸发器的行为,包括旋转控制、 + 真空泵控制、温度控制等功能。参考了现有的 RotavapOne 实现。 + """ + + def __init__(self, port: str = "MOCK"): + """ + 初始化MockRotavap实例 + + Args: + port (str): 设备端口,默认为"MOCK"表示模拟设备 + """ + self.port = port + + # 设备基本状态属性 + self._status: str = "Idle" # 设备状态:Idle, Running, Error, Stopped + + # 旋转相关属性 + self._rotate_state: str = "Stopped" # 旋转状态:Running, Stopped + self._rotate_time: float = 0.0 # 旋转剩余时间 (秒) + self._rotate_speed: float = 0.0 # 旋转速度 (rpm) + self._max_rotate_speed: float = 300.0 # 最大旋转速度 (rpm) + + # 真空泵相关属性 + self._pump_state: str = "Stopped" # 泵状态:Running, Stopped + self._pump_time: float = 0.0 # 泵剩余时间 (秒) + self._vacuum_level: float = 0.0 # 真空度 (mbar) + self._target_vacuum: float = 50.0 # 目标真空度 (mbar) + + # 温度相关属性 + self._temperature: float = 25.0 # 水浴温度 (°C) + self._target_temperature: float = 25.0 # 目标温度 (°C) + self._max_temperature: float = 180.0 # 最大温度 (°C) + + # 运行控制线程 + self._operation_thread = None + self._running = False + self._thread_lock = threading.Lock() + + # 操作成功标志 + self.success: str = "True" # 使用字符串而不是布尔值 + + # ==================== 状态属性 ==================== + # 这些属性会被Uni-Lab系统自动识别并定时对外广播 + + @property + def status(self) -> str: + return self._status + + @property + def rotate_state(self) -> str: + return self._rotate_state + + @property + def rotate_time(self) -> float: + return self._rotate_time + + @property + def rotate_speed(self) -> float: + return self._rotate_speed + + @property + def pump_state(self) -> str: + return self._pump_state + + @property + def pump_time(self) -> float: + return self._pump_time + + @property + def vacuum_level(self) -> float: + return self._vacuum_level + + @property + def temperature(self) -> float: + return self._temperature + + @property + def target_temperature(self) -> float: + return self._target_temperature + + # ==================== 设备控制方法 ==================== + # 这些方法需要在注册表中添加,会作为ActionServer接受控制指令 + + def set_timer(self, command: str) -> str: + """ + 设置定时器 - 兼容现有RotavapOne接口 + + Args: + command (str): JSON格式的命令字符串,包含rotate_time和pump_time + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + try: + timer = json.loads(command) + rotate_time = timer.get("rotate_time", 0) + pump_time = timer.get("pump_time", 0) + + self.success = "False" + self._rotate_time = float(rotate_time) + self._pump_time = float(pump_time) + self.success = "True" + + self._status = "Timer Set" + return "Success" + + except (json.JSONDecodeError, ValueError, KeyError) as e: + self._status = f"Error: Invalid command format - {str(e)}" + self.success = "False" + return "Error" + + def set_rotate_time(self, time_seconds: float) -> str: + """ + 设置旋转时间 + + Args: + time_seconds (float): 旋转时间 (秒) + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + self.success = "False" + self._rotate_time = max(0.0, float(time_seconds)) + self.success = "True" + self._status = "Rotate time set" + return "Success" + + def set_pump_time(self, time_seconds: float) -> str: + """ + 设置泵时间 + + Args: + time_seconds (float): 泵时间 (秒) + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + self.success = "False" + self._pump_time = max(0.0, float(time_seconds)) + self.success = "True" + self._status = "Pump time set" + return "Success" + + def set_rotate_speed(self, speed: float) -> str: + """ + 设置旋转速度 + + Args: + speed (float): 旋转速度 (rpm) + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + if speed < 0 or speed > self._max_rotate_speed: + self._status = f"Error: Speed out of range (0-{self._max_rotate_speed})" + return "Error" + + self._rotate_speed = speed + self._status = "Rotate speed set" + return "Success" + + def set_temperature(self, temperature: float) -> str: + """ + 设置水浴温度 + + Args: + temperature (float): 目标温度 (°C) + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + if temperature < 0 or temperature > self._max_temperature: + self._status = f"Error: Temperature out of range (0-{self._max_temperature})" + return "Error" + + self._target_temperature = temperature + self._status = "Temperature set" + + # 启动操作线程以开始温度控制 + self._start_operation() + + return "Success" + + def start_rotation(self) -> str: + """ + 启动旋转 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + if self._rotate_time <= 0: + self._status = "Error: No rotate time set" + return "Error" + + self._rotate_state = "Running" + self._status = "Rotation started" + return "Success" + + def start_pump(self) -> str: + """ + 启动真空泵 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + + if self._pump_time <= 0: + self._status = "Error: No pump time set" + return "Error" + + self._pump_state = "Running" + self._status = "Pump started" + return "Success" + + def stop_all_operations(self) -> str: + """ + 停止所有操作 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._rotate_state = "Stopped" + self._pump_state = "Stopped" + self._stop_operation() + self._rotate_time = 0.0 + self._pump_time = 0.0 + self._vacuum_level = 0.0 + self._status = "All operations stopped" + return "Success" + + def emergency_stop(self) -> str: + """ + 紧急停止 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._status = "Emergency Stop" + self.stop_all_operations() + return "Success" + + # ==================== 内部控制方法 ==================== + + def _start_operation(self): + """ + 启动操作线程 + + 这个方法启动一个后台线程来模拟旋蒸的实际运行过程。 + """ + with self._thread_lock: + if not self._running: + self._running = True + self._operation_thread = threading.Thread(target=self._operation_loop) + self._operation_thread.daemon = True + self._operation_thread.start() + + def _stop_operation(self): + """ + 停止操作线程 + + 安全地停止后台运行线程并等待其完成。 + """ + with self._thread_lock: + self._running = False + if self._operation_thread and self._operation_thread.is_alive(): + self._operation_thread.join(timeout=2.0) + + def _operation_loop(self): + """ + 操作主循环 + + 这个方法在后台线程中运行,模拟真实旋蒸的工作过程: + 1. 时间倒计时 + 2. 温度控制 + 3. 真空度控制 + 4. 状态更新 + """ + while self._running: + try: + # 处理旋转时间倒计时 + if self._rotate_time > 0: + self._rotate_state = "Running" + self._rotate_time = max(0.0, self._rotate_time - 1.0) + else: + self._rotate_state = "Stopped" + + # 处理泵时间倒计时 + if self._pump_time > 0: + self._pump_state = "Running" + self._pump_time = max(0.0, self._pump_time - 1.0) + # 模拟真空度变化 + if self._vacuum_level > self._target_vacuum: + self._vacuum_level = max(self._target_vacuum, self._vacuum_level - 5.0) + else: + self._pump_state = "Stopped" + # 真空度逐渐回升 + self._vacuum_level = min(1013.25, self._vacuum_level + 2.0) + + # 模拟温度控制 + temp_diff = self._target_temperature - self._temperature + if abs(temp_diff) > 0.5: + if temp_diff > 0: + self._temperature += min(1.0, temp_diff * 0.1) + else: + self._temperature += max(-1.0, temp_diff * 0.1) + + # 更新整体状态 + if self._rotate_state == "Running" or self._pump_state == "Running": + self._status = "Operating" + elif self._rotate_time > 0 or self._pump_time > 0: + self._status = "Ready" + else: + self._status = "Idle" + + # 等待1秒后继续下一次循环 + time.sleep(1.0) + + except Exception as e: + self._status = f"Error in operation: {str(e)}" + break + + # 循环结束时的清理工作 + self._status = "Idle" + + def get_status_info(self) -> dict: + """ + 获取完整的设备状态信息 + + Returns: + dict: 包含所有设备状态的字典 + """ + return { + "status": self._status, + "rotate_state": self._rotate_state, + "rotate_time": self._rotate_time, + "rotate_speed": self._rotate_speed, + "pump_state": self._pump_state, + "pump_time": self._pump_time, + "vacuum_level": self._vacuum_level, + "temperature": self._temperature, + "target_temperature": self._target_temperature, + "success": self.success, + } + + +# 用于测试的主函数 +if __name__ == "__main__": + rotavap = MockRotavap() + + # 测试基本功能 + print("启动旋转蒸发器测试...") + print(f"初始状态: {rotavap.get_status_info()}") + + # 设置定时器 + timer_command = '{"rotate_time": 300, "pump_time": 600}' + rotavap.set_timer(timer_command) + + # 设置温度和转速 + rotavap.set_temperature(60.0) + rotavap.set_rotate_speed(120.0) + + # 启动操作 + rotavap.start_rotation() + rotavap.start_pump() + + # 模拟运行10秒 + for i in range(10): + time.sleep(1) + print( + f"第{i+1}秒: 旋转={rotavap.rotate_time:.0f}s, 泵={rotavap.pump_time:.0f}s, " + f"温度={rotavap.temperature:.1f}°C, 真空={rotavap.vacuum_level:.1f}mbar" + ) + + rotavap.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/mock/mock_separator.py b/unilabos/devices/mock/mock_separator.py new file mode 100644 index 00000000..222cb2ed --- /dev/null +++ b/unilabos/devices/mock/mock_separator.py @@ -0,0 +1,399 @@ +import time +import threading +from datetime import datetime, timedelta + +class MockSeparator: + def __init__(self, port: str = "MOCK"): + self.port = port + + # 基本状态属性 + self._status: str = "Idle" # 当前总体状态 + self._valve_state: str = "Closed" # 阀门状态:Open 或 Closed + self._settling_time: float = 0.0 # 静置时间(秒) + + # 搅拌相关属性 + self._shake_time: float = 0.0 # 剩余摇摆时间(秒) + self._shake_status: str = "Not Shaking" # 摇摆状态 + + # 用于后台模拟 shake 动作 + self._operation_thread = None + self._thread_lock = threading.Lock() + self._running = False + + # Separate action 相关属性 + self._current_device: str = "MockSeparator1" + self._purpose: str = "" # wash or extract + self._product_phase: str = "" # top or bottom + self._from_vessel: str = "" + self._separation_vessel: str = "" + self._to_vessel: str = "" + self._waste_phase_to_vessel: str = "" + self._solvent: str = "" + self._solvent_volume: float = 0.0 + self._through: str = "" + self._repeats: int = 1 + self._stir_time: float = 0.0 + self._stir_speed: float = 0.0 + self._time_spent = timedelta() + self._time_remaining = timedelta() + self._start_time = datetime.now() # 添加这一行 + + @property + def current_device(self) -> str: + return self._current_device + + @property + def purpose(self) -> str: + return self._purpose + + @property + def valve_state(self) -> str: + return self._valve_state + + @property + def settling_time(self) -> float: + return self._settling_time + + @property + def status(self) -> str: + return self._status + + @property + def shake_time(self) -> float: + with self._thread_lock: + return self._shake_time + + @property + def shake_status(self) -> str: + with self._thread_lock: + return self._shake_status + + @property + def product_phase(self) -> str: + return self._product_phase + + @property + def from_vessel(self) -> str: + return self._from_vessel + + @property + def separation_vessel(self) -> str: + return self._separation_vessel + + @property + def to_vessel(self) -> str: + return self._to_vessel + + @property + def waste_phase_to_vessel(self) -> str: + return self._waste_phase_to_vessel + + @property + def solvent(self) -> str: + return self._solvent + + @property + def solvent_volume(self) -> float: + return self._solvent_volume + + @property + def through(self) -> str: + return self._through + + @property + def repeats(self) -> int: + return self._repeats + + @property + def stir_time(self) -> float: + return self._stir_time + + @property + def stir_speed(self) -> float: + return self._stir_speed + + @property + def time_spent(self) -> float: + if self._running: + self._time_spent = datetime.now() - self._start_time + return self._time_spent.total_seconds() + + @property + def time_remaining(self) -> float: + if self._running: + elapsed = (datetime.now() - self._start_time).total_seconds() + total_time = (self._stir_time + self._settling_time + 10) * self._repeats + remain = max(0, total_time - elapsed) + self._time_remaining = timedelta(seconds=remain) + return self._time_remaining.total_seconds() + + def separate(self, purpose: str, product_phase: str, from_vessel: str, + separation_vessel: str, to_vessel: str, waste_phase_to_vessel: str = "", + solvent: str = "", solvent_volume: float = 0.0, through: str = "", + repeats: int = 1, stir_time: float = 0.0, stir_speed: float = 0.0, + settling_time: float = 60.0) -> dict: + """ + 执行分离操作 + """ + with self._thread_lock: + # 检查是否已经在运行 + if self._running: + return { + "success": False, + "status": "Error: Operation already in progress" + } + # 必填参数验证 + if not all([from_vessel, separation_vessel, to_vessel]): + self._status = "Error: Missing required vessel parameters" + return {"success": False} + # 验证参数 + if purpose not in ["wash", "extract"]: + self._status = "Error: Invalid purpose" + return {"success": False} + + if product_phase not in ["top", "bottom"]: + self._status = "Error: Invalid product phase" + return {"success": False} + # 数值参数验证 + try: + solvent_volume = float(solvent_volume) + repeats = int(repeats) + stir_time = float(stir_time) + stir_speed = float(stir_speed) + settling_time = float(settling_time) + except ValueError: + self._status = "Error: Invalid numeric parameters" + return {"success": False} + + # 设置参数 + self._purpose = purpose + self._product_phase = product_phase + self._from_vessel = from_vessel + self._separation_vessel = separation_vessel + self._to_vessel = to_vessel + self._waste_phase_to_vessel = waste_phase_to_vessel + self._solvent = solvent + self._solvent_volume = float(solvent_volume) + self._through = through + self._repeats = int(repeats) + self._stir_time = float(stir_time) + self._stir_speed = float(stir_speed) + self._settling_time = float(settling_time) + + # 重置计时器 + self._start_time = datetime.now() + self._time_spent = timedelta() + total_time = (self._stir_time + self._settling_time + 10) * self._repeats + self._time_remaining = timedelta(seconds=total_time) + + # 启动分离操作 + self._status = "Starting Separation" + self._running = True + + # 在锁内创建和启动线程 + self._operation_thread = threading.Thread(target=self._operation_loop) + self._operation_thread.daemon = True + self._operation_thread.start() + + # 等待确认操作已经开始 + time.sleep(0.1) # 短暂等待确保操作线程已启动 + + return { + "success": True, + "status": self._status, + "current_device": self._current_device, + "time_spent": self._time_spent.total_seconds(), + "time_remaining": self._time_remaining.total_seconds() + } + + def shake(self, shake_time: float) -> str: + """ + 模拟 shake(搅拌)操作: + - 进入 "Shaking" 状态,倒计时 shake_time 秒 + - shake 结束后,进入 "Settling" 状态,静置时间固定为 5 秒 + - 最后恢复为 Idle + """ + try: + shake_time = float(shake_time) + except ValueError: + self._status = "Error: Invalid shake time" + return "Error" + + with self._thread_lock: + self._status = "Shaking" + self._settling_time = 0.0 + self._shake_time = shake_time + self._shake_status = "Shaking" + + def _run_shake(): + remaining = shake_time + while remaining > 0: + time.sleep(1) + remaining -= 1 + with self._thread_lock: + self._shake_time = remaining + with self._thread_lock: + self._status = "Settling" + self._settling_time = 60.0 # 固定静置时间为60秒 + self._shake_status = "Settling" + while True: + with self._thread_lock: + if self._settling_time <= 0: + self._status = "Idle" + self._shake_status = "Idle" + break + time.sleep(1) + with self._thread_lock: + self._settling_time = max(0.0, self._settling_time - 1) + + self._operation_thread = threading.Thread(target=_run_shake) + self._operation_thread.daemon = True + self._operation_thread.start() + return "Success" + + def set_valve(self, command: str) -> str: + """ + 阀门控制命令:传入 "open" 或 "close" + """ + + command = command.lower() + if command == "open": + self._valve_state = "Open" + self._status = "Valve Opened" + elif command == "close": + self._valve_state = "Closed" + self._status = "Valve Closed" + else: + self._status = "Error: Invalid valve command" + return "Error" + return "Success" + + def _operation_loop(self): + """分离操作主循环""" + try: + current_repeat = 1 + + # 立即更新状态,确保不会停留在Starting Separation + with self._thread_lock: + self._status = f"Separation Cycle {current_repeat}/{self._repeats}" + + while self._running and current_repeat <= self._repeats: + # 第一步:搅拌 + if self._stir_time > 0: + with self._thread_lock: + self._status = f"Stirring (Repeat {current_repeat}/{self._repeats})" + remaining_stir = self._stir_time + while remaining_stir > 0 and self._running: + time.sleep(1) + remaining_stir -= 1 + + # 第二步:静置 + if self._settling_time > 0: + with self._thread_lock: + self._status = f"Settling (Repeat {current_repeat}/{self._repeats})" + remaining_settle = self._settling_time + while remaining_settle > 0 and self._running: + time.sleep(1) + remaining_settle -= 1 + + # 第三步:打开阀门排出 + with self._thread_lock: + self._valve_state = "Open" + self._status = f"Draining (Repeat {current_repeat}/{self._repeats})" + + # 模拟排出时间(5秒) + time.sleep(10) + + # 关闭阀门 + with self._thread_lock: + self._valve_state = "Closed" + + # 检查是否继续下一次重复 + if current_repeat < self._repeats: + current_repeat += 1 + else: + with self._thread_lock: + self._status = "Separation Complete" + break + + except Exception as e: + with self._thread_lock: + self._status = f"Error in separation: {str(e)}" + finally: + with self._thread_lock: + self._running = False + self._valve_state = "Closed" + if self._status == "Starting Separation": + self._status = "Error: Operation failed to start" + elif self._status != "Separation Complete": + self._status = "Stopped" + + def stop_operations(self) -> str: + """停止任何正在执行的操作""" + with self._thread_lock: + self._running = False + if self._operation_thread and self._operation_thread.is_alive(): + self._operation_thread.join(timeout=1.0) + self._operation_thread = None + self._settling_time = 0.0 + self._status = "Idle" + self._shake_status = "Idle" + self._shake_time = 0.0 + self._time_remaining = timedelta() + return "Success" + + def get_status_info(self) -> dict: + """获取当前设备状态信息""" + with self._thread_lock: + current_time = datetime.now() + if self._start_time: + self._time_spent = current_time - self._start_time + + return { + "status": self._status, + "valve_state": self._valve_state, + "settling_time": self._settling_time, + "shake_time": self._shake_time, + "shake_status": self._shake_status, + "current_device": self._current_device, + "purpose": self._purpose, + "product_phase": self._product_phase, + "from_vessel": self._from_vessel, + "separation_vessel": self._separation_vessel, + "to_vessel": self._to_vessel, + "waste_phase_to_vessel": self._waste_phase_to_vessel, + "solvent": self._solvent, + "solvent_volume": self._solvent_volume, + "through": self._through, + "repeats": self._repeats, + "stir_time": self._stir_time, + "stir_speed": self._stir_speed, + "time_spent": self._time_spent.total_seconds(), + "time_remaining": self._time_remaining.total_seconds() + } + + +# 主函数用于测试 +if __name__ == "__main__": + separator = MockSeparator() + + print("启动简单版分离器测试...") + print("初始状态:", separator.get_status_info()) + + # 触发 shake 操作,模拟 10 秒的搅拌 + print("执行 shake 操作...") + print(separator.shake(10.0)) + + # 循环显示状态变化 + for i in range(20): + time.sleep(1) + info = separator.get_status_info() + print( + f"第{i+1}秒: 状态={info['status']}, 静置时间={info['settling_time']:.1f}秒, " + f"阀门状态={info['valve_state']}, shake_time={info['shake_time']:.1f}, " + f"shake_status={info['shake_status']}" + ) + + # 模拟打开阀门 + print("打开阀门...", separator.set_valve("open")) + print("最终状态:", separator.get_status_info()) diff --git a/unilabos/devices/mock/mock_solenoid_valve.py b/unilabos/devices/mock/mock_solenoid_valve.py new file mode 100644 index 00000000..0f0fbe55 --- /dev/null +++ b/unilabos/devices/mock/mock_solenoid_valve.py @@ -0,0 +1,89 @@ +import time + + +class MockSolenoidValve: + """ + 模拟电磁阀设备类 - 简化版本 + + 这个类提供了电磁阀的基本功能:开启、关闭和状态查询 + """ + + def __init__(self, port: str = "MOCK"): + """ + 初始化MockSolenoidValve实例 + + Args: + port (str): 设备端口,默认为"MOCK"表示模拟设备 + """ + self.port = port + self._status: str = "Idle" + self._valve_status: str = "Closed" # 阀门位置:Open, Closed + + @property + def status(self) -> str: + """设备状态 - 会被自动识别的设备属性""" + return self._status + + @property + def valve_status(self) -> str: + """阀门状态""" + return self._valve_status + + def set_valve_status(self, status: str) -> str: + """ + 设置阀门位置 + + Args: + position (str): 阀门位置,可选值:"Open", "Closed" + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + if status not in ["Open", "Closed"]: + self._status = "Error: Invalid position" + return "Error" + + self._status = "Moving" + time.sleep(1) # 模拟阀门动作时间 + + self._valve_status = status + self._status = "Idle" + return "Success" + + def open_valve(self) -> str: + """打开阀门""" + return self.set_valve_status("Open") + + def close_valve(self) -> str: + """关闭阀门""" + return self.set_valve_status("Closed") + + def get_valve_status(self) -> str: + """获取阀门位置""" + return self._valve_status + + def is_open(self) -> bool: + """检查阀门是否打开""" + return self._valve_status == "Open" + + def is_closed(self) -> bool: + """检查阀门是否关闭""" + return self._valve_status == "Closed" + + +# 用于测试的主函数 +if __name__ == "__main__": + valve = MockSolenoidValve() + + print("启动电磁阀测试...") + print(f"初始状态: 位置={valve.valve_status}, 状态={valve.status}") + + # 测试开启阀门 + valve.open_valve() + print(f"开启后: 位置={valve.valve_status}, 状态={valve.status}") + + # 测试关闭阀门 + valve.close_valve() + print(f"关闭后: 位置={valve.valve_status}, 状态={valve.status}") + + print("测试完成") diff --git a/unilabos/devices/mock/mock_stirrer.py b/unilabos/devices/mock/mock_stirrer.py new file mode 100644 index 00000000..a1f2c51d --- /dev/null +++ b/unilabos/devices/mock/mock_stirrer.py @@ -0,0 +1,307 @@ +import time +import threading + + +class MockStirrer: + def __init__(self, port: str = "MOCK"): + self.port = port + + # 设备基本状态属性 + self._status: str = "Idle" # 设备状态:Idle, Running, Error, Stopped + + # 搅拌相关属性 + self._stir_speed: float = 0.0 # 当前搅拌速度 (rpm) + self._target_stir_speed: float = 0.0 # 目标搅拌速度 (rpm) + self._max_stir_speed: float = 2000.0 # 最大搅拌速度 (rpm) + self._stir_state: str = "Stopped" # 搅拌状态:Running, Stopped + + # 温度相关属性 + self._temperature: float = 25.0 # 当前温度 (°C) + self._target_temperature: float = 25.0 # 目标温度 (°C) + self._max_temperature: float = 300.0 # 最大温度 (°C) + self._heating_state: str = "Off" # 加热状态:On, Off + self._heating_power: float = 0.0 # 加热功率百分比 0-100 + + # 运行控制线程 + self._operation_thread = None + self._running = False + self._thread_lock = threading.Lock() + + # ==================== 状态属性 ==================== + # 这些属性会被Uni-Lab系统自动识别并定时对外广播 + + @property + def status(self) -> str: + return self._status + + @property + def stir_speed(self) -> float: + return self._stir_speed + + @property + def target_stir_speed(self) -> float: + return self._target_stir_speed + + @property + def stir_state(self) -> str: + return self._stir_state + + @property + def temperature(self) -> float: + """ + 当前温度 + + Returns: + float: 当前温度 (°C) + """ + return self._temperature + + @property + def target_temperature(self) -> float: + """ + 目标温度 + + Returns: + float: 目标温度 (°C) + """ + return self._target_temperature + + @property + def heating_state(self) -> str: + return self._heating_state + + @property + def heating_power(self) -> float: + return self._heating_power + + @property + def max_stir_speed(self) -> float: + return self._max_stir_speed + + @property + def max_temperature(self) -> float: + return self._max_temperature + + # ==================== 设备控制方法 ==================== + # 这些方法需要在注册表中添加,会作为ActionServer接受控制指令 + + def set_stir_speed(self, speed: float) -> str: + + speed = float(speed) # 确保传入的速度是浮点数 + + if speed < 0 or speed > self._max_stir_speed: + self._status = f"Error: Speed out of range (0-{self._max_stir_speed})" + return "Error" + + self._target_stir_speed = speed + self._status = "Setting Stir Speed" + + # 如果设置了非零速度,启动搅拌 + if speed > 0: + self._stir_state = "Running" + else: + self._stir_state = "Stopped" + + return "Success" + + def set_temperature(self, temperature: float) -> str: + temperature = float(temperature) # 确保传入的温度是浮点数 + + if temperature < 0 or temperature > self._max_temperature: + self._status = f"Error: Temperature out of range (0-{self._max_temperature})" + return "Error" + + self._target_temperature = temperature + self._status = "Setting Temperature" + + return "Success" + + def start_stirring(self) -> str: + + if self._target_stir_speed <= 0: + self._status = "Error: No target speed set" + return "Error" + + self._stir_state = "Running" + self._status = "Stirring Started" + return "Success" + + def stop_stirring(self) -> str: + self._stir_state = "Stopped" + self._target_stir_speed = 0.0 + self._status = "Stirring Stopped" + return "Success" + + def heating_control(self, heating_state: str = "On") -> str: + + if heating_state not in ["On", "Off"]: + self._status = "Error: Invalid heating state" + return "Error" + + self._heating_state = heating_state + + if heating_state == "On": + self._status = "Heating On" + else: + self._status = "Heating Off" + self._heating_power = 0.0 + + return "Success" + + def stop_all_operations(self) -> str: + self._stir_state = "Stopped" + self._heating_state = "Off" + self._stop_operation() + self._stir_speed = 0.0 + self._target_stir_speed = 0.0 + self._heating_power = 0.0 + self._status = "All operations stopped" + return "Success" + + def emergency_stop(self) -> str: + """ + 紧急停止 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._status = "Emergency Stop" + self.stop_all_operations() + return "Success" + + # ==================== 内部控制方法 ==================== + + def _start_operation(self): + with self._thread_lock: + if not self._running: + self._running = True + self._operation_thread = threading.Thread(target=self._operation_loop) + self._operation_thread.daemon = True + self._operation_thread.start() + + def _stop_operation(self): + """ + 停止操作线程 + + 安全地停止后台运行线程并等待其完成。 + """ + with self._thread_lock: + self._running = False + if self._operation_thread and self._operation_thread.is_alive(): + self._operation_thread.join(timeout=2.0) + + def _operation_loop(self): + while self._running: + try: + # 处理搅拌速度控制 + if self._stir_state == "Running": + speed_diff = self._target_stir_speed - self._stir_speed + + if abs(speed_diff) < 1.0: # 速度接近目标值 + self._stir_speed = self._target_stir_speed + if self._stir_speed > 0: + self._status = "Stirring at Target Speed" + else: + # 模拟速度调节,每秒调整10%的差值 + adjustment = speed_diff * 0.1 + self._stir_speed += adjustment + self._status = "Adjusting Stir Speed" + + # 确保速度在合理范围内 + self._stir_speed = max(0.0, min(self._max_stir_speed, self._stir_speed)) + else: + # 搅拌停止时,速度逐渐降为0 + if self._stir_speed > 0: + self._stir_speed = max(0.0, self._stir_speed - 50.0) # 每秒减少50rpm + + # 处理温度控制 + if self._heating_state == "On": + temp_diff = self._target_temperature - self._temperature + + if abs(temp_diff) < 0.5: # 温度接近目标值 + self._heating_power = 20.0 # 维持温度的最小功率 + elif temp_diff > 0: # 需要加热 + # 根据温差调整加热功率 + if temp_diff > 50: + self._heating_power = 100.0 + elif temp_diff > 20: + self._heating_power = 80.0 + elif temp_diff > 10: + self._heating_power = 60.0 + else: + self._heating_power = 40.0 + + # 模拟加热过程 + heating_rate = self._heating_power / 100.0 * 1.5 # 最大每秒升温1.5度 + self._temperature += heating_rate + else: # 目标温度低于当前温度 + self._heating_power = 0.0 + # 自然冷却 + self._temperature -= 0.1 + else: + self._heating_power = 0.0 + # 自然冷却到室温 + if self._temperature > 25.0: + self._temperature -= 0.2 + + # 限制温度范围 + self._temperature = max(20.0, min(self._max_temperature, self._temperature)) + + # 更新整体状态 + if self._stir_state == "Running" and self._heating_state == "On": + self._status = "Stirring and Heating" + elif self._stir_state == "Running": + self._status = "Stirring Only" + elif self._heating_state == "On": + self._status = "Heating Only" + else: + self._status = "Idle" + + # 等待1秒后继续下一次循环 + time.sleep(1.0) + + except Exception as e: + self._status = f"Error in operation: {str(e)}" + break + + # 循环结束时的清理工作 + self._status = "Idle" + + def get_status_info(self) -> dict: + return { + "status": self._status, + "stir_speed": self._stir_speed, + "target_stir_speed": self._target_stir_speed, + "stir_state": self._stir_state, + "temperature": self._temperature, + "target_temperature": self._target_temperature, + "heating_state": self._heating_state, + "heating_power": self._heating_power, + "max_stir_speed": self._max_stir_speed, + "max_temperature": self._max_temperature, + } + + +# 用于测试的主函数 +if __name__ == "__main__": + stirrer = MockStirrer() + + # 测试基本功能 + print("启动搅拌器测试...") + print(f"初始状态: {stirrer.get_status_info()}") + + # 设置搅拌速度和温度 + stirrer.set_stir_speed(800.0) + stirrer.set_temperature(60.0) + stirrer.heating_control("On") + + # 模拟运行15秒 + for i in range(15): + time.sleep(1) + print( + f"第{i+1}秒: 速度={stirrer.stir_speed:.0f}rpm, 温度={stirrer.temperature:.1f}°C, " + f"功率={stirrer.heating_power:.1f}%, 状态={stirrer.status}" + ) + + stirrer.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/mock/mock_stirrer_new.py b/unilabos/devices/mock/mock_stirrer_new.py new file mode 100644 index 00000000..ac429db5 --- /dev/null +++ b/unilabos/devices/mock/mock_stirrer_new.py @@ -0,0 +1,229 @@ +import time +import threading +from datetime import datetime, timedelta + +class MockStirrer_new: + def __init__(self, port: str = "MOCK"): + self.port = port + + # 基本状态属性 + self._status: str = "Idle" + self._vessel: str = "" + self._purpose: str = "" + + # 搅拌相关属性 + self._stir_speed: float = 0.0 + self._target_stir_speed: float = 0.0 + self._max_stir_speed: float = 2000.0 + self._stir_state: str = "Stopped" + + # 计时相关 + self._stir_time: float = 0.0 + self._settling_time: float = 0.0 + self._start_time = datetime.now() + self._time_remaining = timedelta() + + # 运行控制 + self._operation_thread = None + self._running = False + self._thread_lock = threading.Lock() + + # 创建操作线程 + self._operation_thread = threading.Thread(target=self._operation_loop) + self._operation_thread.daemon = True + self._operation_thread.start() + + # ==================== 状态属性 ==================== + @property + def status(self) -> str: + return self._status + + @property + def stir_speed(self) -> float: + return self._stir_speed + + @property + def target_stir_speed(self) -> float: + return self._target_stir_speed + + @property + def stir_state(self) -> str: + return self._stir_state + + @property + def vessel(self) -> str: + return self._vessel + + @property + def purpose(self) -> str: + return self._purpose + + @property + def stir_time(self) -> float: + return self._stir_time + + @property + def settling_time(self) -> float: + return self._settling_time + + @property + def max_stir_speed(self) -> float: + return self._max_stir_speed + + @property + def progress(self) -> float: + """返回当前操作的进度(0-100)""" + if not self._running: + return 0.0 + elapsed = (datetime.now() - self._start_time).total_seconds() + total_time = self._stir_time + self._settling_time + if total_time <= 0: + return 100.0 + return min(100.0, (elapsed / total_time) * 100) + + # ==================== Action Server 方法 ==================== + def start_stir(self, vessel: str, stir_speed: float = 0.0, purpose: str = "") -> dict: + """ + StartStir.action 对应的方法 + """ + with self._thread_lock: + if self._running: + return { + "success": False, + "message": "Operation already in progress" + } + + try: + # 重置所有参数 + self._vessel = vessel + self._purpose = purpose + self._stir_time = 0.0 # 连续搅拌模式下不设置搅拌时间 + self._settling_time = 0.0 + self._start_time = datetime.now() # 重置开始时间 + + if stir_speed > 0: + self._target_stir_speed = min(stir_speed, self._max_stir_speed) + + self._stir_state = "Running" + self._status = "Stirring Started" + self._running = True + + return { + "success": True, + "message": "Stirring started successfully" + } + + except Exception as e: + return { + "success": False, + "message": f"Error: {str(e)}" + } + + def stir(self, stir_time: float, stir_speed: float, settling_time: float) -> dict: + """ + Stir.action 对应的方法 + """ + with self._thread_lock: + try: + # 如果已经在运行,先停止当前操作 + if self._running: + self._running = False + self._stir_state = "Stopped" + self._target_stir_speed = 0.0 + time.sleep(0.1) # 给一个短暂的停止时间 + + + # 重置所有参数 + self._stir_time = float(stir_time) + self._settling_time = float(settling_time) + self._target_stir_speed = min(float(stir_speed), self._max_stir_speed) + self._start_time = datetime.now() # 重置开始时间 + self._stir_state = "Running" + self._status = "Stirring" + self._running = True + + return {"success": True} + + except ValueError: + self._status = "Error: Invalid parameters" + return {"success": False} + + def stop_stir(self, vessel: str) -> dict: + """ + StopStir.action 对应的方法 + """ + with self._thread_lock: + if vessel != self._vessel: + return { + "success": False, + "message": "Vessel mismatch" + } + + self._running = False + self._stir_state = "Stopped" + self._target_stir_speed = 0.0 + self._status = "Stirring Stopped" + + return { + "success": True, + "message": "Stirring stopped successfully" + } + + # ==================== 内部控制方法 ==================== + + def _operation_loop(self): + """操作主循环""" + while True: + try: + current_time = datetime.now() + + with self._thread_lock: # 添加锁保护 + if self._stir_state == "Running": + # 实际搅拌逻辑 + speed_diff = self._target_stir_speed - self._stir_speed + if abs(speed_diff) > 0.1: + adjustment = speed_diff * 0.1 + self._stir_speed += adjustment + else: + self._stir_speed = self._target_stir_speed + + # 更新进度 + if self._running: + if self._stir_time > 0: # 定时搅拌模式 + elapsed = (current_time - self._start_time).total_seconds() + if elapsed >= self._stir_time + self._settling_time: + self._running = False + self._stir_state = "Stopped" + self._target_stir_speed = 0.0 + self._stir_speed = 0.0 + self._status = "Stirring Complete" + elif elapsed >= self._stir_time: + self._status = "Settling" + else: # 连续搅拌模式 + self._status = "Stirring" + else: + # 停止状态下慢慢降低速度 + if self._stir_speed > 0: + self._stir_speed = max(0, self._stir_speed - 20.0) + + time.sleep(0.1) + + except Exception as e: + print(f"Error in operation loop: {str(e)}") # 添加错误输出 + self._status = f"Error: {str(e)}" + time.sleep(1.0) # 错误发生时等待较长时间 + + def get_status_info(self) -> dict: + """获取设备状态信息""" + return { + "status": self._status, + "vessel": self._vessel, + "purpose": self._purpose, + "stir_speed": self._stir_speed, + "target_stir_speed": self._target_stir_speed, + "stir_state": self._stir_state, + "stir_time": self._stir_time, # 添加 + "settling_time": self._settling_time, # 添加 + "progress": self.progress, + "max_stir_speed": self._max_stir_speed + } \ No newline at end of file diff --git a/unilabos/devices/mock/mock_vacuum.py b/unilabos/devices/mock/mock_vacuum.py new file mode 100644 index 00000000..9e368a90 --- /dev/null +++ b/unilabos/devices/mock/mock_vacuum.py @@ -0,0 +1,410 @@ +import time +import threading + + +class MockVacuum: + """ + 模拟真空泵设备类 + + 这个类模拟了一个实验室真空泵的行为,包括真空度控制、 + 压力监测、运行状态管理等功能。参考了现有的 VacuumPumpMock 实现。 + """ + + def __init__(self, port: str = "MOCK"): + """ + 初始化MockVacuum实例 + + Args: + port (str): 设备端口,默认为"MOCK"表示模拟设备 + """ + self.port = port + + # 设备基本状态属性 + self._status: str = "Idle" # 设备状态:Idle, Running, Error, Stopped + self._power_state: str = "Off" # 电源状态:On, Off + self._pump_state: str = "Stopped" # 泵运行状态:Running, Stopped, Paused + + # 真空相关属性 + self._vacuum_level: float = 1013.25 # 当前真空度 (mbar) - 大气压开始 + self._target_vacuum: float = 50.0 # 目标真空度 (mbar) + self._min_vacuum: float = 1.0 # 最小真空度 (mbar) + self._max_vacuum: float = 1013.25 # 最大真空度 (mbar) - 大气压 + + # 泵性能相关属性 + self._pump_speed: float = 0.0 # 泵速 (L/s) + self._max_pump_speed: float = 100.0 # 最大泵速 (L/s) + self._pump_efficiency: float = 95.0 # 泵效率百分比 + + # 运行控制线程 + self._vacuum_thread = None + self._running = False + self._thread_lock = threading.Lock() + + # ==================== 状态属性 ==================== + # 这些属性会被Uni-Lab系统自动识别并定时对外广播 + + @property + def status(self) -> str: + """ + 设备状态 - 会被自动识别的设备属性 + + Returns: + str: 当前设备状态 (Idle, Running, Error, Stopped) + """ + return self._status + + @property + def power_state(self) -> str: + """ + 电源状态 + + Returns: + str: 电源状态 (On, Off) + """ + return self._power_state + + @property + def pump_state(self) -> str: + """ + 泵运行状态 + + Returns: + str: 泵状态 (Running, Stopped, Paused) + """ + return self._pump_state + + @property + def vacuum_level(self) -> float: + """ + 当前真空度 + + Returns: + float: 当前真空度 (mbar) + """ + return self._vacuum_level + + @property + def target_vacuum(self) -> float: + """ + 目标真空度 + + Returns: + float: 目标真空度 (mbar) + """ + return self._target_vacuum + + @property + def pump_speed(self) -> float: + """ + 泵速 + + Returns: + float: 泵速 (L/s) + """ + return self._pump_speed + + @property + def pump_efficiency(self) -> float: + """ + 泵效率 + + Returns: + float: 泵效率百分比 + """ + return self._pump_efficiency + + @property + def max_pump_speed(self) -> float: + """ + 最大泵速 + + Returns: + float: 最大泵速 (L/s) + """ + return self._max_pump_speed + + # ==================== 设备控制方法 ==================== + # 这些方法需要在注册表中添加,会作为ActionServer接受控制指令 + + def power_control(self, power_state: str = "On") -> str: + """ + 电源控制方法 + + Args: + power_state (str): 电源状态,可选值:"On", "Off" + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + if power_state not in ["On", "Off"]: + self._status = "Error: Invalid power state" + return "Error" + + self._power_state = power_state + + if power_state == "On": + self._status = "Power On" + self._start_vacuum_operation() + else: + self._status = "Power Off" + self.stop_vacuum() + + return "Success" + + def set_vacuum_level(self, vacuum_level: float) -> str: + """ + 设置目标真空度 + + Args: + vacuum_level (float): 目标真空度 (mbar) + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + try: + vacuum_level = float(vacuum_level) + except ValueError: + self._status = "Error: Invalid vacuum level" + return "Error" + if self._power_state != "On": + self._status = "Error: Power Off" + return "Error" + + if vacuum_level < self._min_vacuum or vacuum_level > self._max_vacuum: + self._status = f"Error: Vacuum level out of range ({self._min_vacuum}-{self._max_vacuum})" + return "Error" + + self._target_vacuum = vacuum_level + self._status = "Setting Vacuum Level" + + return "Success" + + def start_vacuum(self) -> str: + """ + 启动真空泵 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + if self._power_state != "On": + self._status = "Error: Power Off" + return "Error" + + self._pump_state = "Running" + self._status = "Starting Vacuum Pump" + self._start_vacuum_operation() + + return "Success" + + def stop_vacuum(self) -> str: + """ + 停止真空泵 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._pump_state = "Stopped" + self._status = "Stopping Vacuum Pump" + self._stop_vacuum_operation() + self._pump_speed = 0.0 + + return "Success" + + def pause_vacuum(self) -> str: + """ + 暂停真空泵 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + if self._pump_state != "Running": + self._status = "Error: Pump not running" + return "Error" + + self._pump_state = "Paused" + self._status = "Vacuum Pump Paused" + self._stop_vacuum_operation() + + return "Success" + + def resume_vacuum(self) -> str: + """ + 恢复真空泵运行 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + if self._pump_state != "Paused": + self._status = "Error: Pump not paused" + return "Error" + + if self._power_state != "On": + self._status = "Error: Power Off" + return "Error" + + self._pump_state = "Running" + self._status = "Resuming Vacuum Pump" + self._start_vacuum_operation() + + return "Success" + + def vent_to_atmosphere(self) -> str: + """ + 通大气 - 将真空度恢复到大气压 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._target_vacuum = self._max_vacuum # 设置为大气压 + self._status = "Venting to Atmosphere" + return "Success" + + def emergency_stop(self) -> str: + """ + 紧急停止 + + Returns: + str: 操作结果状态 ("Success", "Error") + """ + self._status = "Emergency Stop" + self._pump_state = "Stopped" + self._stop_vacuum_operation() + self._pump_speed = 0.0 + + return "Success" + + # ==================== 内部控制方法 ==================== + + def _start_vacuum_operation(self): + """ + 启动真空操作线程 + + 这个方法启动一个后台线程来模拟真空泵的实际运行过程。 + """ + with self._thread_lock: + if not self._running and self._power_state == "On": + self._running = True + self._vacuum_thread = threading.Thread(target=self._vacuum_operation_loop) + self._vacuum_thread.daemon = True + self._vacuum_thread.start() + + def _stop_vacuum_operation(self): + """ + 停止真空操作线程 + + 安全地停止后台运行线程并等待其完成。 + """ + with self._thread_lock: + self._running = False + if self._vacuum_thread and self._vacuum_thread.is_alive(): + self._vacuum_thread.join(timeout=2.0) + + def _vacuum_operation_loop(self): + """ + 真空操作主循环 + + 这个方法在后台线程中运行,模拟真空泵的工作过程: + 1. 检查电源状态和运行状态 + 2. 如果泵状态为 "Running",根据目标真空调整泵速和真空度 + 3. 否则等待 + """ + while self._running and self._power_state == "On": + try: + with self._thread_lock: + # 只有泵状态为 Running 时才进行更新 + if self._pump_state == "Running": + vacuum_diff = self._vacuum_level - self._target_vacuum + + if abs(vacuum_diff) < 1.0: # 真空度接近目标值 + self._status = "At Target Vacuum" + self._pump_speed = self._max_pump_speed * 0.2 # 维持真空的最小泵速 + elif vacuum_diff > 0: # 需要抽真空(降低压力) + self._status = "Pumping Down" + if vacuum_diff > 500: + self._pump_speed = self._max_pump_speed + elif vacuum_diff > 100: + self._pump_speed = self._max_pump_speed * 0.8 + elif vacuum_diff > 50: + self._pump_speed = self._max_pump_speed * 0.6 + else: + self._pump_speed = self._max_pump_speed * 0.4 + + # 根据泵速和效率计算真空降幅 + pump_rate = (self._pump_speed / self._max_pump_speed) * self._pump_efficiency / 100.0 + vacuum_reduction = pump_rate * 10.0 # 每秒最大降低10 mbar + self._vacuum_level = max(self._target_vacuum, self._vacuum_level - vacuum_reduction) + else: # 目标真空度高于当前值,需要通气 + self._status = "Venting" + self._pump_speed = 0.0 + self._vacuum_level = min(self._target_vacuum, self._vacuum_level + 5.0) + + # 限制真空度范围 + self._vacuum_level = max(self._min_vacuum, min(self._max_vacuum, self._vacuum_level)) + else: + # 当泵状态不是 Running 时,可保持原状态 + self._status = "Vacuum Pump Not Running" + # 释放锁后等待1秒钟 + time.sleep(1.0) + except Exception as e: + with self._thread_lock: + self._status = f"Error in vacuum operation: {str(e)}" + break + + # 循环结束后的清理工作 + if self._pump_state == "Running": + self._status = "Idle" + # 停止泵后,真空度逐渐回升到大气压 + while self._vacuum_level < self._max_vacuum * 0.9: + with self._thread_lock: + self._vacuum_level += 2.0 + time.sleep(0.1) + + def get_status_info(self) -> dict: + """ + 获取完整的设备状态信息 + + Returns: + dict: 包含所有设备状态的字典 + """ + return { + "status": self._status, + "power_state": self._power_state, + "pump_state": self._pump_state, + "vacuum_level": self._vacuum_level, + "target_vacuum": self._target_vacuum, + "pump_speed": self._pump_speed, + "pump_efficiency": self._pump_efficiency, + "max_pump_speed": self._max_pump_speed, + } + + +# 用于测试的主函数 +if __name__ == "__main__": + vacuum = MockVacuum() + + # 测试基本功能 + print("启动真空泵测试...") + vacuum.power_control("On") + print(f"初始状态: {vacuum.get_status_info()}") + + # 设置目标真空度并启动 + vacuum.set_vacuum_level(10.0) # 设置为10mbar + vacuum.start_vacuum() + + # 模拟运行15秒 + for i in range(15): + time.sleep(1) + print( + f"第{i+1}秒: 真空度={vacuum.vacuum_level:.1f}mbar, 泵速={vacuum.pump_speed:.1f}L/s, 状态={vacuum.status}" + ) + # 测试通大气 + print("测试通大气...") + vacuum.vent_to_atmosphere() + + # 继续运行5秒观察通大气过程 + for i in range(5): + time.sleep(1) + print(f"通大气第{i+1}秒: 真空度={vacuum.vacuum_level:.1f}mbar, 状态={vacuum.status}") + + vacuum.emergency_stop() + print("测试完成") diff --git a/unilabos/devices/pump_and_valve/solenoid_valve_mock.py b/unilabos/devices/pump_and_valve/solenoid_valve_mock.py index 08820ca0..b6735a3f 100644 --- a/unilabos/devices/pump_and_valve/solenoid_valve_mock.py +++ b/unilabos/devices/pump_and_valve/solenoid_valve_mock.py @@ -5,22 +5,22 @@ class SolenoidValveMock: def __init__(self, port: str = "COM6"): self._status = "Idle" self._valve_position = "OPEN" - + @property def status(self) -> str: return self._status - + @property def valve_position(self) -> str: return self._valve_position def get_valve_position(self) -> str: return self._valve_position - + def set_valve_position(self, position): self._status = "Busy" time.sleep(5) - + self._valve_position = position time.sleep(5) self._status = "Idle" diff --git a/unilabos/devices/pump_and_valve/vacuum_pump_mock.py b/unilabos/devices/pump_and_valve/vacuum_pump_mock.py index 3e330570..35655122 100644 --- a/unilabos/devices/pump_and_valve/vacuum_pump_mock.py +++ b/unilabos/devices/pump_and_valve/vacuum_pump_mock.py @@ -4,18 +4,16 @@ import time class VacuumPumpMock: def __init__(self, port: str = "COM6"): self._status = "OPEN" - + @property def status(self) -> str: return self._status def get_status(self) -> str: return self._status - - def set_status(self, position): - time.sleep(5) - - self._status = position + + def set_status(self, string): + self._status = string time.sleep(5) def open(self): diff --git a/unilabos/devices/resource_container/__init__.py b/unilabos/devices/resource_container/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/unilabos/devices/resource_container/container.py b/unilabos/devices/resource_container/container.py new file mode 100644 index 00000000..38b9a806 --- /dev/null +++ b/unilabos/devices/resource_container/container.py @@ -0,0 +1,9 @@ + +class HotelContainer: + def __init__(self, rotation: dict, device_config: dict): + self.rotation = rotation + self.device_config = device_config + self.status = 'idle' + + def get_rotation(self): + return self.rotation diff --git a/unilabos/devices/ros_dev/lh_joint_config.json b/unilabos/devices/ros_dev/lh_joint_config.json new file mode 100644 index 00000000..908cc545 --- /dev/null +++ b/unilabos/devices/ros_dev/lh_joint_config.json @@ -0,0 +1,38 @@ +{ + "OTDeck":{ + "joint_names":[ + "first_joint", + "second_joint", + "third_joint", + "fourth_joint" + ], + "link_names":[ + "first_link", + "second_link", + "third_link", + "fourth_link" + ], + "y":{ + "first_joint":{ + "factor":-0.001, + "offset":0.166 + } + }, + "x":{ + "second_joint":{ + "factor":-0.001, + "offset":0.1775 + } + }, + "z":{ + "third_joint":{ + "factor":0.001, + "offset":0.0 + }, + "fourth_joint":{ + "factor":0.001, + "offset":0.0 + } + } + } +} \ No newline at end of file diff --git a/unilabos/devices/ros_dev/liquid_handler_joint_publisher.py b/unilabos/devices/ros_dev/liquid_handler_joint_publisher.py index e593f425..882b519d 100644 --- a/unilabos/devices/ros_dev/liquid_handler_joint_publisher.py +++ b/unilabos/devices/ros_dev/liquid_handler_joint_publisher.py @@ -1,9 +1,12 @@ +import asyncio import copy +from pathlib import Path +import threading import rclpy import json import time from rclpy.executors import MultiThreadedExecutor -from rclpy.action import ActionServer +from rclpy.action import ActionServer,ActionClient from sensor_msgs.msg import JointState from unilabos_msgs.action import SendCmd from rclpy.action.server import ServerGoalHandle @@ -11,9 +14,11 @@ from unilabos.ros.nodes.base_device_node import BaseROS2DeviceNode from tf_transformations import quaternion_from_euler from tf2_ros import TransformBroadcaster, Buffer, TransformListener +from rclpy.node import Node +import re class LiquidHandlerJointPublisher(BaseROS2DeviceNode): - def __init__(self,device_id:str, joint_config:dict, lh_id:str,resource_tracker, rate=50): + def __init__(self,resources_config:list, resource_tracker, rate=50, device_id:str = "lh_joint_publisher"): super().__init__( driver_instance=self, device_id=device_id, @@ -23,60 +28,118 @@ class LiquidHandlerJointPublisher(BaseROS2DeviceNode): print_publish=False, resource_tracker=resource_tracker, ) - - # joint_config_dict = { - # "joint_names":[ - # "first_joint", - # "second_joint", - # "third_joint", - # "fourth_joint" - # ], - # "y":{ - # "first_joint":{ - # "factor":-1, - # "offset":0.0 - # } - # }, - # "x":{ - # "second_joint":{ - # "factor":-1, - # "offset":0.0 - # } - # }, - # "z":{ - # "third_joint":{ - # "factor":1, - # "offset":0.0 - # }, - # "fourth_joint":{ - # "factor":1, - # "offset":0.0 - # } - # } - # } - + + # 初始化参数 self.j_msg = JointState() - self.lh_id = lh_id - # self.j_msg.name = joint_names - self.joint_config = joint_config - self.j_msg.position = [0.0 for i in range(len(joint_config['joint_names']))] - self.j_msg.name = [f"{self.lh_id}_{x}" for x in joint_config['joint_names']] - # self.joint_config = joint_config_dict - # self.j_msg.position = [0.0 for i in range(len(joint_config_dict['joint_names']))] - # self.j_msg.name = [f"{self.lh_id}_{x}" for x in joint_config_dict['joint_names']] + joint_config = json.load(open(f"{Path(__file__).parent.absolute()}/lh_joint_config.json", encoding="utf-8")) + self.resources_config = {x['id']:x for x in resources_config} self.rate = rate self.tf_buffer = Buffer() self.tf_listener = TransformListener(self.tf_buffer, self) self.j_pub = self.create_publisher(JointState,'/joint_states',10) - self.create_timer(0.02,self.lh_joint_pub_callback) + self.create_timer(1,self.lh_joint_pub_callback) + + + self.resource_action = None + + while self.resource_action is None: + self.resource_action = self.check_tf_update_actions() + time.sleep(1) + + self.resource_action_client = ActionClient(self, SendCmd, self.resource_action) + while not self.resource_action_client.wait_for_server(timeout_sec=1.0): + self.get_logger().info('等待 TfUpdate 服务器...') + + self.deck_list = [] + self.lh_devices = {} + # 初始化设备ID与config信息 + for resource in resources_config: + if resource['class'] == 'liquid_handler': + deck_id = resource['config']['data']['children'][0]['_resource_child_name'] + deck_class = resource['config']['data']['children'][0]['_resource_type'].split(':')[-1] + key = f'{deck_id}' + # key = f'{resource["id"]}_{deck_id}' + self.lh_devices[key] = { + 'joint_msg':JointState( + name=[f'{key}_{x}' for x in joint_config[deck_class]['joint_names']], + position=[0.0 for _ in joint_config[deck_class]['joint_names']] + ), + 'joint_config':joint_config[deck_class] + } + self.deck_list.append(deck_id) + + print('='*20) + print(self.lh_devices) + print('='*20) self.j_action = ActionServer( self, SendCmd, - "joint", + "hl_joint_action", self.lh_joint_action_callback, result_timeout=5000 ) + + def check_tf_update_actions(self): + topics = self.get_topic_names_and_types() + + + for topic_item in topics: + + topic_name, topic_types = topic_item + + if 'action_msgs/msg/GoalStatusArray' in topic_types: + # 删除 /_action/status 部分 + + base_name = topic_name.replace('/_action/status', '') + # 检查最后一个部分是否为 tf_update + parts = base_name.split('/') + if parts and parts[-1] == 'tf_update': + return base_name + + return None + + + def find_resource_parent(self, resource_id:str): + # 遍历父辈,找到父辈的父辈,直到找到设备ID + parent_id = self.resources_config[resource_id]['parent'] + try: + if parent_id in self.deck_list: + p_ = self.resources_config[parent_id]['parent'] + str_ = f'{parent_id}' + return str(str_) + else: + return self.find_resource_parent(parent_id) + except Exception as e: + return None + + + def send_resource_action(self, resource_id_list:list[str], link_name:str): + goal_msg = SendCmd.Goal() + str_dict = {} + for resource in resource_id_list: + str_dict[resource] = link_name + + goal_msg.command = json.dumps(str_dict) + self.resource_action_client.send_goal(goal_msg) + + def resource_move(self, resource_id:str, link_name:str, channels:list[int]): + resource = resource_id.rsplit("_",1) + + channel_list = ['A','B','C','D','E','F','G','H'] + + resource_list = [] + match = re.match(r'([a-zA-Z_]+)(\d+)', resource[1]) + if match: + number = match.group(2) + for channel in channels: + resource_list.append(f"{resource[0]}_{channel_list[channel]}{number}") + + if len(resource_list) > 0: + self.send_resource_action(resource_list, link_name) + + + def lh_joint_action_callback(self,goal_handle: ServerGoalHandle): """Move a single joint @@ -101,12 +164,13 @@ class LiquidHandlerJointPublisher(BaseROS2DeviceNode): goal_handle.succeed() except Exception as e: - print(e) + print(f'Liquid handler action error: \n{e}') goal_handle.abort() result.success = False - + return result def inverse_kinematics(self, x, y, z, + parent_id, x_joint:dict, y_joint:dict, z_joint:dict ): @@ -117,77 +181,102 @@ class LiquidHandlerJointPublisher(BaseROS2DeviceNode): x (float): x坐标 y (float): y坐标 z (float): z坐标 - x_joint (dict): x轴关节配置,包含plus和offset - y_joint (dict): y轴关节配置,包含plus和offset - z_joint (dict): z轴关节配置,包含plus和offset + x_joint (dict): x轴关节配置,包含factor和offset + y_joint (dict): y轴关节配置,包含factor和offset + z_joint (dict): z轴关节配置,包含factor和offset Returns: dict: 关节名称和对应位置的字典 """ - joint_positions = copy.deepcopy(self.j_msg.position) + joint_positions = copy.deepcopy(self.lh_devices[parent_id]['joint_msg'].position) + z_index = 0 # 处理x轴关节 for joint_name, config in x_joint.items(): - index = self.j_msg.name.index(f"{self.lh_id}_{joint_name}") + index = self.lh_devices[parent_id]['joint_msg'].name.index(f"{parent_id}_{joint_name}") joint_positions[index] = x * config["factor"] + config["offset"] # 处理y轴关节 for joint_name, config in y_joint.items(): - index = self.j_msg.name.index(f"{self.lh_id}_{joint_name}") + index = self.lh_devices[parent_id]['joint_msg'].name.index(f"{parent_id}_{joint_name}") joint_positions[index] = y * config["factor"] + config["offset"] # 处理z轴关节 for joint_name, config in z_joint.items(): - index = self.j_msg.name.index(f"{self.lh_id}_{joint_name}") + index = self.lh_devices[parent_id]['joint_msg'].name.index(f"{parent_id}_{joint_name}") joint_positions[index] = z * config["factor"] + config["offset"] - - - return joint_positions + z_index = index + + return joint_positions ,z_index - def move_joints(self, resource_name, link_name, speed, x_joint=None, y_joint=None, z_joint=None): + def move_joints(self, resource_names, x, y, z, option, speed = 0.1 ,x_joint=None, y_joint=None, z_joint=None): + if isinstance(resource_names, list): + resource_name_ = resource_names[0] + else: + resource_name_ = resource_names - transform = self.tf_buffer.lookup_transform( - link_name, - resource_name, - rclpy.time.Time() - ) - x,y,z = transform.transform.translation.x, transform.transform.translation.y, transform.transform.translation.z + parent_id = self.find_resource_parent(resource_name_) + + + print('!'*20) + print(parent_id) + print('!'*20) if x_joint is None: - x_joint_config = next(iter(self.joint_config['x'].items())) - elif x_joint in self.joint_config['x']: - x_joint_config = self.joint_config['x'][x_joint] + xa,xb = next(iter(self.lh_devices[parent_id]['joint_config']['x'].items())) + x_joint_config = {xa:xb} + elif x_joint in self.lh_devices[parent_id]['joint_config']['x']: + x_joint_config = self.lh_devices[parent_id]['joint_config']['x'][x_joint] else: raise ValueError(f"x_joint {x_joint} not in joint_config['x']") if y_joint is None: - y_joint_config = next(iter(self.joint_config['y'].items())) - elif y_joint in self.joint_config['y']: - y_joint_config = self.joint_config['y'][y_joint] + ya,yb = next(iter(self.lh_devices[parent_id]['joint_config']['y'].items())) + y_joint_config = {ya:yb} + elif y_joint in self.lh_devices[parent_id]['joint_config']['y']: + y_joint_config = self.lh_devices[parent_id]['joint_config']['y'][y_joint] else: raise ValueError(f"y_joint {y_joint} not in joint_config['y']") if z_joint is None: - z_joint_config = next(iter(self.joint_config['z'].items())) - elif z_joint in self.joint_config['z']: - z_joint_config = self.joint_config['z'][z_joint] + za, zb = next(iter(self.lh_devices[parent_id]['joint_config']['z'].items())) + z_joint_config = {za :zb} + elif z_joint in self.lh_devices[parent_id]['joint_config']['z']: + z_joint_config = self.lh_devices[parent_id]['joint_config']['z'][z_joint] else: raise ValueError(f"z_joint {z_joint} not in joint_config['z']") - joint_positions_target = self.inverse_kinematics(x,y,z,x_joint_config,y_joint_config,z_joint_config) + joint_positions_target, z_index = self.inverse_kinematics(x,y,z,parent_id,x_joint_config,y_joint_config,z_joint_config) + joint_positions_target_zero = copy.deepcopy(joint_positions_target) + joint_positions_target_zero[z_index] = 0 + + self.move_to(joint_positions_target_zero, speed, parent_id) + self.move_to(joint_positions_target, speed, parent_id) + time.sleep(1) + if option == "pick": + link_name = self.lh_devices[parent_id]['joint_config']['link_names'][z_index] + link_name = f'{parent_id}_{link_name}' + self.resource_move(resource_name_, link_name, [0,1,2,3,4,5,6,7]) + elif option == "drop_trash": + self.resource_move(resource_name_, "__trash", [0,1,2,3,4,5,6,7]) + elif option == "drop": + self.resource_move(resource_name_, "world", [0,1,2,3,4,5,6,7]) + self.move_to(joint_positions_target_zero, speed, parent_id) + + + def move_to(self, joint_positions ,speed, parent_id): loop_flag = 0 - - while loop_flag < len(self.joint_config['joint_names']): + while loop_flag < len(joint_positions): loop_flag = 0 - for i in range(len(self.joint_config['joint_names'])): - distance = joint_positions_target[i] - self.j_msg.position[i] + for i in range(len(joint_positions)): + distance = joint_positions[i] - self.lh_devices[parent_id]['joint_msg'].position[i] if distance == 0: loop_flag += 1 continue minus_flag = distance/abs(distance) if abs(distance) > speed/self.rate: - self.j_msg.position[i] += minus_flag * speed/self.rate + self.lh_devices[parent_id]['joint_msg'].position[i] += minus_flag * speed/self.rate else : - self.j_msg.position[i] = joint_positions_target[i] + self.lh_devices[parent_id]['joint_msg'].position[i] = joint_positions[i] loop_flag += 1 @@ -195,10 +284,103 @@ class LiquidHandlerJointPublisher(BaseROS2DeviceNode): self.lh_joint_pub_callback() time.sleep(1/self.rate) - def lh_joint_pub_callback(self): - self.j_msg.header.stamp = self.get_clock().now().to_msg() - self.j_pub.publish(self.j_msg) + for id, config in self.lh_devices.items(): + config['joint_msg'].header.stamp = self.get_clock().now().to_msg() + self.j_pub.publish(config['joint_msg']) + + + + +class JointStatePublisher(Node): + def __init__(self): + super().__init__('joint_state_publisher') + + self.lh_action = None + + while self.lh_action is None: + self.lh_action = self.check_hl_joint_actions() + time.sleep(1) + + self.lh_action_client = ActionClient(self, SendCmd, self.lh_action) + while not self.lh_action_client.wait_for_server(timeout_sec=1.0): + self.get_logger().info('等待 TfUpdate 服务器...') + + + + def check_hl_joint_actions(self): + topics = self.get_topic_names_and_types() + + + for topic_item in topics: + + topic_name, topic_types = topic_item + + if 'action_msgs/msg/GoalStatusArray' in topic_types: + # 删除 /_action/status 部分 + + base_name = topic_name.replace('/_action/status', '') + # 检查最后一个部分是否为 tf_update + parts = base_name.split('/') + if parts and parts[-1] == 'hl_joint_action': + return base_name + + return None + + def send_resource_action(self, resource_name, x,y,z,option, speed = 0.1,x_joint=None, y_joint=None, z_joint=None): + goal_msg = SendCmd.Goal() + str_dict = { + 'resource_names':resource_name, + 'x':x, + 'y':y, + 'z':z, + 'option':option, + 'speed':speed, + 'x_joint':x_joint, + 'y_joint':y_joint, + 'z_joint':z_joint + } + + + goal_msg.command = json.dumps(str_dict) + + if not self.lh_action_client.wait_for_server(timeout_sec=5.0): + self.get_logger().error('Action server not available') + return None + + try: + # 创建新的executor + executor = rclpy.executors.MultiThreadedExecutor() + executor.add_node(self) + + # 发送目标 + future = self.lh_action_client.send_goal_async(goal_msg) + + # 使用executor等待结果 + while not future.done(): + executor.spin_once(timeout_sec=0.1) + + handle = future.result() + + if not handle.accepted: + self.get_logger().error('Goal was rejected') + return None + + # 等待最终结果 + result_future = handle.get_result_async() + while not result_future.done(): + executor.spin_once(timeout_sec=0.1) + + result = result_future.result() + return result + + except Exception as e: + self.get_logger().error(f'Error during action execution: {str(e)}') + return None + finally: + # 清理executor + executor.remove_node(self) + def main(): diff --git a/unilabos/devices/ros_dev/moveit2.py b/unilabos/devices/ros_dev/moveit2.py new file mode 100644 index 00000000..80bea9da --- /dev/null +++ b/unilabos/devices/ros_dev/moveit2.py @@ -0,0 +1,2442 @@ +import copy +import threading +from enum import Enum +from typing import Any, List, Optional, Tuple, Union + +import numpy as np +from action_msgs.msg import GoalStatus +from geometry_msgs.msg import Point, Pose, PoseStamped, Quaternion +from moveit_msgs.action import ExecuteTrajectory, MoveGroup +from moveit_msgs.msg import ( + AllowedCollisionEntry, + AttachedCollisionObject, + CollisionObject, + Constraints, + JointConstraint, + MoveItErrorCodes, + OrientationConstraint, + PlanningScene, + PositionConstraint, +) +from moveit_msgs.srv import ( + ApplyPlanningScene, + GetCartesianPath, + GetMotionPlan, + GetPlanningScene, + GetPositionFK, + GetPositionIK, +) +from rclpy.action import ActionClient +from rclpy.callback_groups import CallbackGroup +from rclpy.node import Node +from rclpy.qos import ( + QoSDurabilityPolicy, + QoSHistoryPolicy, + QoSProfile, + QoSReliabilityPolicy, +) +from rclpy.task import Future +from sensor_msgs.msg import JointState +from shape_msgs.msg import Mesh, MeshTriangle, SolidPrimitive +from std_msgs.msg import Header, String +from trajectory_msgs.msg import JointTrajectory, JointTrajectoryPoint + + +class MoveIt2State(Enum): + """ + An enum the represents the current execution state of the MoveIt2 interface. + - IDLE: No motion is being requested or executed + - REQUESTING: Execution has been requested, but the request has not yet been + accepted. + - EXECUTING: Execution has been requested and accepted, and has not yet been + completed. + """ + + IDLE = 0 + REQUESTING = 1 + EXECUTING = 2 + + +class MoveIt2: + """ + Python interface for MoveIt 2 that enables planning and execution of trajectories. + For execution, this interface requires that robot utilises JointTrajectoryController. + """ + + def __init__( + self, + node: Node, + joint_names: List[str], + base_link_name: str, + end_effector_name: str, + group_name: str = "arm", + execute_via_moveit: bool = False, + ignore_new_calls_while_executing: bool = False, + callback_group: Optional[CallbackGroup] = None, + follow_joint_trajectory_action_name: str = "DEPRECATED", + use_move_group_action: bool = False, + ): + """ + Construct an instance of `MoveIt2` interface. + - `node` - ROS 2 node that this interface is attached to + - `joint_names` - List of joint names of the robot (can be extracted from URDF) + - `base_link_name` - Name of the robot base link + - `end_effector_name` - Name of the robot end effector + - `group_name` - Name of the planning group for robot arm + - [DEPRECATED] `execute_via_moveit` - Flag that enables execution via MoveGroup action (MoveIt 2) + FollowJointTrajectory action (controller) is employed otherwise + together with a separate planning service client + - `ignore_new_calls_while_executing` - Flag to ignore requests to execute new trajectories + while previous is still being executed + - `callback_group` - Optional callback group to use for ROS 2 communication (topics/services/actions) + - [DEPRECATED] `follow_joint_trajectory_action_name` - Name of the action server for the controller + - `use_move_group_action` - Flag that enables execution via MoveGroup action (MoveIt 2) + ExecuteTrajectory action is employed otherwise + together with a separate planning service client + """ + + self._node = node + self._callback_group = callback_group + + # Check for deprecated parameters + if execute_via_moveit: + self._node.get_logger().warn( + "Parameter `execute_via_moveit` is deprecated. Please use `use_move_group_action` instead." + ) + use_move_group_action = True + if follow_joint_trajectory_action_name != "DEPRECATED": + self._node.get_logger().warn( + "Parameter `follow_joint_trajectory_action_name` is deprecated. `MoveIt2` uses the `execute_trajectory` action instead." + ) + + # Create subscriber for current joint states + self._node.create_subscription( + msg_type=JointState, + topic="/joint_states", + callback=self.__joint_state_callback, + qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=self._callback_group, + ) + + # Create action client for move action + self.__move_action_client = ActionClient( + node=self._node, + action_type=MoveGroup, + action_name="/move_action", + goal_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + result_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=5, + ), + cancel_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=5, + ), + feedback_sub_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + status_sub_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=self._callback_group, + ) + + # Also create a separate service client for planning + self._plan_kinematic_path_service = self._node.create_client( + srv_type=GetMotionPlan, + srv_name="/plan_kinematic_path", + qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=callback_group, + ) + self.__kinematic_path_request = GetMotionPlan.Request() + + # Create a separate service client for Cartesian planning + self._plan_cartesian_path_service = self._node.create_client( + srv_type=GetCartesianPath, + srv_name="/compute_cartesian_path", + qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=callback_group, + ) + self.__cartesian_path_request = GetCartesianPath.Request() + + # Create action client for trajectory execution + self._execute_trajectory_action_client = ActionClient( + node=self._node, + action_type=ExecuteTrajectory, + action_name="/execute_trajectory", + goal_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + result_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=5, + ), + cancel_service_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=5, + ), + feedback_sub_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + status_sub_qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.BEST_EFFORT, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=self._callback_group, + ) + + # Create a service for getting the planning scene + self._get_planning_scene_service = self._node.create_client( + srv_type=GetPlanningScene, + srv_name="/get_planning_scene", + qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=callback_group, + ) + self.__planning_scene = None + self.__old_planning_scene = None + self.__old_allowed_collision_matrix = None + + # Create a service for applying the planning scene + self._apply_planning_scene_service = self._node.create_client( + srv_type=ApplyPlanningScene, + srv_name="/apply_planning_scene", + qos_profile=QoSProfile( + durability=QoSDurabilityPolicy.VOLATILE, + reliability=QoSReliabilityPolicy.RELIABLE, + history=QoSHistoryPolicy.KEEP_LAST, + depth=1, + ), + callback_group=callback_group, + ) + + self.__collision_object_publisher = self._node.create_publisher( + CollisionObject, "/collision_object", 10 + ) + self.__attached_collision_object_publisher = self._node.create_publisher( + AttachedCollisionObject, "/attached_collision_object", 10 + ) + + self.__cancellation_pub = self._node.create_publisher( + String, "/trajectory_execution_event", 1 + ) + + self.__joint_state_mutex = threading.Lock() + self.__joint_state = None + self.__new_joint_state_available = False + self.__move_action_goal = self.__init_move_action_goal( + frame_id=base_link_name, + group_name=group_name, + end_effector=end_effector_name, + ) + + # Flag to determine whether to execute trajectories via Move Group Action, or rather by calling + # the separate ExecuteTrajectory action + # Applies to `move_to_pose()` and `move_to_configuration()` + self.__use_move_group_action = use_move_group_action + + # Flag that determines whether a new goal can be sent while the previous one is being executed + self.__ignore_new_calls_while_executing = ignore_new_calls_while_executing + + # Store additional variables for later use + self.__joint_names = joint_names + self.__base_link_name = base_link_name + self.__end_effector_name = end_effector_name + self.__group_name = group_name + + # Internal states that monitor the current motion requests and execution + self.__is_motion_requested = False + self.__is_executing = False + self.motion_suceeded = False + self.__execution_goal_handle = None + self.__last_error_code = None + self.__wait_until_executed_rate = self._node.create_rate(1000.0) + self.__execution_mutex = threading.Lock() + + # Event that enables waiting until async future is done + self.__future_done_event = threading.Event() + + #### Execution Polling Functions + def query_state(self) -> MoveIt2State: + with self.__execution_mutex: + if self.__is_motion_requested: + return MoveIt2State.REQUESTING + elif self.__is_executing: + return MoveIt2State.EXECUTING + else: + return MoveIt2State.IDLE + + def cancel_execution(self): + if self.query_state() != MoveIt2State.EXECUTING: + self._node.get_logger().warn("Attempted to cancel without active goal.") + return None + + cancel_string = String() + cancel_string.data = "stop" + self.__cancellation_pub.publish(cancel_string) + + def get_execution_future(self) -> Optional[Future]: + if self.query_state() != MoveIt2State.EXECUTING: + self._node.get_logger().warn("Need active goal for future.") + return None + + return self.__execution_goal_handle.get_result_async() + + def get_last_execution_error_code(self) -> Optional[MoveItErrorCodes]: + return self.__last_error_code + + #### + + def move_to_pose( + self, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + target_link: Optional[str] = None, + frame_id: Optional[str] = None, + tolerance_position: float = 0.001, + tolerance_orientation: float = 0.001, + weight_position: float = 1.0, + cartesian: bool = True, + weight_orientation: float = 1.0, + cartesian_max_step: float = 0.0025, + cartesian_fraction_threshold: float = 0.0, + ): + """ + Plan and execute motion based on previously set goals. Optional arguments can be + passed in to internally use `set_pose_goal()` to define a goal during the call. + """ + + if isinstance(pose, PoseStamped): + pose_stamped = pose + elif isinstance(pose, Pose): + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=pose, + ) + else: + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=Pose(position=position, orientation=quat_xyzw), + ) + + if self.__use_move_group_action and not cartesian: + if self.__ignore_new_calls_while_executing and ( + self.__is_motion_requested or self.__is_executing + ): + self._node.get_logger().warn( + "Controller is already following a trajectory. Skipping motion." + ) + return + + # Set goal + self.set_pose_goal( + position=pose_stamped.pose.position, + quat_xyzw=pose_stamped.pose.orientation, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance_position=tolerance_position, + tolerance_orientation=tolerance_orientation, + weight_position=weight_position, + weight_orientation=weight_orientation, + ) + # Define starting state as the current state + if self.joint_state is not None: + self.__move_action_goal.request.start_state.joint_state = ( + self.joint_state + ) + # Send to goal to the server (async) - both planning and execution + self._send_goal_async_move_action() + # Clear all previous goal constrains + self.clear_goal_constraints() + self.clear_path_constraints() + + else: + # Plan via MoveIt 2 and then execute directly with the controller + self.execute( + self.plan( + position=pose_stamped.pose.position, + quat_xyzw=pose_stamped.pose.orientation, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance_position=tolerance_position, + tolerance_orientation=tolerance_orientation, + weight_position=weight_position, + weight_orientation=weight_orientation, + cartesian=cartesian, + max_step=cartesian_max_step, + cartesian_fraction_threshold=cartesian_fraction_threshold, + ) + ) + + def move_to_configuration( + self, + joint_positions: List[float], + joint_names: Optional[List[str]] = None, + tolerance: float = 0.001, + weight: float = 1.0, + cartesian: bool = False, + ): + """ + Plan and execute motion based on previously set goals. Optional arguments can be + passed in to internally use `set_joint_goal()` to define a goal during the call. + """ + + if self.__use_move_group_action: + if self.__ignore_new_calls_while_executing and ( + self.__is_motion_requested or self.__is_executing + ): + self._node.get_logger().warn( + "Controller is already following a trajectory. Skipping motion." + ) + return + + # Set goal + self.set_joint_goal( + joint_positions=joint_positions, + joint_names=joint_names, + tolerance=tolerance, + weight=weight, + ) + # Define starting state as the current state + if self.joint_state is not None: + self.__move_action_goal.request.start_state.joint_state = ( + self.joint_state + ) + # Send to goal to the server (async) - both planning and execution + self._send_goal_async_move_action() + # Clear all previous goal constrains + self.clear_goal_constraints() + self.clear_path_constraints() + + else: + # Plan via MoveIt 2 and then execute directly with the controller + self.execute( + self.plan( + joint_positions=joint_positions, + joint_names=joint_names, + tolerance_joint_position=tolerance, + weight_joint_position=weight, + cartesian=cartesian, + ) + ) + + def plan( + self, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + joint_positions: Optional[List[float]] = None, + joint_names: Optional[List[str]] = None, + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance_position: float = 0.001, + tolerance_orientation: Union[float, Tuple[float, float, float]] = 0.001, + tolerance_joint_position: float = 0.001, + weight_position: float = 1.0, + weight_orientation: float = 1.0, + weight_joint_position: float = 1.0, + start_joint_state: Optional[Union[JointState, List[float]]] = None, + cartesian: bool = False, + max_step: float = 0.0025, + cartesian_fraction_threshold: float = 0.0, + ) -> Optional[JointTrajectory]: + """ + Call plan_async and wait on future + """ + future = self.plan_async( + **{ + key: value + for key, value in locals().items() + if key not in ["self", "cartesian_fraction_threshold"] + } + ) + + if future is None: + return None + + # 100ms sleep + rate = self._node.create_rate(10) + while not future.done(): + rate.sleep() + + return self.get_trajectory( + future, + cartesian=cartesian, + cartesian_fraction_threshold=cartesian_fraction_threshold, + ) + + def plan_async( + self, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + joint_positions: Optional[List[float]] = None, + joint_names: Optional[List[str]] = None, + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance_position: float = 0.001, + tolerance_orientation: Union[float, Tuple[float, float, float]] = 0.001, + tolerance_joint_position: float = 0.001, + weight_position: float = 1.0, + weight_orientation: float = 1.0, + weight_joint_position: float = 1.0, + start_joint_state: Optional[Union[JointState, List[float]]] = None, + cartesian: bool = False, + max_step: float = 0.0025, + ) -> Optional[Future]: + """ + Plan motion based on previously set goals. Optional arguments can be passed in to + internally use `set_position_goal()`, `set_orientation_goal()` or `set_joint_goal()` + to define a goal during the call. If no trajectory is found within the timeout + duration, `None` is returned. To plan from the different position than the current + one, optional argument `start_` can be defined. + """ + + pose_stamped = None + if pose is not None: + if isinstance(pose, PoseStamped): + pose_stamped = pose + elif isinstance(pose, Pose): + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=pose, + ) + + self.set_position_goal( + position=pose_stamped.pose.position, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance=tolerance_position, + weight=weight_position, + ) + self.set_orientation_goal( + quat_xyzw=pose_stamped.pose.orientation, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance=tolerance_orientation, + weight=weight_orientation, + ) + else: + if position is not None: + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + + self.set_position_goal( + position=position, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance_position, + weight=weight_position, + ) + + if quat_xyzw is not None: + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + + self.set_orientation_goal( + quat_xyzw=quat_xyzw, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance_orientation, + weight=weight_orientation, + ) + + if joint_positions is not None: + self.set_joint_goal( + joint_positions=joint_positions, + joint_names=joint_names, + tolerance=tolerance_joint_position, + weight=weight_joint_position, + ) + + # Define starting state for the plan (default to the current state) + if start_joint_state is not None: + if isinstance(start_joint_state, JointState): + self.__move_action_goal.request.start_state.joint_state = ( + start_joint_state + ) + else: + self.__move_action_goal.request.start_state.joint_state = ( + init_joint_state( + joint_names=self.__joint_names, + joint_positions=start_joint_state, + ) + ) + elif self.joint_state is not None: + self.__move_action_goal.request.start_state.joint_state = self.joint_state + + # Plan trajectory asynchronously by service call + if cartesian: + future = self._plan_cartesian_path( + max_step=max_step, + frame_id=( + pose_stamped.header.frame_id + if pose_stamped is not None + else frame_id + ), + ) + else: + # Use service + future = self._plan_kinematic_path() + + + # Clear all previous goal constrains + self.clear_goal_constraints() + self.clear_path_constraints() + + return future + + def get_trajectory( + self, + future: Future, + cartesian: bool = False, + cartesian_fraction_threshold: float = 0.0, + ) -> Optional[JointTrajectory]: + """ + Takes in a future returned by plan_async and returns the trajectory if the future is done + and planning was successful, else None. + + For cartesian plans, the plan is rejected if the fraction of the path that was completed is + less than `cartesian_fraction_threshold`. + """ + if not future.done(): + self._node.get_logger().warn( + "Cannot get trajectory because future is not done." + ) + return None + + res = future.result() + + # Cartesian + if cartesian: + if MoveItErrorCodes.SUCCESS == res.error_code.val: + if res.fraction >= cartesian_fraction_threshold: + return res.solution.joint_trajectory + else: + self._node.get_logger().warn( + f"Planning failed! Cartesian planner completed {res.fraction} " + f"of the trajectory, less than the threshold {cartesian_fraction_threshold}." + ) + return None + else: + self._node.get_logger().warn( + f"Planning failed! Error code: {res.error_code.val}." + ) + return None + + # Else Kinematic + res = res.motion_plan_response + if MoveItErrorCodes.SUCCESS == res.error_code.val: + return res.trajectory.joint_trajectory + else: + self._node.get_logger().warn( + f"Planning failed! Error code: {res.error_code.val}." + ) + return None + + def execute(self, joint_trajectory: JointTrajectory): + """ + Execute joint_trajectory by communicating directly with the controller. + """ + + if self.__ignore_new_calls_while_executing and ( + self.__is_motion_requested or self.__is_executing + ): + self._node.get_logger().warn( + "Controller is already following a trajectory. Skipping motion." + ) + return + + execute_trajectory_goal = init_execute_trajectory_goal( + joint_trajectory=joint_trajectory + ) + + if execute_trajectory_goal is None: + self._node.get_logger().warn( + "Cannot execute motion because the provided/planned trajectory is invalid." + ) + return + + self._send_goal_async_execute_trajectory(goal=execute_trajectory_goal) + + def wait_until_executed(self) -> bool: + """ + Wait until the previously requested motion is finalised through either a success or failure. + """ + + if not self.__is_motion_requested: + self._node.get_logger().warn( + "Cannot wait until motion is executed (no motion is in progress)." + ) + return False + + while self.__is_motion_requested or self.__is_executing: + self.__wait_until_executed_rate.sleep() + + return self.motion_suceeded + + def reset_controller( + self, joint_state: Union[JointState, List[float]], sync: bool = True + ): + """ + Reset controller to a given `joint_state` by sending a dummy joint trajectory. + This is useful for simulated robots that allow instantaneous reset of joints. + """ + + if not isinstance(joint_state, JointState): + joint_state = init_joint_state( + joint_names=self.__joint_names, + joint_positions=joint_state, + ) + joint_trajectory = init_dummy_joint_trajectory_from_state(joint_state) + execute_trajectory_goal = init_execute_trajectory_goal( + joint_trajectory=joint_trajectory + ) + + self._send_goal_async_execute_trajectory( + goal=execute_trajectory_goal, + wait_until_response=sync, + ) + + def set_pose_goal( + self, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance_position: float = 0.001, + tolerance_orientation: Union[float, Tuple[float, float, float]] = 0.001, + weight_position: float = 1.0, + weight_orientation: float = 1.0, + ): + """ + This is direct combination of `set_position_goal()` and `set_orientation_goal()`. + """ + + if (pose is None) and (position is None or quat_xyzw is None): + raise ValueError( + "Either `pose` or `position` and `quat_xyzw` must be specified!" + ) + + if isinstance(pose, PoseStamped): + pose_stamped = pose + elif isinstance(pose, Pose): + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=pose, + ) + else: + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=Pose(position=position, orientation=quat_xyzw), + ) + + self.set_position_goal( + position=pose_stamped.pose.position, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance=tolerance_position, + weight=weight_position, + ) + self.set_orientation_goal( + quat_xyzw=pose_stamped.pose.orientation, + frame_id=pose_stamped.header.frame_id, + target_link=target_link, + tolerance=tolerance_orientation, + weight=weight_orientation, + ) + + def create_position_constraint( + self, + position: Union[Point, Tuple[float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ) -> PositionConstraint: + """ + Create Cartesian position constraint of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + # Create new position constraint + constraint = PositionConstraint() + + # Define reference frame and target link + constraint.header.frame_id = ( + frame_id if frame_id is not None else self.__base_link_name + ) + constraint.link_name = ( + target_link if target_link is not None else self.__end_effector_name + ) + + # Define target position + constraint.constraint_region.primitive_poses.append(Pose()) + if isinstance(position, Point): + constraint.constraint_region.primitive_poses[0].position = position + else: + constraint.constraint_region.primitive_poses[0].position.x = float( + position[0] + ) + constraint.constraint_region.primitive_poses[0].position.y = float( + position[1] + ) + constraint.constraint_region.primitive_poses[0].position.z = float( + position[2] + ) + + # Define goal region as a sphere with radius equal to the tolerance + constraint.constraint_region.primitives.append(SolidPrimitive()) + constraint.constraint_region.primitives[0].type = 2 # Sphere + constraint.constraint_region.primitives[0].dimensions = [tolerance] + + # Set weight of the constraint + constraint.weight = weight + + return constraint + + def set_position_goal( + self, + position: Union[Point, Tuple[float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ): + """ + Set Cartesian position goal of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + constraint = self.create_position_constraint( + position=position, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance, + weight=weight, + ) + + # Append to other constraints + self.__move_action_goal.request.goal_constraints[ + -1 + ].position_constraints.append(constraint) + + def create_orientation_constraint( + self, + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: Union[float, Tuple[float, float, float]] = 0.001, + weight: float = 1.0, + parameterization: int = 0, # 0: Euler, 1: Rotation Vector + ) -> OrientationConstraint: + """ + Create a Cartesian orientation constraint of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + # Create new position constraint + constraint = OrientationConstraint() + + # Define reference frame and target link + constraint.header.frame_id = ( + frame_id if frame_id is not None else self.__base_link_name + ) + constraint.link_name = ( + target_link if target_link is not None else self.__end_effector_name + ) + + # Define target orientation + if isinstance(quat_xyzw, Quaternion): + constraint.orientation = quat_xyzw + else: + constraint.orientation.x = float(quat_xyzw[0]) + constraint.orientation.y = float(quat_xyzw[1]) + constraint.orientation.z = float(quat_xyzw[2]) + constraint.orientation.w = float(quat_xyzw[3]) + + # Define tolerances + if type(tolerance) == float: + tolerance_xyz = (tolerance, tolerance, tolerance) + else: + tolerance_xyz = tolerance + constraint.absolute_x_axis_tolerance = tolerance_xyz[0] + constraint.absolute_y_axis_tolerance = tolerance_xyz[1] + constraint.absolute_z_axis_tolerance = tolerance_xyz[2] + + # Define parameterization (how to interpret the tolerance) + constraint.parameterization = parameterization + + # Set weight of the constraint + constraint.weight = weight + + return constraint + + def set_orientation_goal( + self, + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: Union[float, Tuple[float, float, float]] = 0.001, + weight: float = 1.0, + parameterization: int = 0, # 0: Euler, 1: Rotation Vector + ): + """ + Set Cartesian orientation goal of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + constraint = self.create_orientation_constraint( + quat_xyzw=quat_xyzw, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance, + weight=weight, + parameterization=parameterization, + ) + + # Append to other constraints + self.__move_action_goal.request.goal_constraints[ + -1 + ].orientation_constraints.append(constraint) + + def create_joint_constraints( + self, + joint_positions: List[float], + joint_names: Optional[List[str]] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ) -> List[JointConstraint]: + """ + Creates joint space constraints. With `joint_names` specified, `joint_positions` can be + defined for specific joints in an arbitrary order. Otherwise, first **n** joints + passed into the constructor is used, where **n** is the length of `joint_positions`. + """ + + constraints = [] + + # Use default joint names if not specified + if joint_names == None: + joint_names = self.__joint_names + + for i in range(len(joint_positions)): + # Create a new constraint for each joint + constraint = JointConstraint() + + # Define joint name + constraint.joint_name = joint_names[i] + + # Define the target joint position + constraint.position = joint_positions[i] + + # Define telerances + constraint.tolerance_above = tolerance + constraint.tolerance_below = tolerance + + # Set weight of the constraint + constraint.weight = weight + + constraints.append(constraint) + + return constraints + + def set_joint_goal( + self, + joint_positions: List[float], + joint_names: Optional[List[str]] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ): + """ + Set joint space goal. With `joint_names` specified, `joint_positions` can be + defined for specific joints in an arbitrary order. Otherwise, first **n** joints + passed into the constructor is used, where **n** is the length of `joint_positions`. + """ + + constraints = self.create_joint_constraints( + joint_positions=joint_positions, + joint_names=joint_names, + tolerance=tolerance, + weight=weight, + ) + + # Append to other constraints + self.__move_action_goal.request.goal_constraints[-1].joint_constraints.extend( + constraints + ) + + def clear_goal_constraints(self): + """ + Clear all goal constraints that were previously set. + Note that this function is called automatically after each `plan_kinematic_path()`. + """ + + self.__move_action_goal.request.goal_constraints = [Constraints()] + + def create_new_goal_constraint(self): + """ + Create a new set of goal constraints that will be set together with the request. Each + subsequent setting of goals with `set_joint_goal()`, `set_pose_goal()` and others will be + added under this newly created set of constraints. + """ + + self.__move_action_goal.request.goal_constraints.append(Constraints()) + + def set_path_joint_constraint( + self, + joint_positions: List[float], + joint_names: Optional[List[str]] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ): + """ + Set joint space path constraints. With `joint_names` specified, `joint_positions` can be + defined for specific joints in an arbitrary order. Otherwise, first **n** joints + passed into the constructor is used, where **n** is the length of `joint_positions`. + """ + + constraints = self.create_joint_constraints( + joint_positions=joint_positions, + joint_names=joint_names, + tolerance=tolerance, + weight=weight, + ) + + # Append to other constraints + self.__move_action_goal.request.path_constraints.joint_constraints.extend( + constraints + ) + + def set_path_position_constraint( + self, + position: Union[Point, Tuple[float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: float = 0.001, + weight: float = 1.0, + ): + """ + Set Cartesian position path constraint of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + constraint = self.create_position_constraint( + position=position, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance, + weight=weight, + ) + + # Append to other constraints + self.__move_action_goal.request.path_constraints.position_constraints.append( + constraint + ) + + def set_path_orientation_constraint( + self, + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + frame_id: Optional[str] = None, + target_link: Optional[str] = None, + tolerance: Union[float, Tuple[float, float, float]] = 0.001, + weight: float = 1.0, + parameterization: int = 0, # 0: Euler Angles, 1: Rotation Vector + ): + """ + Set Cartesian orientation path constraint of `target_link` with respect to `frame_id`. + - `frame_id` defaults to the base link + - `target_link` defaults to end effector + """ + + constraint = self.create_orientation_constraint( + quat_xyzw=quat_xyzw, + frame_id=frame_id, + target_link=target_link, + tolerance=tolerance, + weight=weight, + parameterization=parameterization, + ) + + # Append to other constraints + self.__move_action_goal.request.path_constraints.orientation_constraints.append( + constraint + ) + + def clear_path_constraints(self): + """ + Clear all path constraints that were previously set. + Note that this function is called automatically after each `plan_kinematic_path()`. + """ + + self.__move_action_goal.request.path_constraints = Constraints() + + def compute_fk( + self, + joint_state: Optional[Union[JointState, List[float]]] = None, + fk_link_names: Optional[List[str]] = None, + ) -> Optional[Union[PoseStamped, List[PoseStamped]]]: + """ + Call compute_fk_async and wait on future + """ + future = self.compute_fk_async( + **{key: value for key, value in locals().items() if key != "self"} + ) + + if future is None: + return None + + # 100ms sleep + rate = self._node.create_rate(10) + while not future.done(): + rate.sleep() + + return self.get_compute_fk_result(future, fk_link_names=fk_link_names) + + def get_compute_fk_result( + self, + future: Future, + fk_link_names: Optional[List[str]] = None, + ) -> Optional[Union[PoseStamped, List[PoseStamped]]]: + """ + Takes in a future returned by compute_fk_async and returns the poses + if the future is done and successful, else None. + """ + if not future.done(): + self._node.get_logger().warn( + "Cannot get FK result because future is not done." + ) + return None + + res = future.result() + + if MoveItErrorCodes.SUCCESS == res.error_code.val: + if fk_link_names is None: + return res.pose_stamped[0] + else: + return res.pose_stamped + else: + self._node.get_logger().warn( + f"FK computation failed! Error code: {res.error_code.val}." + ) + return None + + def compute_fk_async( + self, + joint_state: Optional[Union[JointState, List[float]]] = None, + fk_link_names: Optional[List[str]] = None, + ) -> Optional[Future]: + """ + Compute forward kinematics for all `fk_link_names` in a given `joint_state`. + - `fk_link_names` defaults to end-effector + - `joint_state` defaults to the current joint state + """ + + if not hasattr(self, "__compute_fk_client"): + self.__init_compute_fk() + + if fk_link_names is None: + self.__compute_fk_req.fk_link_names = [self.__end_effector_name] + else: + self.__compute_fk_req.fk_link_names = fk_link_names + + if joint_state is not None: + if isinstance(joint_state, JointState): + self.__compute_fk_req.robot_state.joint_state = joint_state + else: + self.__compute_fk_req.robot_state.joint_state = init_joint_state( + joint_names=self.__joint_names, + joint_positions=joint_state, + ) + elif self.joint_state is not None: + self.__compute_fk_req.robot_state.joint_state = self.joint_state + + stamp = self._node.get_clock().now().to_msg() + self.__compute_fk_req.header.stamp = stamp + + if not self.__compute_fk_client.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self.__compute_fk_client.srv_name}' is not yet available. Better luck next time!" + ) + return None + + return self.__compute_fk_client.call_async(self.__compute_fk_req) + + def compute_ik( + self, + position: Union[Point, Tuple[float, float, float]], + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + start_joint_state: Optional[Union[JointState, List[float]]] = None, + constraints: Optional[Constraints] = None, + wait_for_server_timeout_sec: Optional[float] = 1.0, + ) -> Optional[JointState]: + """ + Call compute_ik_async and wait on future + """ + future = self.compute_ik_async( + **{key: value for key, value in locals().items() if key != "self"} + ) + + if future is None: + return None + + # 10ms sleep + rate = self._node.create_rate(10) + while not future.done(): + rate.sleep() + + return self.get_compute_ik_result(future) + + def get_compute_ik_result( + self, + future: Future, + ) -> Optional[JointState]: + """ + Takes in a future returned by compute_ik_async and returns the joint states + if the future is done and successful, else None. + """ + if not future.done(): + self._node.get_logger().warn( + "Cannot get IK result because future is not done." + ) + return None + + res = future.result() + + if MoveItErrorCodes.SUCCESS == res.error_code.val: + return res.solution.joint_state + else: + self._node.get_logger().warn( + f"IK computation failed! Error code: {res.error_code.val}." + ) + return None + + def compute_ik_async( + self, + position: Union[Point, Tuple[float, float, float]], + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + start_joint_state: Optional[Union[JointState, List[float]]] = None, + constraints: Optional[Constraints] = None, + wait_for_server_timeout_sec: Optional[float] = 1.0, + ) -> Optional[Future]: + """ + Compute inverse kinematics for the given pose. To indicate beginning of the search space, + `start_joint_state` can be specified. Furthermore, `constraints` can be imposed on the + computed IK. + - `start_joint_state` defaults to current joint state. + - `constraints` defaults to None. + """ + + if not hasattr(self, "__compute_ik_client"): + self.__init_compute_ik() + + if isinstance(position, Point): + self.__compute_ik_req.ik_request.pose_stamped.pose.position = position + else: + self.__compute_ik_req.ik_request.pose_stamped.pose.position.x = float( + position[0] + ) + self.__compute_ik_req.ik_request.pose_stamped.pose.position.y = float( + position[1] + ) + self.__compute_ik_req.ik_request.pose_stamped.pose.position.z = float( + position[2] + ) + if isinstance(quat_xyzw, Quaternion): + self.__compute_ik_req.ik_request.pose_stamped.pose.orientation = quat_xyzw + else: + self.__compute_ik_req.ik_request.pose_stamped.pose.orientation.x = float( + quat_xyzw[0] + ) + self.__compute_ik_req.ik_request.pose_stamped.pose.orientation.y = float( + quat_xyzw[1] + ) + self.__compute_ik_req.ik_request.pose_stamped.pose.orientation.z = float( + quat_xyzw[2] + ) + self.__compute_ik_req.ik_request.pose_stamped.pose.orientation.w = float( + quat_xyzw[3] + ) + + if start_joint_state is not None: + if isinstance(start_joint_state, JointState): + self.__compute_ik_req.ik_request.robot_state.joint_state = ( + start_joint_state + ) + else: + self.__compute_ik_req.ik_request.robot_state.joint_state = ( + init_joint_state( + joint_names=self.__joint_names, + joint_positions=start_joint_state, + ) + ) + elif self.joint_state is not None: + self.__compute_ik_req.ik_request.robot_state.joint_state = self.joint_state + + if constraints is not None: + self.__compute_ik_req.ik_request.constraints = constraints + + stamp = self._node.get_clock().now().to_msg() + self.__compute_ik_req.ik_request.pose_stamped.header.stamp = stamp + + if not self.__compute_ik_client.wait_for_service( + timeout_sec=wait_for_server_timeout_sec + ): + self._node.get_logger().warn( + f"Service '{self.__compute_ik_client.srv_name}' is not yet available. Better luck next time!" + ) + return None + + return self.__compute_ik_client.call_async(self.__compute_ik_req) + + def reset_new_joint_state_checker(self): + """ + Reset checker of the new joint state. + """ + + self.__joint_state_mutex.acquire() + self.__new_joint_state_available = False + self.__joint_state_mutex.release() + + def force_reset_executing_state(self): + """ + Force reset of internal states that block execution while `ignore_new_calls_while_executing` is being + used. This function is applicable only in a very few edge-cases, so it should almost never be used. + """ + + self.__execution_mutex.acquire() + self.__is_motion_requested = False + self.__is_executing = False + self.__execution_mutex.release() + + def add_collision_primitive( + self, + id: str, + primitive_type: int, + dimensions: Tuple[float, float, float], + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + ): + """ + Add collision object with a primitive geometry specified by its dimensions. + + `primitive_type` can be one of the following: + - `SolidPrimitive.BOX` + - `SolidPrimitive.SPHERE` + - `SolidPrimitive.CYLINDER` + - `SolidPrimitive.CONE` + """ + + if (pose is None) and (position is None or quat_xyzw is None): + raise ValueError( + "Either `pose` or `position` and `quat_xyzw` must be specified!" + ) + + if isinstance(pose, PoseStamped): + pose_stamped = pose + elif isinstance(pose, Pose): + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=pose, + ) + else: + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=Pose(position=position, orientation=quat_xyzw), + ) + + msg = CollisionObject( + header=pose_stamped.header, + id=id, + operation=operation, + pose=pose_stamped.pose, + ) + + msg.primitives.append( + SolidPrimitive(type=primitive_type, dimensions=dimensions) + ) + + self.__collision_object_publisher.publish(msg) + + def add_collision_box( + self, + id: str, + size: Tuple[float, float, float], + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + ): + """ + Add collision object with a box geometry specified by its size. + """ + + assert len(size) == 3, "Invalid size of the box!" + + self.add_collision_primitive( + id=id, + primitive_type=SolidPrimitive.BOX, + dimensions=size, + pose=pose, + position=position, + quat_xyzw=quat_xyzw, + frame_id=frame_id, + operation=operation, + ) + + def add_collision_sphere( + self, + id: str, + radius: float, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + ): + """ + Add collision object with a sphere geometry specified by its radius. + """ + + if quat_xyzw is None: + quat_xyzw = Quaternion(x=0.0, y=0.0, z=0.0, w=1.0) + + self.add_collision_primitive( + id=id, + primitive_type=SolidPrimitive.SPHERE, + dimensions=[ + radius, + ], + pose=pose, + position=position, + quat_xyzw=quat_xyzw, + frame_id=frame_id, + operation=operation, + ) + + def add_collision_cylinder( + self, + id: str, + height: float, + radius: float, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + ): + """ + Add collision object with a cylinder geometry specified by its height and radius. + """ + + self.add_collision_primitive( + id=id, + primitive_type=SolidPrimitive.CYLINDER, + dimensions=[height, radius], + pose=pose, + position=position, + quat_xyzw=quat_xyzw, + frame_id=frame_id, + operation=operation, + ) + + def add_collision_cone( + self, + id: str, + height: float, + radius: float, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + ): + """ + Add collision object with a cone geometry specified by its height and radius. + """ + + self.add_collision_primitive( + id=id, + primitive_type=SolidPrimitive.CONE, + dimensions=[height, radius], + pose=pose, + position=position, + quat_xyzw=quat_xyzw, + frame_id=frame_id, + operation=operation, + ) + + def add_collision_mesh( + self, + filepath: Optional[str], + id: str, + pose: Optional[Union[PoseStamped, Pose]] = None, + position: Optional[Union[Point, Tuple[float, float, float]]] = None, + quat_xyzw: Optional[ + Union[Quaternion, Tuple[float, float, float, float]] + ] = None, + frame_id: Optional[str] = None, + operation: int = CollisionObject.ADD, + scale: Union[float, Tuple[float, float, float]] = 1.0, + mesh: Optional[Any] = None, + ): + """ + Add collision object with a mesh geometry. Either `filepath` must be + specified or `mesh` must be provided. + Note: This function required 'trimesh' Python module to be installed. + """ + + # Load the mesh + try: + import trimesh + except ImportError as err: + raise ImportError( + "Python module 'trimesh' not found! Please install it manually in order " + "to add collision objects into the MoveIt 2 planning scene." + ) from err + + # Check the parameters + if (pose is None) and (position is None or quat_xyzw is None): + raise ValueError( + "Either `pose` or `position` and `quat_xyzw` must be specified!" + ) + if (filepath is None and mesh is None) or ( + filepath is not None and mesh is not None + ): + raise ValueError("Exactly one of `filepath` or `mesh` must be specified!") + if mesh is not None and not isinstance(mesh, trimesh.Trimesh): + raise ValueError("`mesh` must be an instance of `trimesh.Trimesh`!") + + if isinstance(pose, PoseStamped): + pose_stamped = pose + elif isinstance(pose, Pose): + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=pose, + ) + else: + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + pose_stamped = PoseStamped( + header=Header( + stamp=self._node.get_clock().now().to_msg(), + frame_id=( + frame_id if frame_id is not None else self.__base_link_name + ), + ), + pose=Pose(position=position, orientation=quat_xyzw), + ) + + msg = CollisionObject( + header=pose_stamped.header, + id=id, + operation=operation, + pose=pose_stamped.pose, + ) + + if filepath is not None: + mesh = trimesh.load(filepath) + + # Scale the mesh + if isinstance(scale, float): + scale = (scale, scale, scale) + if not (scale[0] == scale[1] == scale[2] == 1.0): + # If the mesh was passed in as a parameter, make a copy of it to + # avoid transforming the original. + if filepath is not None: + mesh = mesh.copy() + # Transform the mesh + transform = np.eye(4) + np.fill_diagonal(transform, scale) + mesh.apply_transform(transform) + + msg.meshes.append( + Mesh( + triangles=[MeshTriangle(vertex_indices=face) for face in mesh.faces], + vertices=[ + Point(x=vert[0], y=vert[1], z=vert[2]) for vert in mesh.vertices + ], + ) + ) + + self.__collision_object_publisher.publish(msg) + + def remove_collision_object(self, id: str): + """ + Remove collision object specified by its `id`. + """ + + msg = CollisionObject() + msg.id = id + msg.operation = CollisionObject.REMOVE + msg.header.stamp = self._node.get_clock().now().to_msg() + self.__collision_object_publisher.publish(msg) + + def remove_collision_mesh(self, id: str): + """ + Remove collision mesh specified by its `id`. + Identical to `remove_collision_object()`. + """ + + self.remove_collision_object(id) + + def attach_collision_object( + self, + id: str, + link_name: Optional[str] = None, + touch_links: List[str] = [], + weight: float = 0.0, + ): + """ + Attach collision object to the robot. + """ + + if link_name is None: + link_name = self.__end_effector_name + + msg = AttachedCollisionObject( + object=CollisionObject(id=id, operation=CollisionObject.ADD) + ) + msg.link_name = link_name + msg.touch_links = touch_links + msg.weight = weight + + self.__attached_collision_object_publisher.publish(msg) + + def detach_collision_object(self, id: int): + """ + Detach collision object from the robot. + """ + + msg = AttachedCollisionObject( + object=CollisionObject(id=id, operation=CollisionObject.REMOVE) + ) + self.__attached_collision_object_publisher.publish(msg) + + def detach_all_collision_objects(self): + """ + Detach collision object from the robot. + """ + + msg = AttachedCollisionObject( + object=CollisionObject(operation=CollisionObject.REMOVE) + ) + self.__attached_collision_object_publisher.publish(msg) + + def move_collision( + self, + id: str, + position: Union[Point, Tuple[float, float, float]], + quat_xyzw: Union[Quaternion, Tuple[float, float, float, float]], + frame_id: Optional[str] = None, + ): + """ + Move collision object specified by its `id`. + """ + + msg = CollisionObject() + + if not isinstance(position, Point): + position = Point( + x=float(position[0]), y=float(position[1]), z=float(position[2]) + ) + if not isinstance(quat_xyzw, Quaternion): + quat_xyzw = Quaternion( + x=float(quat_xyzw[0]), + y=float(quat_xyzw[1]), + z=float(quat_xyzw[2]), + w=float(quat_xyzw[3]), + ) + + pose = Pose() + pose.position = position + pose.orientation = quat_xyzw + msg.pose = pose + msg.id = id + msg.operation = CollisionObject.MOVE + msg.header.frame_id = ( + frame_id if frame_id is not None else self.__base_link_name + ) + msg.header.stamp = self._node.get_clock().now().to_msg() + + self.__collision_object_publisher.publish(msg) + + def update_planning_scene(self) -> bool: + """ + Gets the current planning scene. Returns whether the service call was + successful. + """ + + if not self._get_planning_scene_service.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self._get_planning_scene_service.srv_name}' is not yet available. Better luck next time!" + ) + return False + self.__planning_scene = self._get_planning_scene_service.call( + GetPlanningScene.Request() + ).scene + return True + + def allow_collisions(self, id: str, allow: bool) -> Optional[Future]: + """ + Takes in the ID of an element in the planning scene. Modifies the allowed + collision matrix to (dis)allow collisions between that object and all other + object. + + If `allow` is True, a plan will succeed even if the robot collides with that object. + If `allow` is False, a plan will fail if the robot collides with that object. + Returns whether it successfully updated the allowed collision matrix. + + Returns the future of the service call. + """ + # Update the planning scene + if not self.update_planning_scene(): + return None + allowed_collision_matrix = self.__planning_scene.allowed_collision_matrix + self.__old_allowed_collision_matrix = copy.deepcopy(allowed_collision_matrix) + + # Get the location in the allowed collision matrix of the object + j = None + if id not in allowed_collision_matrix.entry_names: + allowed_collision_matrix.entry_names.append(id) + else: + j = allowed_collision_matrix.entry_names.index(id) + # For all other objects, (dis)allow collisions with the object with `id` + for i in range(len(allowed_collision_matrix.entry_values)): + if j is None: + allowed_collision_matrix.entry_values[i].enabled.append(allow) + elif i != j: + allowed_collision_matrix.entry_values[i].enabled[j] = allow + # For the object with `id`, (dis)allow collisions with all other objects + allowed_collision_entry = AllowedCollisionEntry( + enabled=[allow for _ in range(len(allowed_collision_matrix.entry_names))] + ) + if j is None: + allowed_collision_matrix.entry_values.append(allowed_collision_entry) + else: + allowed_collision_matrix.entry_values[j] = allowed_collision_entry + + # Apply the new planning scene + if not self._apply_planning_scene_service.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self._apply_planning_scene_service.srv_name}' is not yet available. Better luck next time!" + ) + return None + return self._apply_planning_scene_service.call_async( + ApplyPlanningScene.Request(scene=self.__planning_scene) + ) + + def process_allow_collision_future(self, future: Future) -> bool: + """ + Return whether the allow collision service call is done and has succeeded + or not. If it failed, reset the allowed collision matrix to the old one. + """ + if not future.done(): + return False + + # Get response + resp = future.result() + + # If it failed, restore the old planning scene + if not resp.success: + self.__planning_scene.allowed_collision_matrix = ( + self.__old_allowed_collision_matrix + ) + + return resp.success + + def clear_all_collision_objects(self) -> Optional[Future]: + """ + Removes all attached and un-attached collision objects from the planning scene. + + Returns a future for the ApplyPlanningScene service call. + """ + # Update the planning scene + if not self.update_planning_scene(): + return None + self.__old_planning_scene = copy.deepcopy(self.__planning_scene) + + # Remove all collision objects from the planning scene + self.__planning_scene.world.collision_objects = [] + self.__planning_scene.robot_state.attached_collision_objects = [] + + # Apply the new planning scene + if not self._apply_planning_scene_service.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self._apply_planning_scene_service.srv_name}' is not yet available. Better luck next time!" + ) + return None + return self._apply_planning_scene_service.call_async( + ApplyPlanningScene.Request(scene=self.__planning_scene) + ) + + def cancel_clear_all_collision_objects_future(self, future: Future): + """ + Cancel the clear all collision objects service call. + """ + self._apply_planning_scene_service.remove_pending_request(future) + + def process_clear_all_collision_objects_future(self, future: Future) -> bool: + """ + Return whether the clear all collision objects service call is done and has succeeded + or not. If it failed, restore the old planning scene. + """ + if not future.done(): + return False + + # Get response + resp = future.result() + + # If it failed, restore the old planning scene + if not resp.success: + self.__planning_scene = self.__old_planning_scene + + return resp.success + + def __joint_state_callback(self, msg: JointState): + # Update only if all relevant joints are included in the message + for joint_name in self.joint_names: + if not joint_name in msg.name: + return + + self.__joint_state_mutex.acquire() + self.__joint_state = msg + self.__new_joint_state_available = True + self.__joint_state_mutex.release() + + def _plan_kinematic_path(self) -> Optional[Future]: + # Reuse request from move action goal + self.__kinematic_path_request.motion_plan_request = ( + self.__move_action_goal.request + ) + + stamp = self._node.get_clock().now().to_msg() + self.__kinematic_path_request.motion_plan_request.workspace_parameters.header.stamp = ( + stamp + ) + for ( + constraints + ) in self.__kinematic_path_request.motion_plan_request.goal_constraints: + for position_constraint in constraints.position_constraints: + position_constraint.header.stamp = stamp + for orientation_constraint in constraints.orientation_constraints: + orientation_constraint.header.stamp = stamp + + if not self._plan_kinematic_path_service.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self._plan_kinematic_path_service.srv_name}' is not yet available. Better luck next time!" + ) + return None + + return self._plan_kinematic_path_service.call_async( + self.__kinematic_path_request + ) + + def _plan_cartesian_path( + self, + max_step: float = 0.0025, + frame_id: Optional[str] = None, + ) -> Optional[Future]: + # Reuse request from move action goal + self.__cartesian_path_request.start_state = ( + self.__move_action_goal.request.start_state + ) + + # The below attributes were introduced in Iron and do not exist in Humble. + if hasattr(self.__cartesian_path_request, "max_velocity_scaling_factor"): + self.__cartesian_path_request.max_velocity_scaling_factor = ( + self.__move_action_goal.request.max_velocity_scaling_factor + ) + if hasattr(self.__cartesian_path_request, "max_acceleration_scaling_factor"): + self.__cartesian_path_request.max_acceleration_scaling_factor = ( + self.__move_action_goal.request.max_acceleration_scaling_factor + ) + + self.__cartesian_path_request.group_name = ( + self.__move_action_goal.request.group_name + ) + self.__cartesian_path_request.link_name = self.__end_effector_name + self.__cartesian_path_request.max_step = max_step + + self.__cartesian_path_request.header.frame_id = ( + frame_id if frame_id is not None else self.__base_link_name + ) + + stamp = self._node.get_clock().now().to_msg() + self.__cartesian_path_request.header.stamp = stamp + + self.__cartesian_path_request.path_constraints = ( + self.__move_action_goal.request.path_constraints + ) + for ( + position_constraint + ) in self.__cartesian_path_request.path_constraints.position_constraints: + position_constraint.header.stamp = stamp + for ( + orientation_constraint + ) in self.__cartesian_path_request.path_constraints.orientation_constraints: + orientation_constraint.header.stamp = stamp + # no header in joint_constraint message type + + target_pose = Pose() + target_pose.position = ( + self.__move_action_goal.request.goal_constraints[-1] + .position_constraints[-1] + .constraint_region.primitive_poses[0] + .position + ) + target_pose.orientation = ( + self.__move_action_goal.request.goal_constraints[-1] + .orientation_constraints[-1] + .orientation + ) + + self.__cartesian_path_request.waypoints = [target_pose] + + if not self._plan_cartesian_path_service.service_is_ready(): + self._node.get_logger().warn( + f"Service '{self._plan_cartesian_path_service.srv_name}' is not yet available. Better luck next time!" + ) + return None + + return self._plan_cartesian_path_service.call_async( + self.__cartesian_path_request + ) + + def _send_goal_async_move_action(self): + self.__execution_mutex.acquire() + stamp = self._node.get_clock().now().to_msg() + self.__move_action_goal.request.workspace_parameters.header.stamp = stamp + if not self.__move_action_client.server_is_ready(): + self._node.get_logger().warn( + f"Action server '{self.__move_action_client._action_name}' is not yet available. Better luck next time!" + ) + return + + self.__last_error_code = None + self.__is_motion_requested = True + self.__send_goal_future_move_action = self.__move_action_client.send_goal_async( + goal=self.__move_action_goal, + feedback_callback=None, + ) + + self.__send_goal_future_move_action.add_done_callback( + self.__response_callback_move_action + ) + + self.__execution_mutex.release() + + def __response_callback_move_action(self, response): + self.__execution_mutex.acquire() + goal_handle = response.result() + if not goal_handle.accepted: + self._node.get_logger().warn( + f"Action '{self.__move_action_client._action_name}' was rejected." + ) + self.__is_motion_requested = False + return + + self.__execution_goal_handle = goal_handle + self.__is_executing = True + self.__is_motion_requested = False + + self.__get_result_future_move_action = goal_handle.get_result_async() + self.__get_result_future_move_action.add_done_callback( + self.__result_callback_move_action + ) + self.__execution_mutex.release() + + def __result_callback_move_action(self, res): + self.__execution_mutex.acquire() + if res.result().status != GoalStatus.STATUS_SUCCEEDED: + self._node.get_logger().warn( + f"Action '{self.__move_action_client._action_name}' was unsuccessful: {res.result().status}." + ) + self.motion_suceeded = False + else: + self.motion_suceeded = True + + self.__last_error_code = res.result().result.error_code + + self.__execution_goal_handle = None + self.__is_executing = False + self.__execution_mutex.release() + + def _send_goal_async_execute_trajectory( + self, + goal: ExecuteTrajectory, + wait_until_response: bool = False, + ): + self.__execution_mutex.acquire() + + if not self._execute_trajectory_action_client.server_is_ready(): + self._node.get_logger().warn( + f"Action server '{self._execute_trajectory_action_client._action_name}' is not yet available. Better luck next time!" + ) + return + + self.__last_error_code = None + self.__is_motion_requested = True + self.__send_goal_future_execute_trajectory = ( + self._execute_trajectory_action_client.send_goal_async( + goal=goal, + feedback_callback=None, + ) + ) + + self.__send_goal_future_execute_trajectory.add_done_callback( + self.__response_callback_execute_trajectory + ) + self.__execution_mutex.release() + + def __response_callback_execute_trajectory(self, response): + self.__execution_mutex.acquire() + goal_handle = response.result() + if not goal_handle.accepted: + self._node.get_logger().warn( + f"Action '{self._execute_trajectory_action_client._action_name}' was rejected." + ) + self.__is_motion_requested = False + return + + self.__execution_goal_handle = goal_handle + self.__is_executing = True + self.__is_motion_requested = False + + self.__get_result_future_execute_trajectory = goal_handle.get_result_async() + self.__get_result_future_execute_trajectory.add_done_callback( + self.__result_callback_execute_trajectory + ) + self.__execution_mutex.release() + + def __response_callback_with_event_set_execute_trajectory(self, response): + self.__future_done_event.set() + + def __result_callback_execute_trajectory(self, res): + self.__execution_mutex.acquire() + if res.result().status != GoalStatus.STATUS_SUCCEEDED: + self._node.get_logger().warn( + f"Action '{self._execute_trajectory_action_client._action_name}' was unsuccessful: {res.result().status}." + ) + self.motion_suceeded = False + else: + self.motion_suceeded = True + + self.__last_error_code = res.result().result.error_code + + self.__execution_goal_handle = None + self.__is_executing = False + self.__execution_mutex.release() + + @classmethod + def __init_move_action_goal( + cls, frame_id: str, group_name: str, end_effector: str + ) -> MoveGroup.Goal: + move_action_goal = MoveGroup.Goal() + move_action_goal.request.workspace_parameters.header.frame_id = frame_id + # move_action_goal.request.workspace_parameters.header.stamp = "Set during request" + move_action_goal.request.workspace_parameters.min_corner.x = -1.0 + move_action_goal.request.workspace_parameters.min_corner.y = -1.0 + move_action_goal.request.workspace_parameters.min_corner.z = -1.0 + move_action_goal.request.workspace_parameters.max_corner.x = 1.0 + move_action_goal.request.workspace_parameters.max_corner.y = 1.0 + move_action_goal.request.workspace_parameters.max_corner.z = 1.0 + # move_action_goal.request.start_state = "Set during request" + move_action_goal.request.goal_constraints = [Constraints()] + move_action_goal.request.path_constraints = Constraints() + # move_action_goal.request.trajectory_constraints = "Ignored" + # move_action_goal.request.reference_trajectories = "Ignored" + move_action_goal.request.pipeline_id = "" + move_action_goal.request.planner_id = "" + move_action_goal.request.group_name = group_name + move_action_goal.request.num_planning_attempts = 3 + move_action_goal.request.allowed_planning_time = 0.5 + move_action_goal.request.max_velocity_scaling_factor = 0.0 + move_action_goal.request.max_acceleration_scaling_factor = 0.0 + # Note: Attribute was renamed in Iron (https://github.com/ros-planning/moveit_msgs/pull/130) + if hasattr(move_action_goal.request, "cartesian_speed_limited_link"): + move_action_goal.request.cartesian_speed_limited_link = end_effector + else: + move_action_goal.request.cartesian_speed_end_effector_link = end_effector + move_action_goal.request.max_cartesian_speed = 0.0 + + # move_action_goal.planning_options.planning_scene_diff = "Ignored" + move_action_goal.planning_options.plan_only = False + # move_action_goal.planning_options.look_around = "Ignored" + # move_action_goal.planning_options.look_around_attempts = "Ignored" + # move_action_goal.planning_options.max_safe_execution_cost = "Ignored" + # move_action_goal.planning_options.replan = "Ignored" + # move_action_goal.planning_options.replan_attempts = "Ignored" + # move_action_goal.planning_options.replan_delay = "Ignored" + + return move_action_goal + + def __init_compute_fk(self): + self.__compute_fk_client = self._node.create_client( + srv_type=GetPositionFK, + srv_name="/compute_fk", + callback_group=self._callback_group, + ) + + self.__compute_fk_req = GetPositionFK.Request() + self.__compute_fk_req.header.frame_id = self.__base_link_name + # self.__compute_fk_req.header.stamp = "Set during request" + # self.__compute_fk_req.fk_link_names = "Set during request" + # self.__compute_fk_req.robot_state.joint_state = "Set during request" + # self.__compute_fk_req.robot_state.multi_dof_ = "Ignored" + # self.__compute_fk_req.robot_state.attached_collision_objects = "Ignored" + self.__compute_fk_req.robot_state.is_diff = False + + def __init_compute_ik(self): + # Service client for IK + self.__compute_ik_client = self._node.create_client( + srv_type=GetPositionIK, + srv_name="/compute_ik", + callback_group=self._callback_group, + ) + + self.__compute_ik_req = GetPositionIK.Request() + self.__compute_ik_req.ik_request.group_name = self.__group_name + # self.__compute_ik_req.ik_request.robot_state.joint_state = "Set during request" + # self.__compute_ik_req.ik_request.robot_state.multi_dof_ = "Ignored" + # self.__compute_ik_req.ik_request.robot_state.attached_collision_objects = "Ignored" + self.__compute_ik_req.ik_request.robot_state.is_diff = False + # self.__compute_ik_req.ik_request.constraints = "Set during request OR Ignored" + self.__compute_ik_req.ik_request.avoid_collisions = True + # self.__compute_ik_req.ik_request.ik_link_name = "Ignored" + self.__compute_ik_req.ik_request.pose_stamped.header.frame_id = ( + self.__base_link_name + ) + # self.__compute_ik_req.ik_request.pose_stamped.header.stamp = "Set during request" + # self.__compute_ik_req.ik_request.pose_stamped.pose = "Set during request" + # self.__compute_ik_req.ik_request.ik_link_names = "Ignored" + # self.__compute_ik_req.ik_request.pose_stamped_vector = "Ignored" + # self.__compute_ik_req.ik_request.timeout.sec = "Ignored" + # self.__compute_ik_req.ik_request.timeout.nanosec = "Ignored" + + @property + def planning_scene(self) -> Optional[PlanningScene]: + return self.__planning_scene + + @property + def follow_joint_trajectory_action_client(self) -> str: + return self.__follow_joint_trajectory_action_client + + @property + def end_effector_name(self) -> str: + return self.__end_effector_name + + @property + def base_link_name(self) -> str: + return self.__base_link_name + + @property + def joint_names(self) -> List[str]: + return self.__joint_names + + @property + def joint_state(self) -> Optional[JointState]: + self.__joint_state_mutex.acquire() + joint_state = self.__joint_state + self.__joint_state_mutex.release() + return joint_state + + @property + def new_joint_state_available(self): + return self.__new_joint_state_available + + @property + def max_velocity(self) -> float: + return self.__move_action_goal.request.max_velocity_scaling_factor + + @max_velocity.setter + def max_velocity(self, value: float): + self.__move_action_goal.request.max_velocity_scaling_factor = value + + @property + def max_acceleration(self) -> float: + return self.__move_action_goal.request.max_acceleration_scaling_factor + + @max_acceleration.setter + def max_acceleration(self, value: float): + self.__move_action_goal.request.max_acceleration_scaling_factor = value + + @property + def num_planning_attempts(self) -> int: + return self.__move_action_goal.request.num_planning_attempts + + @num_planning_attempts.setter + def num_planning_attempts(self, value: int): + self.__move_action_goal.request.num_planning_attempts = value + + @property + def allowed_planning_time(self) -> float: + return self.__move_action_goal.request.allowed_planning_time + + @allowed_planning_time.setter + def allowed_planning_time(self, value: float): + self.__move_action_goal.request.allowed_planning_time = value + + @property + def cartesian_avoid_collisions(self) -> bool: + return self.__cartesian_path_request.request.avoid_collisions + + @cartesian_avoid_collisions.setter + def cartesian_avoid_collisions(self, value: bool): + self.__cartesian_path_request.avoid_collisions = value + + @property + def cartesian_jump_threshold(self) -> float: + return self.__cartesian_path_request.request.jump_threshold + + @cartesian_jump_threshold.setter + def cartesian_jump_threshold(self, value: float): + self.__cartesian_path_request.jump_threshold = value + + @property + def cartesian_prismatic_jump_threshold(self) -> float: + return self.__cartesian_path_request.request.prismatic_jump_threshold + + @cartesian_prismatic_jump_threshold.setter + def cartesian_prismatic_jump_threshold(self, value: float): + self.__cartesian_path_request.prismatic_jump_threshold = value + + @property + def cartesian_revolute_jump_threshold(self) -> float: + return self.__cartesian_path_request.request.revolute_jump_threshold + + @cartesian_revolute_jump_threshold.setter + def cartesian_revolute_jump_threshold(self, value: float): + self.__cartesian_path_request.revolute_jump_threshold = value + + @property + def pipeline_id(self) -> int: + return self.__move_action_goal.request.pipeline_id + + @pipeline_id.setter + def pipeline_id(self, value: str): + self.__move_action_goal.request.pipeline_id = value + + @property + def planner_id(self) -> int: + return self.__move_action_goal.request.planner_id + + @planner_id.setter + def planner_id(self, value: str): + self.__move_action_goal.request.planner_id = value + + +def init_joint_state( + joint_names: List[str], + joint_positions: Optional[List[str]] = None, + joint_velocities: Optional[List[str]] = None, + joint_effort: Optional[List[str]] = None, +) -> JointState: + joint_state = JointState() + + joint_state.name = joint_names + joint_state.position = ( + joint_positions if joint_positions is not None else [0.0] * len(joint_names) + ) + joint_state.velocity = ( + joint_velocities if joint_velocities is not None else [0.0] * len(joint_names) + ) + joint_state.effort = ( + joint_effort if joint_effort is not None else [0.0] * len(joint_names) + ) + + return joint_state + + +def init_execute_trajectory_goal( + joint_trajectory: JointTrajectory, +) -> Optional[ExecuteTrajectory.Goal]: + if joint_trajectory is None: + return None + + execute_trajectory_goal = ExecuteTrajectory.Goal() + + execute_trajectory_goal.trajectory.joint_trajectory = joint_trajectory + + return execute_trajectory_goal + + +def init_dummy_joint_trajectory_from_state( + joint_state: JointState, duration_sec: int = 0, duration_nanosec: int = 0 +) -> JointTrajectory: + joint_trajectory = JointTrajectory() + joint_trajectory.joint_names = joint_state.name + + point = JointTrajectoryPoint() + point.positions = joint_state.position + point.velocities = joint_state.velocity + point.accelerations = [0.0] * len(joint_trajectory.joint_names) + point.effort = joint_state.effort + point.time_from_start.sec = duration_sec + point.time_from_start.nanosec = duration_nanosec + joint_trajectory.points.append(point) + + return joint_trajectory diff --git a/unilabos/devices/ros_dev/moveit_interface.py b/unilabos/devices/ros_dev/moveit_interface.py new file mode 100644 index 00000000..d0654035 --- /dev/null +++ b/unilabos/devices/ros_dev/moveit_interface.py @@ -0,0 +1,384 @@ +import json +import time +from copy import deepcopy +from pathlib import Path + +from moveit_msgs.msg import JointConstraint, Constraints +from rclpy.action import ActionClient +from tf2_ros import Buffer, TransformListener +from unilabos_msgs.action import SendCmd + +from unilabos.devices.ros_dev.moveit2 import MoveIt2 +from unilabos.ros.nodes.base_device_node import BaseROS2DeviceNode + + +class MoveitInterface: + _ros_node: BaseROS2DeviceNode + tf_buffer: Buffer + tf_listener: TransformListener + + def __init__(self, moveit_type, joint_poses, rotation=None, device_config=None): + self.device_config = device_config + self.rotation = rotation + self.data_config = json.load( + open( + f"{Path(__file__).parent.parent.parent.absolute()}/device_mesh/devices/{moveit_type}/config/move_group.json", + encoding="utf-8", + ) + ) + self.arm_move_flag = False + self.move_option = ["pick", "place", "side_pick", "side_place"] + self.joint_poses = joint_poses + self.cartesian_flag = False + self.mesh_group = ["reactor", "sample", "beaker"] + self.moveit2 = {} + self.resource_action = None + self.resource_client = None + self.resource_action_ok = False + + + def post_init(self, ros_node: BaseROS2DeviceNode): + self._ros_node = ros_node + self.tf_buffer = Buffer() + self.tf_listener = TransformListener(self.tf_buffer, self._ros_node) + + for move_group, config in self.data_config.items(): + + base_link_name = f"{self._ros_node.device_id}_{config['base_link_name']}" + end_effector_name = f"{self._ros_node.device_id}_{config['end_effector_name']}" + joint_names = [f"{self._ros_node.device_id}_{name}" for name in config["joint_names"]] + + self.moveit2[f"{move_group}"] = MoveIt2( + node=self._ros_node, + joint_names=joint_names, + base_link_name=base_link_name, + end_effector_name=end_effector_name, + group_name=f"{self._ros_node.device_id}_{move_group}", + callback_group=self._ros_node.callback_group, + use_move_group_action=True, + ignore_new_calls_while_executing=True, + ) + self.moveit2[f"{move_group}"].allowed_planning_time = 3.0 + + self._ros_node.create_timer(1, self.wait_for_resource_action, callback_group=self._ros_node.callback_group) + + + def wait_for_resource_action(self): + if not self.resource_action_ok: + + while self.resource_action is None: + self.resource_action = self.check_tf_update_actions() + time.sleep(1) + self.resource_client = ActionClient(self._ros_node, SendCmd, self.resource_action) + self.resource_action_ok = True + while not self.resource_client.wait_for_server(timeout_sec=5.0): + self._ros_node.lab_logger().info("等待 TfUpdate 服务器...") + + def check_tf_update_actions(self): + topics = self._ros_node.get_topic_names_and_types() + for topic_item in topics: + topic_name, topic_types = topic_item + if "action_msgs/msg/GoalStatusArray" in topic_types: + # 删除 /_action/status 部分 + + base_name = topic_name.replace("/_action/status", "") + # 检查最后一个部分是否为 tf_update + parts = base_name.split("/") + if parts and parts[-1] == "tf_update": + return base_name + + return None + + def set_position(self, command): + """使用moveit 移动到指定点 + Args: + command: A JSON-formatted string that includes quaternion, speed, position + + position (list) : 点的位置 [x,y,z] + quaternion (list) : 点的姿态(四元数) [x,y,z,w] + move_group (string) : The move group moveit will plan + speed (float) : The speed of the movement, speed > 0 + retry (int) : Retry times when moveit plan fails + + Returns: + None + """ + + result = SendCmd.Result() + cmd_str = command.replace("'", '"') + cmd_dict = json.loads(cmd_str) + self.moveit_task(**cmd_dict) + return result + + def moveit_task( + self, move_group, position, quaternion, speed=1, retry=10, cartesian=False, target_link=None, offsets=[0, 0, 0] + ): + + speed_ = float(max(0.1, min(speed, 1))) + + self.moveit2[move_group].max_velocity = speed_ + self.moveit2[move_group].max_acceleration = speed_ + + re_ = False + + pose_result = [x + y for x, y in zip(position, offsets)] + # print(pose_result) + + while retry > -1 and not re_: + + self.moveit2[move_group].move_to_pose( + target_link=target_link, + position=pose_result, + quat_xyzw=quaternion, + cartesian=cartesian, + # cartesian_fraction_threshold=0.0, + cartesian_max_step=0.01, + weight_position=1.0, + ) + re_ = self.moveit2[move_group].wait_until_executed() + retry += -1 + + return re_ + + def moveit_joint_task(self, move_group, joint_positions, joint_names=None, speed=1, retry=10): + + re_ = False + + joint_positions_ = [float(x) for x in joint_positions] + + speed_ = float(max(0.1, min(speed, 1))) + + self.moveit2[move_group].max_velocity = speed_ + self.moveit2[move_group].max_acceleration = speed_ + + while retry > -1 and not re_: + + self.moveit2[move_group].move_to_configuration(joint_positions=joint_positions_, joint_names=joint_names) + re_ = self.moveit2[move_group].wait_until_executed() + + retry += -1 + print(self.moveit2[move_group].compute_fk(joint_positions)) + return re_ + + def resource_manager(self, resource, parent_link): + goal_msg = SendCmd.Goal() + str_dict = {} + str_dict[resource] = parent_link + + goal_msg.command = json.dumps(str_dict) + assert self.resource_client is not None + self.resource_client.send_goal(goal_msg) + + return True + + def pick_and_place(self, command: str): + """ + Using MoveIt to make the robotic arm pick or place materials to a target point. + + Args: + command: A JSON-formatted string that includes option, target, speed, lift_height, mt_height + + *option (string) : Action type: pick/place/side_pick/side_place + *move_group (string): The move group moveit will plan + *status(string) : Target pose + resource(string) : The target resource + x_distance (float) : The distance to the target in x direction(meters) + y_distance (float) : The distance to the target in y direction(meters) + lift_height (float) : The height at which the material should be lifted(meters) + retry (float) : Retry times when moveit plan fails + speed (float) : The speed of the movement, speed > 0 + Returns: + None + """ + result = SendCmd.Result() + + try: + cmd_str = str(command).replace("'", '"') + cmd_dict = json.loads(cmd_str) + + if cmd_dict["option"] in self.move_option: + option_index = self.move_option.index(cmd_dict["option"]) + place_flag = option_index % 2 + + config = {} + function_list = [] + + status = cmd_dict["status"] + joint_positions_ = self.joint_poses[cmd_dict["move_group"]][status] + + config.update({k: cmd_dict[k] for k in ["speed", "retry", "move_group"] if k in cmd_dict}) + + # 夹取 + if not place_flag: + if "target" in cmd_dict.keys(): + function_list.append(lambda: self.resource_manager(cmd_dict["resource"], cmd_dict["target"])) + else: + function_list.append( + lambda: self.resource_manager( + cmd_dict["resource"], self.moveit2[cmd_dict["move_group"]].end_effector_name + ) + ) + else: + function_list.append(lambda: self.resource_manager(cmd_dict["resource"], "world")) + + constraints = [] + if "constraints" in cmd_dict.keys(): + + for i in range(len(cmd_dict["constraints"])): + v = float(cmd_dict["constraints"][i]) + if v > 0: + constraints.append( + JointConstraint( + joint_name=self.moveit2[cmd_dict["move_group"]].joint_names[i], + position=joint_positions_[i], + tolerance_above=v, + tolerance_below=v, + weight=1.0, + ) + ) + + if "lift_height" in cmd_dict.keys(): + retval = None + retry = config.get("retry", 10) + while retval is None and retry > 0: + retval = self.moveit2[cmd_dict["move_group"]].compute_fk(joint_positions_) + time.sleep(0.1) + retry -= 1 + if retval is None: + result.success = False + return result + pose = [retval.pose.position.x, retval.pose.position.y, retval.pose.position.z] + quaternion = [ + retval.pose.orientation.x, + retval.pose.orientation.y, + retval.pose.orientation.z, + retval.pose.orientation.w, + ] + + function_list = [ + lambda: self.moveit_task( + position=[retval.pose.position.x, retval.pose.position.y, retval.pose.position.z], + quaternion=quaternion, + **config, + cartesian=self.cartesian_flag, + ) + ] + function_list + + pose[2] += float(cmd_dict["lift_height"]) + function_list.append( + lambda: self.moveit_task( + position=pose, quaternion=quaternion, **config, cartesian=self.cartesian_flag + ) + ) + end_pose = pose + + if "x_distance" in cmd_dict.keys() or "y_distance" in cmd_dict.keys(): + if "x_distance" in cmd_dict.keys(): + deep_pose = deepcopy(pose) + deep_pose[0] += float(cmd_dict["x_distance"]) + elif "y_distance" in cmd_dict.keys(): + deep_pose = deepcopy(pose) + deep_pose[1] += float(cmd_dict["y_distance"]) + + function_list = [ + lambda: self.moveit_task( + position=pose, quaternion=quaternion, **config, cartesian=self.cartesian_flag + ) + ] + function_list + function_list.append( + lambda: self.moveit_task( + position=deep_pose, quaternion=quaternion, **config, cartesian=self.cartesian_flag + ) + ) + end_pose = deep_pose + + retval_ik = None + retry = config.get("retry", 10) + while retval_ik is None and retry > 0: + retval_ik = self.moveit2[cmd_dict["move_group"]].compute_ik( + position=end_pose, quat_xyzw=quaternion, constraints=Constraints(joint_constraints=constraints) + ) + time.sleep(0.1) + retry -= 1 + if retval_ik is None: + result.success = False + return result + position_ = [ + retval_ik.position[retval_ik.name.index(i)] + for i in self.moveit2[cmd_dict["move_group"]].joint_names + ] + function_list = [ + lambda: self.moveit_joint_task( + joint_positions=position_, + joint_names=self.moveit2[cmd_dict["move_group"]].joint_names, + **config, + ) + ] + function_list + else: + function_list = [ + lambda: self.moveit_joint_task(**config, joint_positions=joint_positions_) + ] + function_list + + for i in range(len(function_list)): + if i == 0: + self.cartesian_flag = False + else: + self.cartesian_flag = True + + re = function_list[i]() + if not re: + print(i, re) + result.success = False + return result + result.success = True + + except Exception as e: + print(e) + self.cartesian_flag = False + result.success = False + + return result + + def set_status(self, command: str): + """ + Goto home position + + Args: + command: A JSON-formatted string that includes speed + *status (string) : The joint status moveit will plan + *move_group (string): The move group moveit will plan + separate (list) : The joint index to be separated + lift_height (float) : The height at which the material should be lifted(meters) + x_distance (float) : The distance to the target in x direction(meters) + y_distance (float) : The distance to the target in y direction(meters) + speed (float) : The speed of the movement, speed > 0 + retry (float) : Retry times when moveit plan fails + + Returns: + None + """ + + result = SendCmd.Result() + + try: + cmd_str = command.replace("'", '"') + cmd_dict = json.loads(cmd_str) + config = {} + config["move_group"] = cmd_dict["move_group"] + if "speed" in cmd_dict.keys(): + config["speed"] = cmd_dict["speed"] + if "retry" in cmd_dict.keys(): + config["retry"] = cmd_dict["retry"] + + status = cmd_dict["status"] + joint_positions_ = self.joint_poses[cmd_dict["move_group"]][status] + re = self.moveit_joint_task(**config, joint_positions=joint_positions_) + if not re: + result.success = False + return result + result.success = True + except Exception as e: + print(e) + result.success = False + + return result diff --git a/unilabos/devices/virtual/__init__.py b/unilabos/devices/virtual/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/unilabos/devices/virtual/virtual_centrifuge.py b/unilabos/devices/virtual/virtual_centrifuge.py new file mode 100644 index 00000000..20366ab1 --- /dev/null +++ b/unilabos/devices/virtual/virtual_centrifuge.py @@ -0,0 +1,158 @@ +import asyncio +import logging +from typing import Dict, Any + +class VirtualCentrifuge: + """Virtual centrifuge device for CentrifugeProtocol testing""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_centrifuge" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualCentrifuge.{self.device_id}") + self.data = {} + + # 添加调试信息 + print(f"=== VirtualCentrifuge {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_speed = self.config.get('max_speed') or kwargs.get('max_speed', 15000.0) + self._max_temp = self.config.get('max_temp') or kwargs.get('max_temp', 40.0) + self._min_temp = self.config.get('min_temp') or kwargs.get('min_temp', 4.0) + + # 处理其他kwargs参数,但跳过已知的配置参数 + skip_keys = {'port', 'max_speed', 'max_temp', 'min_temp'} + for key, value in kwargs.items(): + if key not in skip_keys and not hasattr(self, key): + setattr(self, key, value) + + async def initialize(self) -> bool: + """Initialize virtual centrifuge""" + print(f"=== VirtualCentrifuge {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual centrifuge {self.device_id}") + self.data.update({ + "status": "Idle", + "current_speed": 0.0, + "target_speed": 0.0, + "current_temp": 25.0, + "target_temp": 25.0, + "max_speed": self._max_speed, + "max_temp": self._max_temp, + "min_temp": self._min_temp, + "centrifuge_state": "Stopped", + "time_remaining": 0.0, + "progress": 0.0, + "message": "" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual centrifuge""" + self.logger.info(f"Cleaning up virtual centrifuge {self.device_id}") + return True + + async def centrifuge(self, vessel: str, speed: float, time: float, temp: float = 25.0) -> bool: + """Execute centrifuge action - matches Centrifuge action""" + self.logger.info(f"Centrifuge: vessel={vessel}, speed={speed} RPM, time={time}s, temp={temp}°C") + + # 验证参数 + if speed > self._max_speed: + self.logger.error(f"Speed {speed} exceeds maximum {self._max_speed}") + self.data["message"] = f"速度 {speed} 超过最大值 {self._max_speed}" + return False + + if temp > self._max_temp or temp < self._min_temp: + self.logger.error(f"Temperature {temp} outside range {self._min_temp}-{self._max_temp}") + self.data["message"] = f"温度 {temp} 超出范围 {self._min_temp}-{self._max_temp}" + return False + + # 开始离心 + self.data.update({ + "status": "Running", + "centrifuge_state": "Centrifuging", + "target_speed": speed, + "current_speed": speed, + "target_temp": temp, + "current_temp": temp, + "time_remaining": time, + "vessel": vessel, + "progress": 0.0, + "message": f"离心中: {vessel} at {speed} RPM" + }) + + # 模拟离心过程 + simulation_time = min(time, 5.0) # 最多等待5秒用于测试 + await asyncio.sleep(simulation_time) + + # 离心完成 + self.data.update({ + "status": "Idle", + "centrifuge_state": "Stopped", + "current_speed": 0.0, + "target_speed": 0.0, + "time_remaining": 0.0, + "progress": 100.0, + "message": f"离心完成: {vessel}" + }) + + self.logger.info(f"Centrifuge completed for vessel {vessel}") + return True + + # 状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def current_speed(self) -> float: + return self.data.get("current_speed", 0.0) + + @property + def target_speed(self) -> float: + return self.data.get("target_speed", 0.0) + + @property + def current_temp(self) -> float: + return self.data.get("current_temp", 25.0) + + @property + def target_temp(self) -> float: + return self.data.get("target_temp", 25.0) + + @property + def max_speed(self) -> float: + return self.data.get("max_speed", self._max_speed) + + @property + def max_temp(self) -> float: + return self.data.get("max_temp", self._max_temp) + + @property + def min_temp(self) -> float: + return self.data.get("min_temp", self._min_temp) + + @property + def centrifuge_state(self) -> str: + return self.data.get("centrifuge_state", "Unknown") + + @property + def time_remaining(self) -> float: + return self.data.get("time_remaining", 0.0) + + @property + def progress(self) -> float: + return self.data.get("progress", 0.0) + + @property + def message(self) -> str: + return self.data.get("message", "") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_column.py b/unilabos/devices/virtual/virtual_column.py new file mode 100644 index 00000000..c83da1c2 --- /dev/null +++ b/unilabos/devices/virtual/virtual_column.py @@ -0,0 +1,132 @@ +import asyncio +import logging +from typing import Dict, Any, Optional + +class VirtualColumn: + """Virtual column device for RunColumn protocol""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_column" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualColumn.{self.device_id}") + self.data = {} + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_flow_rate = self.config.get('max_flow_rate') or kwargs.get('max_flow_rate', 10.0) + self._column_length = self.config.get('column_length') or kwargs.get('column_length', 25.0) + self._column_diameter = self.config.get('column_diameter') or kwargs.get('column_diameter', 2.0) + + print(f"=== VirtualColumn {self.device_id} created with max_flow_rate={self._max_flow_rate}, length={self._column_length}cm ===") + + async def initialize(self) -> bool: + """Initialize virtual column""" + self.logger.info(f"Initializing virtual column {self.device_id}") + self.data.update({ + "status": "Idle", + "column_state": "Ready", + "current_flow_rate": 0.0, + "max_flow_rate": self._max_flow_rate, + "column_length": self._column_length, + "column_diameter": self._column_diameter, + "processed_volume": 0.0, + "progress": 0.0, + "current_status": "Ready" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual column""" + self.logger.info(f"Cleaning up virtual column {self.device_id}") + return True + + async def run_column(self, from_vessel: str, to_vessel: str, column: str) -> bool: + """Execute column chromatography run - matches RunColumn action""" + self.logger.info(f"Running column separation: {from_vessel} -> {to_vessel} using {column}") + + # 更新设备状态 + self.data.update({ + "status": "Running", + "column_state": "Separating", + "current_status": "Column separation in progress", + "progress": 0.0, + "processed_volume": 0.0 + }) + + # 模拟柱层析分离过程 + # 假设处理时间基于流速和柱子长度 + separation_time = (self._column_length * 2) / self._max_flow_rate # 简化计算 + + steps = 20 # 分20个步骤模拟分离过程 + step_time = separation_time / steps + + for i in range(steps): + await asyncio.sleep(step_time) + + progress = (i + 1) / steps * 100 + volume_processed = (i + 1) * 5.0 # 假设每步处理5mL + + # 更新状态 + self.data.update({ + "progress": progress, + "processed_volume": volume_processed, + "current_status": f"Column separation: {progress:.1f}% - Processing {volume_processed:.1f}mL" + }) + + self.logger.info(f"Column separation progress: {progress:.1f}%") + + # 分离完成 + self.data.update({ + "status": "Idle", + "column_state": "Ready", + "current_status": "Column separation completed", + "progress": 100.0 + }) + + self.logger.info(f"Column separation completed: {from_vessel} -> {to_vessel}") + return True + + # 状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def column_state(self) -> str: + return self.data.get("column_state", "Unknown") + + @property + def current_flow_rate(self) -> float: + return self.data.get("current_flow_rate", 0.0) + + @property + def max_flow_rate(self) -> float: + return self.data.get("max_flow_rate", 0.0) + + @property + def column_length(self) -> float: + return self.data.get("column_length", 0.0) + + @property + def column_diameter(self) -> float: + return self.data.get("column_diameter", 0.0) + + @property + def processed_volume(self) -> float: + return self.data.get("processed_volume", 0.0) + + @property + def progress(self) -> float: + return self.data.get("progress", 0.0) + + @property + def current_status(self) -> str: + return self.data.get("current_status", "Ready") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_filter.py b/unilabos/devices/virtual/virtual_filter.py new file mode 100644 index 00000000..71a984aa --- /dev/null +++ b/unilabos/devices/virtual/virtual_filter.py @@ -0,0 +1,151 @@ +import asyncio +import logging +from typing import Dict, Any + +class VirtualFilter: + """Virtual filter device for FilterProtocol testing""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_filter" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualFilter.{self.device_id}") + self.data = {} + + # 添加调试信息 + print(f"=== VirtualFilter {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_temp = self.config.get('max_temp') or kwargs.get('max_temp', 100.0) + self._max_stir_speed = self.config.get('max_stir_speed') or kwargs.get('max_stir_speed', 1000.0) + + # 处理其他kwargs参数,但跳过已知的配置参数 + skip_keys = {'port', 'max_temp', 'max_stir_speed'} + for key, value in kwargs.items(): + if key not in skip_keys and not hasattr(self, key): + setattr(self, key, value) + + async def initialize(self) -> bool: + """Initialize virtual filter""" + print(f"=== VirtualFilter {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual filter {self.device_id}") + self.data.update({ + "status": "Idle", + "filter_state": "Ready", + "current_temp": 25.0, + "target_temp": 25.0, + "max_temp": self._max_temp, + "stir_speed": 0.0, + "max_stir_speed": self._max_stir_speed, + "filtered_volume": 0.0, + "progress": 0.0, + "message": "" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual filter""" + self.logger.info(f"Cleaning up virtual filter {self.device_id}") + return True + + async def filter_sample(self, vessel: str, filtrate_vessel: str = "", stir: bool = False, + stir_speed: float = 300.0, temp: float = 25.0, + continue_heatchill: bool = False, volume: float = 0.0) -> bool: + """Execute filter action - matches Filter action""" + self.logger.info(f"Filter: vessel={vessel}, filtrate_vessel={filtrate_vessel}, stir={stir}, volume={volume}") + + # 验证参数 + if temp > self._max_temp: + self.logger.error(f"Temperature {temp} exceeds maximum {self._max_temp}") + self.data["message"] = f"温度 {temp} 超过最大值 {self._max_temp}" + return False + + if stir and stir_speed > self._max_stir_speed: + self.logger.error(f"Stir speed {stir_speed} exceeds maximum {self._max_stir_speed}") + self.data["message"] = f"搅拌速度 {stir_speed} 超过最大值 {self._max_stir_speed}" + return False + + # 开始过滤 + self.data.update({ + "status": "Running", + "filter_state": "Filtering", + "target_temp": temp, + "current_temp": temp, + "stir_speed": stir_speed if stir else 0.0, + "vessel": vessel, + "filtrate_vessel": filtrate_vessel, + "target_volume": volume, + "progress": 0.0, + "message": f"过滤中: {vessel}" + }) + + # 模拟过滤过程 + simulation_time = min(volume / 10.0 if volume > 0 else 5.0, 10.0) + await asyncio.sleep(simulation_time) + + # 过滤完成 + filtered_vol = volume if volume > 0 else 50.0 # 默认过滤量 + self.data.update({ + "status": "Idle", + "filter_state": "Ready", + "current_temp": 25.0 if not continue_heatchill else temp, + "target_temp": 25.0 if not continue_heatchill else temp, + "stir_speed": 0.0 if not stir else stir_speed, + "filtered_volume": filtered_vol, + "progress": 100.0, + "message": f"过滤完成: {filtered_vol}mL" + }) + + self.logger.info(f"Filter completed: {filtered_vol}mL from {vessel}") + return True + + # 状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def filter_state(self) -> str: + return self.data.get("filter_state", "Unknown") + + @property + def current_temp(self) -> float: + return self.data.get("current_temp", 25.0) + + @property + def target_temp(self) -> float: + return self.data.get("target_temp", 25.0) + + @property + def max_temp(self) -> float: + return self.data.get("max_temp", self._max_temp) + + @property + def stir_speed(self) -> float: + return self.data.get("stir_speed", 0.0) + + @property + def max_stir_speed(self) -> float: + return self.data.get("max_stir_speed", self._max_stir_speed) + + @property + def filtered_volume(self) -> float: + return self.data.get("filtered_volume", 0.0) + + @property + def progress(self) -> float: + return self.data.get("progress", 0.0) + + @property + def message(self) -> str: + return self.data.get("message", "") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_heatchill.py b/unilabos/devices/virtual/virtual_heatchill.py new file mode 100644 index 00000000..98a03ce0 --- /dev/null +++ b/unilabos/devices/virtual/virtual_heatchill.py @@ -0,0 +1,107 @@ +import asyncio +import logging +from typing import Dict, Any + +class VirtualHeatChill: + """Virtual heat chill device for HeatChillProtocol testing""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_heatchill" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualHeatChill.{self.device_id}") + self.data = {} + + # 添加调试信息 + print(f"=== VirtualHeatChill {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_temp = self.config.get('max_temp') or kwargs.get('max_temp', 200.0) + self._min_temp = self.config.get('min_temp') or kwargs.get('min_temp', -80.0) + self._max_stir_speed = self.config.get('max_stir_speed') or kwargs.get('max_stir_speed', 1000.0) + + # 处理其他kwargs参数,但跳过已知的配置参数 + skip_keys = {'port', 'max_temp', 'min_temp', 'max_stir_speed'} + for key, value in kwargs.items(): + if key not in skip_keys and not hasattr(self, key): + setattr(self, key, value) + + async def initialize(self) -> bool: + """Initialize virtual heat chill""" + print(f"=== VirtualHeatChill {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual heat chill {self.device_id}") + self.data.update({ + "status": "Idle" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual heat chill""" + self.logger.info(f"Cleaning up virtual heat chill {self.device_id}") + return True + + async def heat_chill(self, vessel: str, temp: float, time: float, stir: bool, + stir_speed: float, purpose: str) -> bool: + """Execute heat chill action - matches HeatChill action exactly""" + self.logger.info(f"HeatChill: vessel={vessel}, temp={temp}°C, time={time}s, stir={stir}, stir_speed={stir_speed}, purpose={purpose}") + + # 验证参数 + if temp > self._max_temp or temp < self._min_temp: + self.logger.error(f"Temperature {temp} outside range {self._min_temp}-{self._max_temp}") + self.data["status"] = f"温度 {temp} 超出范围" + return False + + if stir and stir_speed > self._max_stir_speed: + self.logger.error(f"Stir speed {stir_speed} exceeds maximum {self._max_stir_speed}") + self.data["status"] = f"搅拌速度 {stir_speed} 超出范围" + return False + + # 开始加热/冷却 + self.data.update({ + "status": f"加热/冷却中: {vessel} 至 {temp}°C" + }) + + # 模拟加热/冷却时间 + simulation_time = min(time, 10.0) # 最多等待10秒用于测试 + await asyncio.sleep(simulation_time) + + # 加热/冷却完成 + self.data["status"] = f"完成: {vessel} 已达到 {temp}°C" + + self.logger.info(f"HeatChill completed for vessel {vessel} at {temp}°C") + return True + + async def heat_chill_start(self, vessel: str, temp: float, purpose: str) -> bool: + """Start heat chill - matches HeatChillStart action exactly""" + self.logger.info(f"HeatChillStart: vessel={vessel}, temp={temp}°C, purpose={purpose}") + + # 验证参数 + if temp > self._max_temp or temp < self._min_temp: + self.logger.error(f"Temperature {temp} outside range {self._min_temp}-{self._max_temp}") + self.data["status"] = f"温度 {temp} 超出范围" + return False + + self.data["status"] = f"开始加热/冷却: {vessel} 至 {temp}°C" + return True + + async def heat_chill_stop(self, vessel: str) -> bool: + """Stop heat chill - matches HeatChillStop action exactly""" + self.logger.info(f"HeatChillStop: vessel={vessel}") + + self.data["status"] = f"停止加热/冷却: {vessel}" + return True + + # 状态属性 - 只保留 action 中定义的 feedback + @property + def status(self) -> str: + return self.data.get("status", "Idle") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_pump.py b/unilabos/devices/virtual/virtual_pump.py new file mode 100644 index 00000000..d134319a --- /dev/null +++ b/unilabos/devices/virtual/virtual_pump.py @@ -0,0 +1,197 @@ +import asyncio +import logging +from typing import Dict, Any, Optional + +class VirtualPump: + """Virtual pump device for transfer and cleaning operations""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_pump" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualPump.{self.device_id}") + self.data = {} + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_volume = self.config.get('max_volume') or kwargs.get('max_volume', 50.0) + self._transfer_rate = self.config.get('transfer_rate') or kwargs.get('transfer_rate', 10.0) + + print(f"=== VirtualPump {self.device_id} created with max_volume={self._max_volume}, transfer_rate={self._transfer_rate} ===") + + async def initialize(self) -> bool: + """Initialize virtual pump""" + self.logger.info(f"Initializing virtual pump {self.device_id}") + self.data.update({ + "status": "Idle", + "valve_position": 0, + "current_volume": 0.0, + "max_volume": self._max_volume, + "transfer_rate": self._transfer_rate, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual pump""" + self.logger.info(f"Cleaning up virtual pump {self.device_id}") + return True + + async def transfer(self, from_vessel: str, to_vessel: str, volume: float, + amount: str = "", time: float = 0.0, viscous: bool = False, + rinsing_solvent: str = "", rinsing_volume: float = 0.0, + rinsing_repeats: int = 0, solid: bool = False) -> bool: + """Execute transfer operation""" + self.logger.info(f"Transferring {volume}mL from {from_vessel} to {to_vessel}") + + # 计算转移时间 + transfer_time = volume / self._transfer_rate if time == 0 else time + + self.data.update({ + "status": "Running", + "from_vessel": from_vessel, + "to_vessel": to_vessel, + "current_status": "Transferring", + "progress": 0.0, + "transferred_volume": 0.0 + }) + + # 模拟转移过程 + steps = 10 + step_time = transfer_time / steps + step_volume = volume / steps + + for i in range(steps): + await asyncio.sleep(step_time) + progress = (i + 1) / steps * 100 + current_volume = step_volume * (i + 1) + + self.data.update({ + "progress": progress, + "transferred_volume": current_volume, + "current_status": f"Transferring: {progress:.1f}%" + }) + + self.logger.info(f"Transfer progress: {progress:.1f}%") + + self.data.update({ + "status": "Idle", + "current_status": "Transfer completed", + "progress": 100.0, + "transferred_volume": volume + }) + + return True + + async def clean_vessel(self, vessel: str, solvent: str, volume: float, + temp: float, repeats: int = 1) -> bool: + """Execute vessel cleaning operation - matches CleanVessel action""" + self.logger.info(f"Starting vessel cleaning: {vessel} with {solvent} ({volume}mL at {temp}°C, {repeats} repeats)") + + # 更新设备状态 + self.data.update({ + "status": "Running", + "from_vessel": f"flask_{solvent}", + "to_vessel": vessel, + "current_status": "Cleaning in progress", + "progress": 0.0, + "transferred_volume": 0.0 + }) + + # 计算清洗时间(基于体积和重复次数) + # 假设清洗速度为 transfer_rate 的一半(因为需要加载和排放) + cleaning_rate = self._transfer_rate / 2 + cleaning_time_per_cycle = volume / cleaning_rate + total_cleaning_time = cleaning_time_per_cycle * repeats + + # 模拟清洗过程 + steps_per_repeat = 10 # 每次重复清洗分10个步骤 + total_steps = steps_per_repeat * repeats + step_time = total_cleaning_time / total_steps + + for repeat in range(repeats): + self.logger.info(f"Starting cleaning cycle {repeat + 1}/{repeats}") + + for step in range(steps_per_repeat): + await asyncio.sleep(step_time) + + # 计算当前进度 + current_step = repeat * steps_per_repeat + step + 1 + progress = (current_step / total_steps) * 100 + + # 计算已处理的体积 + volume_processed = (current_step / total_steps) * volume * repeats + + # 更新状态 + self.data.update({ + "progress": progress, + "transferred_volume": volume_processed, + "current_status": f"Cleaning cycle {repeat + 1}/{repeats} - Step {step + 1}/{steps_per_repeat} ({progress:.1f}%)" + }) + + self.logger.info(f"Cleaning progress: {progress:.1f}% (Cycle {repeat + 1}/{repeats})") + + # 清洗完成 + self.data.update({ + "status": "Idle", + "current_status": "Cleaning completed successfully", + "progress": 100.0, + "transferred_volume": volume * repeats, + "from_vessel": "", + "to_vessel": "" + }) + + self.logger.info(f"Vessel cleaning completed: {vessel}") + return True + + # 状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def valve_position(self) -> int: + return self.data.get("valve_position", 0) + + @property + def current_volume(self) -> float: + return self.data.get("current_volume", 0.0) + + @property + def max_volume(self) -> float: + return self.data.get("max_volume", 0.0) + + @property + def transfer_rate(self) -> float: + return self.data.get("transfer_rate", 0.0) + + @property + def from_vessel(self) -> str: + return self.data.get("from_vessel", "") + + @property + def to_vessel(self) -> str: + return self.data.get("to_vessel", "") + + @property + def progress(self) -> float: + return self.data.get("progress", 0.0) + + @property + def transferred_volume(self) -> float: + return self.data.get("transferred_volume", 0.0) + + @property + def current_status(self) -> str: + return self.data.get("current_status", "Ready") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_stirrer.py b/unilabos/devices/virtual/virtual_stirrer.py new file mode 100644 index 00000000..b1a4098b --- /dev/null +++ b/unilabos/devices/virtual/virtual_stirrer.py @@ -0,0 +1,104 @@ +import asyncio +import logging +from typing import Dict, Any + +class VirtualStirrer: + """Virtual stirrer device for StirProtocol testing""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_stirrer" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualStirrer.{self.device_id}") + self.data = {} + + # 添加调试信息 + print(f"=== VirtualStirrer {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_temp = self.config.get('max_temp') or kwargs.get('max_temp', 100.0) + self._max_speed = self.config.get('max_speed') or kwargs.get('max_speed', 1000.0) + + # 处理其他kwargs参数,但跳过已知的配置参数 + skip_keys = {'port', 'max_temp', 'max_speed'} + for key, value in kwargs.items(): + if key not in skip_keys and not hasattr(self, key): + setattr(self, key, value) + + async def initialize(self) -> bool: + """Initialize virtual stirrer""" + print(f"=== VirtualStirrer {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual stirrer {self.device_id}") + self.data.update({ + "status": "Idle" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual stirrer""" + self.logger.info(f"Cleaning up virtual stirrer {self.device_id}") + return True + + async def stir(self, stir_time: float, stir_speed: float, settling_time: float) -> bool: + """Execute stir action - matches Stir action exactly""" + self.logger.info(f"Stir: speed={stir_speed} RPM, time={stir_time}s, settling={settling_time}s") + + # 验证参数 + if stir_speed > self._max_speed: + self.logger.error(f"Stir speed {stir_speed} exceeds maximum {self._max_speed}") + self.data["status"] = f"搅拌速度 {stir_speed} 超出范围" + return False + + # 开始搅拌 + self.data["status"] = f"搅拌中: {stir_speed} RPM, {stir_time}s" + + # 模拟搅拌时间 + simulation_time = min(stir_time, 10.0) # 最多等待10秒用于测试 + await asyncio.sleep(simulation_time) + + # 搅拌完成,开始沉降 + if settling_time > 0: + self.data["status"] = f"沉降中: {settling_time}s" + settling_simulation = min(settling_time, 5.0) # 最多等待5秒 + await asyncio.sleep(settling_simulation) + + # 操作完成 + self.data["status"] = "搅拌完成" + + self.logger.info(f"Stir completed: {stir_speed} RPM for {stir_time}s") + return True + + async def start_stir(self, vessel: str, stir_speed: float, purpose: str) -> bool: + """Start stir action - matches StartStir action exactly""" + self.logger.info(f"StartStir: vessel={vessel}, speed={stir_speed} RPM, purpose={purpose}") + + # 验证参数 + if stir_speed > self._max_speed: + self.logger.error(f"Stir speed {stir_speed} exceeds maximum {self._max_speed}") + self.data["status"] = f"搅拌速度 {stir_speed} 超出范围" + return False + + self.data["status"] = f"开始搅拌: {vessel} at {stir_speed} RPM" + return True + + async def stop_stir(self, vessel: str) -> bool: + """Stop stir action - matches StopStir action exactly""" + self.logger.info(f"StopStir: vessel={vessel}") + + self.data["status"] = f"停止搅拌: {vessel}" + return True + + # 状态属性 - 只保留 action 中定义的 feedback + @property + def status(self) -> str: + return self.data.get("status", "Idle") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_transferpump.py b/unilabos/devices/virtual/virtual_transferpump.py new file mode 100644 index 00000000..87d4cffa --- /dev/null +++ b/unilabos/devices/virtual/virtual_transferpump.py @@ -0,0 +1,149 @@ +import asyncio +import logging +from typing import Dict, Any, Optional + +class VirtualTransferPump: + """Virtual pump device specifically for Transfer protocol""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_transfer_pump" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualTransferPump.{self.device_id}") + self.data = {} + + # 添加调试信息 + print(f"=== VirtualTransferPump {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 从config或kwargs中获取配置参数 + self.port = self.config.get('port') or kwargs.get('port', 'VIRTUAL') + self._max_volume = self.config.get('max_volume') or kwargs.get('max_volume', 50.0) + self._transfer_rate = self.config.get('transfer_rate') or kwargs.get('transfer_rate', 5.0) + self._current_volume = 0.0 + self.is_running = False + + async def initialize(self) -> bool: + """Initialize virtual transfer pump""" + print(f"=== VirtualTransferPump {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual transfer pump {self.device_id}") + self.data.update({ + "status": "Idle", + "current_volume": 0.0, + "max_volume": self._max_volume, + "transfer_rate": self._transfer_rate, + "from_vessel": "", + "to_vessel": "", + "progress": 0.0, + "transferred_volume": 0.0, + "current_status": "Ready" + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual transfer pump""" + self.logger.info(f"Cleaning up virtual transfer pump {self.device_id}") + return True + + async def transfer(self, from_vessel: str, to_vessel: str, volume: float, + amount: str = "", time: float = 0, viscous: bool = False, + rinsing_solvent: str = "", rinsing_volume: float = 0.0, + rinsing_repeats: int = 0, solid: bool = False) -> bool: + """Execute liquid transfer - matches Transfer action""" + self.logger.info(f"Transfer: {volume}mL from {from_vessel} to {to_vessel}") + + # 计算转移时间 + if time > 0: + transfer_time = time + else: + # 如果是粘性液体,降低转移速率 + rate = self._transfer_rate * 0.5 if viscous else self._transfer_rate + transfer_time = volume / rate + + self.data.update({ + "status": "Running", + "from_vessel": from_vessel, + "to_vessel": to_vessel, + "current_status": "Transferring", + "progress": 0.0, + "transferred_volume": 0.0 + }) + + # 模拟转移过程 + steps = 10 + step_time = transfer_time / steps + step_volume = volume / steps + + for i in range(steps): + await asyncio.sleep(step_time) + progress = (i + 1) / steps * 100 + transferred = (i + 1) * step_volume + + self.data.update({ + "progress": progress, + "transferred_volume": transferred, + "current_status": f"Transferring {progress:.1f}%" + }) + + self.logger.info(f"Transfer progress: {progress:.1f}% ({transferred:.1f}/{volume}mL)") + + # 如果需要冲洗 + if rinsing_solvent and rinsing_volume > 0 and rinsing_repeats > 0: + self.data["current_status"] = "Rinsing" + for repeat in range(rinsing_repeats): + self.logger.info(f"Rinsing cycle {repeat + 1}/{rinsing_repeats} with {rinsing_solvent}") + await asyncio.sleep(1) # 模拟冲洗时间 + + self.data.update({ + "status": "Idle", + "current_status": "Transfer completed", + "progress": 100.0, + "transferred_volume": volume + }) + + return True + + # 添加所有在virtual_device.yaml中定义的状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def current_volume(self) -> float: + return self.data.get("current_volume", 0.0) + + @property + def max_volume(self) -> float: + return self.data.get("max_volume", self._max_volume) + + @property + def transfer_rate(self) -> float: + return self.data.get("transfer_rate", self._transfer_rate) + + @property + def from_vessel(self) -> str: + return self.data.get("from_vessel", "") + + @property + def to_vessel(self) -> str: + return self.data.get("to_vessel", "") + + @property + def progress(self) -> float: + return self.data.get("progress", 0.0) + + @property + def transferred_volume(self) -> float: + return self.data.get("transferred_volume", 0.0) + + @property + def current_status(self) -> str: + return self.data.get("current_status", "Ready") \ No newline at end of file diff --git a/unilabos/devices/virtual/virtual_valve.py b/unilabos/devices/virtual/virtual_valve.py new file mode 100644 index 00000000..a665e005 --- /dev/null +++ b/unilabos/devices/virtual/virtual_valve.py @@ -0,0 +1,105 @@ +import asyncio +import logging +from typing import Dict, Any + +class VirtualValve: + """Virtual valve device for AddProtocol testing""" + + def __init__(self, device_id: str = None, config: Dict[str, Any] = None, **kwargs): + # 处理可能的不同调用方式 + if device_id is None and 'id' in kwargs: + device_id = kwargs.pop('id') + if config is None and 'config' in kwargs: + config = kwargs.pop('config') + + # 设置默认值 + self.device_id = device_id or "unknown_valve" + self.config = config or {} + + self.logger = logging.getLogger(f"VirtualValve.{self.device_id}") + self.data = {} + + print(f"=== VirtualValve {self.device_id} is being created! ===") + print(f"=== Config: {self.config} ===") + print(f"=== Kwargs: {kwargs} ===") + + # 处理所有配置参数,包括port + self.port = self.config.get('port', 'VIRTUAL') + self.positions = self.config.get('positions', 6) + self.current_position = 0 + + # 忽略其他可能的kwargs参数 + for key, value in kwargs.items(): + if not hasattr(self, key): + setattr(self, key, value) + + async def initialize(self) -> bool: + """Initialize virtual valve""" + print(f"=== VirtualValve {self.device_id} initialize() called! ===") + self.logger.info(f"Initializing virtual valve {self.device_id}") + self.data.update({ + "status": "Idle", + "valve_state": "Closed", + "current_position": 0, + "target_position": 0, + "max_positions": self.positions + }) + return True + + async def cleanup(self) -> bool: + """Cleanup virtual valve""" + self.logger.info(f"Cleaning up virtual valve {self.device_id}") + return True + + async def set_position(self, position: int) -> bool: + """Set valve position - matches SendCmd action""" + if 0 <= position <= self.positions: + self.logger.info(f"Setting valve position to {position}") + self.data.update({ + "target_position": position, + "current_position": position, + "valve_state": "Open" if position > 0 else "Closed" + }) + return True + else: + self.logger.error(f"Invalid position {position}. Must be 0-{self.positions}") + return False + + async def open(self) -> bool: + """Open valve - matches EmptyIn action""" + self.logger.info("Opening valve") + self.data.update({ + "valve_state": "Open", + "current_position": 1 + }) + return True + + async def close(self) -> bool: + """Close valve - matches EmptyIn action""" + self.logger.info("Closing valve") + self.data.update({ + "valve_state": "Closed", + "current_position": 0 + }) + return True + + # 状态属性 + @property + def status(self) -> str: + return self.data.get("status", "Unknown") + + @property + def valve_state(self) -> str: + return self.data.get("valve_state", "Unknown") + + @property + def current_position(self) -> int: + return self.data.get("current_position", 0) + + @property + def target_position(self) -> int: + return self.data.get("target_position", 0) + + @property + def max_positions(self) -> int: + return self.data.get("max_positions", 6) \ No newline at end of file diff --git a/unilabos/messages/__init__.py b/unilabos/messages/__init__.py index 7bff6dc5..883b9ad8 100644 --- a/unilabos/messages/__init__.py +++ b/unilabos/messages/__init__.py @@ -67,7 +67,115 @@ class AGVTransferProtocol(BaseModel): to_repo: dict from_repo_position: str to_repo_position: str +#=============新添加的新的协议================ +class AddProtocol(BaseModel): + vessel: str + reagent: str + volume: float + mass: float + amount: str + time: float + stir: bool + stir_speed: float + viscous: bool + purpose: str +class CentrifugeProtocol(BaseModel): + vessel: str + speed: float + time: float + temp: float # 移除默认值 -__all__ = ["Point3D", "PumpTransferProtocol", "CleanProtocol", "SeparateProtocol", "EvaporateProtocol", "EvacuateAndRefillProtocol", "AGVTransferProtocol"] +class FilterProtocol(BaseModel): + vessel: str + filtrate_vessel: str # 移除默认值 + stir: bool # 移除默认值 + stir_speed: float # 移除默认值 + temp: float # 移除默认值 + continue_heatchill: bool # 移除默认值 + volume: float # 移除默认值 + +class HeatChillProtocol(BaseModel): + vessel: str + temp: float + time: float + stir: bool + stir_speed: float + purpose: str + +class HeatChillStartProtocol(BaseModel): + vessel: str + temp: float + purpose: str + +class HeatChillStopProtocol(BaseModel): + vessel: str + +class StirProtocol(BaseModel): + stir_time: float + stir_speed: float + settling_time: float + +class StartStirProtocol(BaseModel): + vessel: str + stir_speed: float + purpose: str + +class StopStirProtocol(BaseModel): + vessel: str + +class TransferProtocol(BaseModel): + from_vessel: str + to_vessel: str + volume: float + amount: str = "" + time: float = 0 + viscous: bool = False + rinsing_solvent: str = "" + rinsing_volume: float = 0.0 + rinsing_repeats: int = 0 + solid: bool = False + +class CleanVesselProtocol(BaseModel): + vessel: str # 要清洗的容器名称 + solvent: str # 用于清洗容器的溶剂名称 + volume: float # 清洗溶剂的体积,可选参数 + temp: float # 清洗时的温度,可选参数 + repeats: int = 1 # 清洗操作的重复次数,默认为 1 + +class DissolveProtocol(BaseModel): + vessel: str # 装有要溶解物质的容器名称 + solvent: str # 用于溶解物质的溶剂名称 + volume: float # 溶剂的体积,可选参数 + amount: str = "" # 要溶解物质的量,可选参数 + temp: float = 25.0 # 溶解时的温度,可选参数 + time: float = 0.0 # 溶解的时间,可选参数 + stir_speed: float = 0.0 # 搅拌速度,可选参数 + +class FilterThroughProtocol(BaseModel): + from_vessel: str # 源容器的名称,即物质起始所在的容器 + to_vessel: str # 目标容器的名称,物质过滤后要到达的容器 + filter_through: str # 过滤时所通过的介质,如滤纸、柱子等 + eluting_solvent: str = "" # 洗脱溶剂的名称,可选参数 + eluting_volume: float = 0.0 # 洗脱溶剂的体积,可选参数 + eluting_repeats: int = 0 # 洗脱操作的重复次数,默认为 0 + residence_time: float = 0.0 # 物质在过滤介质中的停留时间,可选参数 + +class RunColumnProtocol(BaseModel): + from_vessel: str # 源容器的名称,即样品起始所在的容器 + to_vessel: str # 目标容器的名称,分离后的样品要到达的容器 + column: str # 所使用的柱子的名称 + +class WashSolidProtocol(BaseModel): + vessel: str # 装有固体物质的容器名称 + solvent: str # 用于清洗固体的溶剂名称 + volume: float # 清洗溶剂的体积 + filtrate_vessel: str = "" # 滤液要收集到的容器名称,可选参数 + temp: float = 25.0 # 清洗时的温度,可选参数 + stir: bool = False # 是否在清洗过程中搅拌,默认为 False + stir_speed: float = 0.0 # 搅拌速度,可选参数 + time: float = 0.0 # 清洗的时间,可选参数 + repeats: int = 1 # 清洗操作的重复次数,默认为 1 + +__all__ = ["Point3D", "PumpTransferProtocol", "CleanProtocol", "SeparateProtocol", "EvaporateProtocol", "EvacuateAndRefillProtocol", "AGVTransferProtocol", "CentrifugeProtocol", "AddProtocol", "FilterProtocol", "HeatChillProtocol", "HeatChillStartProtocol", "HeatChillStopProtocol", "StirProtocol", "StartStirProtocol", "StopStirProtocol", "TransferProtocol", "CleanVesselProtocol", "DissolveProtocol", "FilterThroughProtocol", "RunColumnProtocol", "WashSolidProtocol"] # End Protocols diff --git a/unilabos/registry/device_comms/modbus_ioboard.yaml b/unilabos/registry/device_comms/modbus_ioboard.yaml index 14732410..b1d04eec 100644 --- a/unilabos/registry/device_comms/modbus_ioboard.yaml +++ b/unilabos/registry/device_comms/modbus_ioboard.yaml @@ -5,6 +5,6 @@ io_snrd: type: python hardware_interface: name: modbus_client - extra_info: address + extra_info: [] read: read_io_coil write: write_io_coil \ No newline at end of file diff --git a/unilabos/registry/devices/hotel.yaml b/unilabos/registry/devices/hotel.yaml new file mode 100644 index 00000000..0f925118 --- /dev/null +++ b/unilabos/registry/devices/hotel.yaml @@ -0,0 +1,9 @@ +hotel.thermo_orbitor_rs2_hotel: + description: Thermo Orbitor RS2 Hotel + class: + module: unilabos.devices.resource_container.container:HotelContainer + type: python + model: + type: device + mesh: thermo_orbitor_rs2_hotel + diff --git a/unilabos/registry/devices/liquid_handler.yaml b/unilabos/registry/devices/liquid_handler.yaml index bcddae55..bb94b59f 100644 --- a/unilabos/registry/devices/liquid_handler.yaml +++ b/unilabos/registry/devices/liquid_handler.yaml @@ -1,5 +1,6 @@ liquid_handler: description: Liquid handler device controlled by pylabrobot + icon: icon_yiyezhan.webp class: module: unilabos.devices.liquid_handling.liquid_handler_abstract:LiquidHandlerAbstract type: python @@ -22,8 +23,8 @@ liquid_handler: is_96_well: is_96_well top: top none_keys: none_keys - feedback: { } - result: { } + feedback: {} + result: {} add_liquid: type: LiquidHandlerAdd goal: @@ -43,8 +44,8 @@ liquid_handler: mix_rate: mix_rate mix_liquid_height: mix_liquid_height none_keys: none_keys - feedback: { } - result: { } + feedback: {} + result: {} transfer_liquid: type: LiquidHandlerTransfer goal: @@ -69,8 +70,8 @@ liquid_handler: mix_liquid_height: mix_liquid_height delays: delays none_keys: none_keys - feedback: { } - result: { } + feedback: {} + result: {} mix: type: LiquidHandlerMix goal: @@ -81,16 +82,16 @@ liquid_handler: offsets: offsets mix_rate: mix_rate none_keys: none_keys - feedback: { } - result: { } + feedback: {} + result: {} move_to: type: LiquidHandlerMoveTo goal: well: well dis_to_top: dis_to_top channel: channel - feedback: { } - result: { } + feedback: {} + result: {} aspirate: type: LiquidHandlerAspirate goal: @@ -245,6 +246,21 @@ liquid_handler: target_vols: target_vols aspiration_flow_rate: aspiration_flow_rate dispense_flow_rates: dispense_flow_rates + handles: + input: + - handler_key: liquid-input + label: Liquid Input + data_type: resource + io_type: target + data_source: handle + data_key: liquid + output: + - handler_key: liquid-output + label: Liquid Output + data_type: resource + io_type: source + data_source: executor + data_key: liquid schema: type: object properties: @@ -272,3 +288,174 @@ liquid_handler.revvity: status: status result: success: success + +liquid_handler.biomek: + description: Biomek液体处理器设备,基于pylabrobot控制 + icon: icon_yiyezhan.webp + class: + module: unilabos.devices.liquid_handling.biomek:LiquidHandlerBiomek + type: python + status_types: {} + action_value_mappings: + create_protocol: + type: LiquidHandlerProtocolCreation + goal: + protocol_name: protocol_name + protocol_description: protocol_description + protocol_version: protocol_version + protocol_author: protocol_author + protocol_date: protocol_date + protocol_type: protocol_type + none_keys: none_keys + feedback: {} + result: {} + run_protocol: + type: EmptyIn + goal: {} + feedback: {} + result: {} + transfer_liquid: + type: LiquidHandlerTransfer + goal: + asp_vols: asp_vols + dis_vols: dis_vols + sources: sources + targets: targets + tip_racks: tip_racks + use_channels: use_channels + asp_flow_rates: asp_flow_rates + dis_flow_rates: dis_flow_rates + offsets: offsets + touch_tip: touch_tip + liquid_height: liquid_height + blow_out_air_volume: blow_out_air_volume + spread: spread + is_96_well: is_96_well + mix_stage: mix_stage + mix_times: mix_times + mix_vol: mix_vol + mix_rate: mix_rate + mix_liquid_height: mix_liquid_height + delays: delays + none_keys: none_keys + feedback: {} + result: {} + handles: + input: + - handler_key: liquid-input + label: Liquid Input + data_type: resource + io_type: target + data_source: handle + data_key: liquid + output: + - handler_key: liquid-output + label: Liquid Output + data_type: resource + io_type: source + data_source: executor + data_key: liquid + transfer_biomek: + type: LiquidHandlerTransferBiomek + goal: + sources: sources + targets: targets + tip_rack: tip_rack + volume: volume + aspirate_techniques: aspirate_techniques + dispense_techniques: dispense_techniques + feedback: {} + result: {} + handles: + input: + - handler_key: sources + label: sources + data_type: resource + data_source: handle + data_key: liquid + - handler_key: targets + label: targets + data_type: resource + data_source: executor + data_key: liquid + - handler_key: tip_rack + label: tip_rack + data_type: resource + data_source: executor + data_key: liquid + output: + - handler_key: sources_out + label: sources + data_type: resource + data_source: handle + data_key: liquid + - handler_key: targets_out + label: targets + data_type: resource + data_source: executor + data_key: liquid + oscillation_biomek: + type: LiquidHandlerOscillateBiomek + goal: + rpm: rpm + time: time + feedback: {} + result: {} + handles: + input: + - handler_key: plate + label: plate + data_type: resource + data_source: handle + data_key: liquid + output: + - handler_key: plate_out + label: plate + data_type: resource + data_source: handle + data_key: liquid + move_biomek: + type: LiquidHandlerMoveBiomek + goal: + source: sources + target: targets + feedback: {} + result: + name: name + handles: + input: + - handler_key: sources + label: sources + data_type: resource + data_source: handle + data_key: liquid + output: + - handler_key: targets + label: targets + data_type: resource + data_source: handle + data_key: liquid + incubation_biomek: + type: LiquidHandlerIncubateBiomek + goal: + time: time + feedback: {} + result: {} + handles: + input: + - handler_key: plate + label: plate + data_type: resource + data_source: handle + data_key: liquid + output: + - handler_key: plate_out + label: plate + data_type: resource + data_source: handle + data_key: liquid + schema: + type: object + properties: {} + required: [] + additionalProperties: false diff --git a/unilabos/registry/devices/mock_devices.yaml b/unilabos/registry/devices/mock_devices.yaml new file mode 100644 index 00000000..59760469 --- /dev/null +++ b/unilabos/registry/devices/mock_devices.yaml @@ -0,0 +1,892 @@ +mock_chiller: + description: Mock Chiller Device + class: + module: unilabos.devices.mock.mock_chiller:MockChiller + type: python + status_types: + current_temperature: Float64 + target_temperature: Float64 + status: String + is_cooling: Bool + is_heating: Bool + vessel: String # 新增 + purpose: String # 新增 + action_value_mappings: + emergency_stop: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + heat_chill_start: + type: HeatChillStart + goal: + vessel: vessel + temp: temp + purpose: purpose + feedback: {} + result: + success: success + status: status + heat_chill_stop: + type: HeatChillStop + goal: + vessel: vessel + feedback: {} + result: + success: success + status: status + schema: + type: object + properties: + current_temperature: + type: number + description: Current temperature of the chiller in °C + target_temperature: + type: number + description: Target temperature setting in °C + status: + type: string + description: Current status of the device + is_cooling: + type: boolean + description: Whether the device is actively cooling + is_heating: + type: boolean + description: Whether the device is actively heating + vessel: # 新增 + type: string + description: Current vessel being processed + purpose: # 新增 + type: string + description: Purpose of the current operation + required: + - current_temperature + - target_temperature + - status + - vessel + - purpose + additionalProperties: false +mock_filter: + description: Mock Filter Device + class: + module: unilabos.devices.mock.mock_filter:MockFilter + type: python + status_types: + status: String + is_filtering: Bool + flow_rate: Float64 + pressure_drop: Float64 + filter_life: Float64 + vessel: String + filtrate_vessel: String + filtered_volume: Float64 + progress: Float64 + stir: Bool + stir_speed: Float64 + temperature: Float64 + continue_heatchill: Bool + target_volume: Float64 + action_value_mappings: + filter: + type: ProtocolFilter + goal: + vessel: vessel + filtrate_vessel: filtrate_vessel + stir: stir + stir_speed: stir_speed + temp: temp + continue_heatchill: continue_heatchill + volume: volume + feedback: + progress: progress + current_temp: current_temp + filtered_volume: filtered_volume + current_status: current_status + result: + success: success + message: message + stop_filtering: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + replace_filter: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the filter + is_filtering: + type: boolean + description: Whether the filter is actively filtering + flow_rate: + type: number + description: Current flow rate in L/min + pressure_drop: + type: number + description: Pressure drop across the filter in Pa + filter_life: + type: number + description: Remaining filter life percentage + power_on: + type: boolean + description: Power state of the device + required: + - status + - is_filtering + - flow_rate + - filter_life + - vessel + - filtrate_vessel + - filtered_volume + - progress + additionalProperties: false +mock_heater: + description: Mock Heater Device + class: + module: unilabos.devices.mock.mock_heater:MockHeater + type: python + status_types: + current_temperature: Float64 + target_temperature: Float64 + status: String + is_heating: Bool + heating_power: Float64 + max_temperature: Float64 + vessel: String + purpose: String + stir: Bool + stir_speed: Float64 + action_value_mappings: + heat_chill_start: + type: HeatChillStart + goal: + vessel: vessel + temp: temp + purpose: purpose + feedback: + status: status + result: + success: success + heat_chill_stop: + type: HeatChillStop + goal: + vessel: vessel + feedback: + status: status + result: + success: success + heat_chill: + type: HeatChill + goal: + vessel: vessel + temp: temp + time: time + stir: stir + stir_speed: stir_speed + purpose: purpose + feedback: + status: status + result: + success: success + emergency_stop: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + current_temperature: + type: number + description: Current temperature of the heater in °C + target_temperature: + type: number + description: Target temperature setting in °C + status: + type: string + description: Current status of the device + is_heating: + type: boolean + description: Whether the device is actively heating + heating_power: + type: number + description: Current heating power percentage + max_temperature: + type: number + description: Maximum temperature limit + vessel: + type: string + description: Current vessel being heated + purpose: + type: string + description: Purpose of the heating operation + stir: + type: boolean + description: Whether stirring is enabled + stir_speed: + type: number + description: Current stirring speed + required: + - current_temperature + - target_temperature + - status + - vessel + - purpose + additionalProperties: false +mock_pump: + description: Mock Pump Device + class: + module: unilabos.devices.mock.mock_pump:MockPump + type: python + status_types: + status: String + pump_state: String + flow_rate: Float64 + target_flow_rate: Float64 + pressure: Float64 + total_volume: Float64 + max_flow_rate: Float64 + max_pressure: Float64 + from_vessel: String + to_vessel: String + transfer_volume: Float64 + amount: String + transfer_time: Float64 + is_viscous: Bool + rinsing_solvent: String + rinsing_volume: Float64 + rinsing_repeats: Int32 + is_solid: Bool + time_spent: Float64 + time_remaining: Float64 + current_device: String + action_value_mappings: + pump_transfer: + type: PumpTransfer + goal: + from_vessel: from_vessel + to_vessel: to_vessel + volume: volume + amount: amount + time: time + viscous: viscous + rinsing_solvent: rinsing_solvent + rinsing_volume: rinsing_volume + rinsing_repeats: rinsing_repeats + solid: solid + feedback: + status: status + current_device: current_device + time_spent: time_spent + time_remaining: time_remaining + result: + success: success + pause_pump: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + resume_pump: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + reset_volume_counter: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the pump + pump_state: + type: string + description: Pump operation state (Running/Stopped/Paused) + flow_rate: + type: number + description: Current flow rate in mL/min + target_flow_rate: + type: number + description: Target flow rate in mL/min + pressure: + type: number + description: Current pressure in bar + total_volume: + type: number + description: Total accumulated volume in mL + max_flow_rate: + type: number + description: Maximum flow rate in mL/min + max_pressure: + type: number + description: Maximum pressure in bar + from_vessel: + type: string + description: Source vessel for transfer + to_vessel: + type: string + description: Target vessel for transfer + transfer_volume: + type: number + description: Volume to transfer in mL + amount: + type: string + description: Amount description + transfer_time: + type: number + description: Transfer time in seconds + is_viscous: + type: boolean + description: Whether the liquid is viscous + rinsing_solvent: + type: string + description: Solvent used for rinsing + rinsing_volume: + type: number + description: Volume used for rinsing + rinsing_repeats: + type: integer + description: Number of rinsing cycles + is_solid: + type: boolean + description: Whether transferring solid material + current_device: + type: string + description: Current device identifier + required: + - status + - pump_state + - flow_rate + - from_vessel + - to_vessel + additionalProperties: false +mock_rotavap: + description: Mock Rotavap Device + class: + module: unilabos.devices.mock.mock_rotavap:MockRotavap + type: python + status_types: + status: String + rotate_state: String + rotate_time: Float64 + rotate_speed: Float64 + pump_state: String + pump_time: Float64 + vacuum_level: Float64 + temperature: Float64 + target_temperature: Float64 + success: String + action_value_mappings: + set_timer: + type: StrSingleInput + goal: + string: command + feedback: {} + result: + success: success + set_rotate_time: + type: FloatSingleInput + goal: + float_in: time_seconds + feedback: {} + result: + success: success + set_pump_time: + type: FloatSingleInput + goal: + float_in: time_seconds + feedback: {} + result: + success: success + set_rotate_speed: + type: FloatSingleInput + goal: + float_in: speed + feedback: {} + result: + success: success + set_temperature: + type: FloatSingleInput + goal: + float_in: temperature + feedback: {} + result: + success: success + start_rotation: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + start_pump: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the rotavap + rotate_state: + type: string + description: Rotation state (Running/Stopped) + rotate_time: + type: number + description: Remaining rotation time in seconds + rotate_speed: + type: number + description: Rotation speed in rpm + pump_state: + type: string + description: Pump state (Running/Stopped) + pump_time: + type: number + description: Remaining pump time in seconds + vacuum_level: + type: number + description: Current vacuum level in mbar + temperature: + type: number + description: Current water bath temperature + target_temperature: + type: number + description: Target water bath temperature + success: + type: string + description: Operation success status + required: + - status + - rotate_time + - pump_time + - temperature + additionalProperties: false +mock_separator: + description: Simplified Mock Separator Device + class: + module: unilabos.devices.mock.mock_separator:MockSeparator + type: python + status_types: + status: String + settling_time: Float64 + valve_state: String + shake_time: Float64 + shake_status: String + current_device: String + purpose: String + product_phase: String + from_vessel: String + separation_vessel: String + to_vessel: String + waste_phase_to_vessel: String + solvent: String + solvent_volume: Float64 + through: String + repeats: Int32 + stir_time: Float64 + stir_speed: Float64 + time_spent: Float64 + time_remaining: Float64 + action_value_mappings: + separate: + type: Separate + goal: + purpose: purpose + product_phase: product_phase + from_vessel: from_vessel + separation_vessel: separation_vessel + to_vessel: to_vessel + waste_phase_to_vessel: waste_phase_to_vessel + solvent: solvent + solvent_volume: solvent_volume + through: through + repeats: repeats + stir_time: stir_time + stir_speed: stir_speed + settling_time: settling_time + feedback: + status: status + current_device: current_device + time_spent: time_spent + time_remaining: time_remaining + result: + success: success + shake: + type: FloatSingleInput + goal: + float_in: shake_time + feedback: + status: status + result: + success: success + stop_operations: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + set_valve: + type: StrSingleInput + goal: + string: command + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the separator + settling_time: + type: number + description: Settling time in seconds + valve_state: + type: string + description: Valve state (Open/Closed) + shake_time: + type: number + description: Remaining shake time in seconds + shake_status: + type: string + description: Current shake state + purpose: + type: string + description: Separation purpose (wash/extract) + product_phase: + type: string + description: Product phase (top/bottom) + from_vessel: + type: string + description: Source vessel + separation_vessel: + type: string + description: Vessel for separation + to_vessel: + type: string + description: Target vessel + required: + - status + - valve_state + - shake_status + - current_device + additionalProperties: false +mock_solenoid_valve: + description: Mock Solenoid Valve Device + class: + module: unilabos.devices.mock.mock_solenoid_valve:MockSolenoidValve + type: python + status_types: + status: String + valve_status: String + action_value_mappings: + set_valve_status: + type: StrSingleInput + goal: + string: status + feedback: {} + result: + success: success + open_valve: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + close_valve: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the valve + valve_status: + type: string + description: Valve status (Open/Closed) + required: + - status + - valve_status + additionalProperties: false +mock_stirrer: + description: Mock Stirrer Device + class: + module: unilabos.devices.mock.mock_stirrer:MockStirrer + type: python + status_types: + status: String + stir_speed: Float64 + target_stir_speed: Float64 + stir_state: String + temperature: Float64 + target_temperature: Float64 + heating_state: String + heating_power: Float64 + max_stir_speed: Float64 + max_temperature: Float64 + action_value_mappings: + set_stir_speed: + type: FloatSingleInput + goal: + float_in: speed + feedback: {} + result: + success: success + set_temperature: + type: FloatSingleInput + goal: + float_in: temperature + feedback: {} + result: + success: success + start_stirring: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + stop_stirring: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + heating_control: + type: StrSingleInput + goal: + string: heating_state + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the stirrer + stir_speed: + type: number + description: Current stirring speed in rpm + target_stir_speed: + type: number + description: Target stirring speed in rpm + stir_state: + type: string + description: Stirring state (Running/Stopped) + temperature: + type: number + description: Current temperature in °C + target_temperature: + type: number + description: Target temperature in °C + heating_state: + type: string + description: Heating state (On/Off) + heating_power: + type: number + description: Current heating power percentage + max_stir_speed: + type: number + description: Maximum stirring speed in rpm + max_temperature: + type: number + description: Maximum temperature in °C + required: + - status + - stir_speed + - temperature + - power_state + additionalProperties: false +mock_stirrer_new: + description: Mock Stirrer Device (Copy Version) + class: + module: unilabos.devices.mock.mock_stirrer_new:MockStirrer_new + type: python + status_types: + status: String + vessel: String + purpose: String + stir_speed: Float64 + target_stir_speed: Float64 + stir_state: String + stir_time: Float64 + settling_time: Float64 + progress: Float64 + max_stir_speed: Float64 + action_value_mappings: + start_stir: + type: ProtocolStartStir + goal: + vessel: vessel + stir_speed: stir_speed + purpose: purpose + feedback: + progress: progress + current_speed: stir_speed + current_status: status + result: + success: success + message: message + stir: + type: Stir + goal: + stir_time: stir_time + stir_speed: stir_speed + settling_time: settling_time + feedback: + status: status + result: + success: success + stop_stir: + type: ProtocolStopStir + goal: + vessel: vessel + feedback: + progress: progress + current_status: status + result: + success: success + message: message + schema: + type: object + properties: + status: + type: string + vessel: + type: string + purpose: + type: string + stir_speed: + type: number + target_stir_speed: + type: number + stir_state: + type: string + stir_time: + type: number + settling_time: + type: number + progress: + type: number + max_stir_speed: + type: number + required: + - status + - stir_speed + - stir_state + - vessel + additionalProperties: false +mock_vacuum: + description: Mock Vacuum Pump Device + class: + module: unilabos.devices.mock.mock_vacuum:MockVacuum + type: python + status_types: + status: String + power_state: String + pump_state: String + vacuum_level: Float64 + target_vacuum: Float64 + pump_speed: Float64 + pump_efficiency: Float64 + max_pump_speed: Float64 + action_value_mappings: + power_control: + type: StrSingleInput + goal: + string: power_state + feedback: {} + result: + success: success + set_vacuum_level: + type: FloatSingleInput + goal: + float_in: vacuum_level + feedback: {} + result: + success: success + start_vacuum: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + stop_vacuum: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + pause_vacuum: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + resume_vacuum: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + vent_to_atmosphere: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + status: + type: string + description: Current status of the vacuum pump + power_state: + type: string + description: Power state (On/Off) + pump_state: + type: string + description: Pump operation state (Running/Stopped/Paused) + vacuum_level: + type: number + description: Current vacuum level in mbar + target_vacuum: + type: number + description: Target vacuum level in mbar + pump_speed: + type: number + description: Current pump speed in L/s + pump_efficiency: + type: number + description: Pump efficiency percentage + max_pump_speed: + type: number + description: Maximum pump speed in L/s + required: + - status + - power_state + - pump_state + - vacuum_level + additionalProperties: false diff --git a/unilabos/registry/devices/moveit_config.yaml b/unilabos/registry/devices/moveit_config.yaml new file mode 100644 index 00000000..6236855d --- /dev/null +++ b/unilabos/registry/devices/moveit_config.yaml @@ -0,0 +1,56 @@ +moveit.toyo_xyz: + description: Toyo XYZ + class: + module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface + type: python + action_value_mappings: + set_position: + type: SendCmd + goal: + command: command + feedback: { } + result: { } + pick_and_place: + type: SendCmd + goal: + command: command + feedback: { } + result: { } + set_status: + type: SendCmd + goal: + command: command + feedback: { } + result: { } + + model: + type: device + mesh: toyo_xyz + +moveit.arm_slider: + description: Arm with Slider + model: + type: device + mesh: arm_slider + class: + module: unilabos.devices.ros_dev.moveit_interface:MoveitInterface + type: python + action_value_mappings: + set_position: + type: SendCmd + goal: + command: command + feedback: {} + result: {} + pick_and_place: + type: SendCmd + goal: + command: command + feedback: {} + result: {} + set_status: + type: SendCmd + goal: + command: command + feedback: {} + result: {} diff --git a/unilabos/registry/devices/pump_and_valve.yaml b/unilabos/registry/devices/pump_and_valve.yaml index 5fdd8606..fd5dd98e 100644 --- a/unilabos/registry/devices/pump_and_valve.yaml +++ b/unilabos/registry/devices/pump_and_valve.yaml @@ -23,20 +23,51 @@ syringe_pump_with_valve.runze: type: string description: The position of the valve required: - - status - - position - - valve_position + - status + - position + - valve_position additionalProperties: false - solenoid_valve.mock: description: Mock solenoid valve class: module: unilabos.devices.pump_and_valve.solenoid_valve_mock:SolenoidValveMock type: python + status_types: + status: String + valve_position: String + action_value_mappings: + open: + type: EmptyIn + goal: {} + feedback: {} + result: {} + close: + type: EmptyIn + goal: {} + feedback: {} + result: {} + handles: + input: + - handler_key: fluid-input + label: Fluid Input + data_type: fluid + output: + - handler_key: fluid-output + label: Fluid Output + data_type: fluid + init_param_schema: + type: object + properties: + port: + type: string + description: "通信端口" + default: "COM6" + required: + - port solenoid_valve: description: Solenoid valve class: module: unilabos.devices.pump_and_valve.solenoid_valve:SolenoidValve - type: python \ No newline at end of file + type: python diff --git a/unilabos/registry/devices/temperature.yaml b/unilabos/registry/devices/temperature.yaml index 1c01b4e8..662ee016 100644 --- a/unilabos/registry/devices/temperature.yaml +++ b/unilabos/registry/devices/temperature.yaml @@ -62,4 +62,4 @@ tempsensor: command: command feedback: {} result: - success: success \ No newline at end of file + success: success diff --git a/unilabos/registry/devices/vacuum_and_purge.yaml b/unilabos/registry/devices/vacuum_and_purge.yaml index 236ceddc..6bdff16b 100644 --- a/unilabos/registry/devices/vacuum_and_purge.yaml +++ b/unilabos/registry/devices/vacuum_and_purge.yaml @@ -22,9 +22,76 @@ vacuum_pump.mock: string: string feedback: {} result: {} + handles: + input: + - handler_key: fluid-input + label: Fluid Input + data_type: fluid + io_type: target + data_source: handle + data_key: fluid_in + output: + - handler_key: fluid-output + label: Fluid Output + data_type: fluid + io_type: source + data_source: executor + data_key: fluid_out + init_param_schema: + type: object + properties: + port: + type: string + description: "通信端口" + default: "COM6" + required: + - port gas_source.mock: description: Mock gas source class: module: unilabos.devices.pump_and_valve.vacuum_pump_mock:VacuumPumpMock type: python + status_types: + status: String + action_value_mappings: + open: + type: EmptyIn + goal: {} + feedback: {} + result: {} + close: + type: EmptyIn + goal: {} + feedback: {} + result: {} + set_status: + type: StrSingleInput + goal: + string: string + feedback: {} + result: {} + handles: + input: + - handler_key: fluid-input + label: Fluid Input + data_type: fluid + io_type: target + data_source: handle + data_key: fluid_in + output: + - handler_key: fluid-output + label: Fluid Output + data_type: fluid + io_type: source + data_source: executor + data_key: fluid_out + init_param_schema: + type: object + properties: + port: + type: string + description: "通信端口" + default: "COM6" + required: + - port \ No newline at end of file diff --git a/unilabos/registry/devices/virtual_device.yaml b/unilabos/registry/devices/virtual_device.yaml new file mode 100644 index 00000000..f92baf29 --- /dev/null +++ b/unilabos/registry/devices/virtual_device.yaml @@ -0,0 +1,388 @@ +virtual_pump: + description: Virtual Pump for PumpTransferProtocol Testing + class: + module: unilabos.devices.virtual.virtual_pump:VirtualPump + type: python + status_types: + status: String + position: Float64 + valve_position: Int32 # 修复:使用 Int32 而不是 String + max_volume: Float64 + current_volume: Float64 + action_value_mappings: + transfer: + type: PumpTransfer + goal: + from_vessel: from_vessel + to_vessel: to_vessel + volume: volume + amount: amount + time: time + viscous: viscous + rinsing_solvent: rinsing_solvent + rinsing_volume: rinsing_volume + rinsing_repeats: rinsing_repeats + solid: solid + feedback: + status: status + result: + success: success + set_valve_position: + type: FloatSingleInput + goal: + Int32: Int32 + feedback: + status: status + result: + success: success + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_volume: + type: number + default: 25.0 + additionalProperties: false + +virtual_stirrer: + description: Virtual Stirrer for StirProtocol Testing + class: + module: unilabos.devices.virtual.virtual_stirrer:VirtualStirrer + type: python + status_types: + status: String + action_value_mappings: + stir: + type: Stir + goal: + stir_time: stir_time + stir_speed: stir_speed + settling_time: settling_time + feedback: + status: status + result: + success: success + start_stir: + type: ProtocolStartStir + goal: + vessel: vessel + stir_speed: stir_speed + purpose: purpose + feedback: + status: status + result: + success: success + stop_stir: + type: ProtocolStopStir + goal: + vessel: vessel + feedback: + status: status + result: + success: success + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_temp: + type: number + default: 100.0 + max_speed: + type: number + default: 1000.0 + additionalProperties: false + +virtual_valve: + description: Virtual Valve for AddProtocol Testing + class: + module: unilabos.devices.virtual.virtual_valve:VirtualValve + type: python + status_types: + status: String + valve_state: String + current_position: Int32 + target_position: Int32 + max_positions: Int32 + action_value_mappings: + set_position: + type: SendCmd + goal: + command: position + feedback: {} + result: + success: success + open: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + close: + type: EmptyIn + goal: {} + feedback: {} + result: + success: success + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + positions: + type: integer + default: 6 + additionalProperties: false + +virtual_centrifuge: + description: Virtual Centrifuge for CentrifugeProtocol Testing + class: + module: unilabos.devices.virtual.virtual_centrifuge:VirtualCentrifuge + type: python + status_types: + status: String + current_speed: Float64 + target_speed: Float64 + current_temp: Float64 + target_temp: Float64 + max_speed: Float64 + max_temp: Float64 + min_temp: Float64 + centrifuge_state: String + time_remaining: Float64 + action_value_mappings: + centrifuge: + type: ProtocolCentrifuge + goal: + vessel: vessel + speed: speed + time: time + temp: temp + feedback: + progress: progress + current_speed: current_speed + current_temp: current_temp + current_status: status + result: + success: success + message: message + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_speed: + type: number + default: 15000.0 + max_temp: + type: number + default: 40.0 + min_temp: + type: number + default: 4.0 + additionalProperties: false + +virtual_filter: + description: Virtual Filter for FilterProtocol Testing + class: + module: unilabos.devices.virtual.virtual_filter:VirtualFilter + type: python + status_types: + status: String + filter_state: String + current_temp: Float64 + target_temp: Float64 + max_temp: Float64 + stir_speed: Float64 + max_stir_speed: Float64 + filtered_volume: Float64 + progress: Float64 + message: String + action_value_mappings: + filter_sample: + type: ProtocolFilter + goal: + vessel: vessel + filtrate_vessel: filtrate_vessel + stir: stir + stir_speed: stir_speed + temp: temp + continue_heatchill: continue_heatchill + volume: volume + feedback: + progress: progress + current_temp: current_temp + filtered_volume: filtered_volume + current_status: status + result: + success: success + message: message + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_temp: + type: number + default: 100.0 + max_stir_speed: + type: number + default: 1000.0 + additionalProperties: false + +virtual_heatchill: + description: Virtual HeatChill for HeatChillProtocol Testing + class: + module: unilabos.devices.virtual.virtual_heatchill:VirtualHeatChill + type: python + status_types: + status: String + action_value_mappings: + heat_chill: + type: HeatChill + goal: + vessel: vessel + temp: temp + time: time + stir: stir + stir_speed: stir_speed + purpose: purpose + feedback: + status: status + result: + success: success + heat_chill_start: + type: HeatChillStart + goal: + vessel: vessel + temp: temp + purpose: purpose + feedback: + status: status + result: + success: success + heat_chill_stop: + type: HeatChillStop + goal: + vessel: vessel + feedback: + status: status + result: + success: success + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_temp: + type: number + default: 200.0 + min_temp: + type: number + default: -80.0 + max_stir_speed: + type: number + default: 1000.0 + additionalProperties: false + +virtual_transfer_pump: + description: Virtual Transfer Pump for TransferProtocol Testing + class: + module: unilabos.devices.virtual.virtual_transferpump:VirtualTransferPump + type: python + status_types: + status: String + current_volume: Float64 + max_volume: Float64 + transfer_rate: Float64 + from_vessel: String + to_vessel: String + progress: Float64 + transferred_volume: Float64 + current_status: String + action_value_mappings: + transfer: + type: ProtocolTransfer + goal: + from_vessel: from_vessel + to_vessel: to_vessel + volume: volume + amount: amount + time: time + viscous: viscous + rinsing_solvent: rinsing_solvent + rinsing_volume: rinsing_volume + rinsing_repeats: rinsing_repeats + solid: solid + feedback: + progress: progress + transferred_volume: transferred_volume + current_status: current_status + result: + success: success + message: message + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_volume: + type: number + default: 50.0 + transfer_rate: + type: number + default: 5.0 + additionalProperties: false + +virtual_column: + description: Virtual Column for RunColumn Protocol Testing + class: + module: unilabos.devices.virtual.virtual_column:VirtualColumn + type: python + status_types: + status: String + column_state: String + current_flow_rate: Float64 + max_flow_rate: Float64 + column_length: Float64 + column_diameter: Float64 + processed_volume: Float64 + progress: Float64 + current_status: String + action_value_mappings: + run_column: + type: ProtocolRunColumn + goal: + from_vessel: from_vessel + to_vessel: to_vessel + column: column + feedback: + status: current_status + progress: progress + result: + success: success + message: message + schema: + type: object + properties: + port: + type: string + default: "VIRTUAL" + max_flow_rate: + type: number + default: 10.0 + column_length: + type: number + default: 25.0 + column_diameter: + type: number + default: 2.0 + additionalProperties: false \ No newline at end of file diff --git a/unilabos/registry/devices/work_station.yaml b/unilabos/registry/devices/work_station.yaml index fadfd5ec..d3a37338 100644 --- a/unilabos/registry/devices/work_station.yaml +++ b/unilabos/registry/devices/work_station.yaml @@ -4,4 +4,4 @@ workstation: module: unilabos.ros.nodes.presets.protocol_node:ROS2ProtocolNode type: ros2 schema: - properties: {} \ No newline at end of file + properties: {} diff --git a/unilabos/registry/registry.py b/unilabos/registry/registry.py index c68e0d8d..03d48997 100644 --- a/unilabos/registry/registry.py +++ b/unilabos/registry/registry.py @@ -25,9 +25,7 @@ class Registry: self.ResourceCreateFromOuterEasy = self._replace_type_with_class( "ResourceCreateFromOuterEasy", "host_node", f"动作 create_resource" ) - self.EmptyIn = self._replace_type_with_class( - "EmptyIn", "host_node", f"" - ) + self.EmptyIn = self._replace_type_with_class("EmptyIn", "host_node", f"") self.device_type_registry = {} self.resource_type_registry = {} self._setup_called = False # 跟踪setup是否已调用 @@ -66,6 +64,7 @@ class Registry: "goal_default": yaml.safe_load( io.StringIO(get_yaml_from_goal_type(self.ResourceCreateFromOuter.Goal)) ), + "handles": {}, }, "create_resource": { "type": self.ResourceCreateFromOuterEasy, @@ -86,6 +85,15 @@ class Registry: "goal_default": yaml.safe_load( io.StringIO(get_yaml_from_goal_type(self.ResourceCreateFromOuterEasy.Goal)) ), + "handles": { + "output": [{ + "handler_key": "labware", + "label": "Labware", + "data_type": "resource", + "data_source": "handle", + "data_key": "liquid" + }] + }, }, "test_latency": { "type": self.EmptyIn, @@ -94,11 +102,14 @@ class Registry: "result": {"latency_ms": "latency_ms", "time_diff_ms": "time_diff_ms"}, "schema": ros_action_to_json_schema(self.EmptyIn), "goal_default": {}, + "handles": {}, }, }, }, "icon": "icon_device.webp", "registry_type": "device", + "handles": [], + "init_param_schema": {}, "schema": {"properties": {}, "additionalProperties": False, "type": "object"}, "file_path": "/", } @@ -132,6 +143,10 @@ class Registry: resource_info["description"] = "" if "icon" not in resource_info: resource_info["icon"] = "" + if "handles" not in resource_info: + resource_info["handles"] = [] + if "init_param_schema" not in resource_info: + resource_info["init_param_schema"] = {} resource_info["registry_type"] = "resource" self.resource_type_registry.update(data) logger.debug( @@ -194,6 +209,10 @@ class Registry: device_config["description"] = "" if "icon" not in device_config: device_config["icon"] = "" + if "handles" not in device_config: + device_config["handles"] = [] + if "init_param_schema" not in device_config: + device_config["init_param_schema"] = {} device_config["registry_type"] = "device" if "class" in device_config: # 处理状态类型 @@ -206,6 +225,8 @@ class Registry: # 处理动作值映射 if "action_value_mappings" in device_config["class"]: for action_name, action_config in device_config["class"]["action_value_mappings"].items(): + if "handles" not in action_config: + action_config["handles"] = [] if "type" in action_config: action_config["type"] = self._replace_type_with_class( action_config["type"], device_id, f"动作 {action_name}" diff --git a/unilabos/resources/graphio.py b/unilabos/resources/graphio.py index 9a31add5..cca7a35b 100644 --- a/unilabos/resources/graphio.py +++ b/unilabos/resources/graphio.py @@ -9,7 +9,7 @@ try: from pylabrobot.resources.resource import Resource as ResourcePLR except ImportError: pass - +from typing import Union, get_origin, get_args physical_setup_graph: nx.Graph = None @@ -298,7 +298,6 @@ def nested_dict_to_list(nested_dict: dict) -> list[dict]: # FIXME 是tree? return result - def convert_resources_to_type( resources_list: list[dict], resource_type: type, *, plr_model: bool = False ) -> Union[list[dict], dict, None, "ResourcePLR"]: @@ -320,9 +319,13 @@ def convert_resources_to_type( return resource_ulab_to_plr(resources_list, plr_model) resources_tree = dict_to_tree({r["id"]: r for r in resources_list}) return resource_ulab_to_plr(resources_tree[0], plr_model) - elif isinstance(resource_type, list) and all(issubclass(t, ResourcePLR) for t in resource_type): - resources_tree = dict_to_tree({r["id"]: r for r in resources_list}) - return [resource_ulab_to_plr(r, plr_model) for r in resources_tree] + elif isinstance(resource_type, list) : + if all((get_origin(t) is Union) for t in resource_type): + resources_tree = dict_to_tree({r["id"]: r for r in resources_list}) + return [resource_ulab_to_plr(r, plr_model) for r in resources_tree] + elif all(issubclass(t, ResourcePLR) for t in resource_type): + resources_tree = dict_to_tree({r["id"]: r for r in resources_list}) + return [resource_ulab_to_plr(r, plr_model) for r in resources_tree] else: return None @@ -343,9 +346,13 @@ def convert_resources_from_type(resources_list, resource_type: type) -> Union[li elif isinstance(resource_type, type) and issubclass(resource_type, ResourcePLR): resources_tree = [resource_plr_to_ulab(resources_list)] return tree_to_list(resources_tree) - elif isinstance(resource_type, list) and all(issubclass(t, ResourcePLR) for t in resource_type): - resources_tree = [resource_plr_to_ulab(r) for r in resources_list] - return tree_to_list(resources_tree) + elif isinstance(resource_type, list) : + if all((get_origin(t) is Union) for t in resource_type): + resources_tree = [resource_plr_to_ulab(r) for r in resources_list] + return tree_to_list(resources_tree) + elif all(issubclass(t, ResourcePLR) for t in resource_type): + resources_tree = [resource_plr_to_ulab(r) for r in resources_list] + return tree_to_list(resources_tree) else: return None diff --git a/unilabos/ros/main_slave_run.py b/unilabos/ros/main_slave_run.py index c4c5a172..bbd6359e 100644 --- a/unilabos/ros/main_slave_run.py +++ b/unilabos/ros/main_slave_run.py @@ -6,9 +6,9 @@ import time from typing import Optional, Dict, Any, List import rclpy -from unilabos.ros.nodes.presets.joint_republisher import JointRepublisher from unilabos.ros.nodes.presets.resource_mesh_manager import ResourceMeshManager from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker +from unilabos.devices.ros_dev.liquid_handler_joint_publisher import LiquidHandlerJointPublisher from unilabos_msgs.msg import Resource # type: ignore from unilabos_msgs.srv import ResourceAdd, SerialCommand # type: ignore from rclpy.executors import MultiThreadedExecutor @@ -69,19 +69,23 @@ def main( ) if visual != "disable": + from unilabos.ros.nodes.presets.joint_republisher import JointRepublisher + resource_mesh_manager = ResourceMeshManager( resources_mesh_config, resources_config, - resource_tracker= DeviceNodeResourceTracker(), + resource_tracker = host_node.resource_tracker, device_id = 'resource_mesh_manager', ) joint_republisher = JointRepublisher( 'joint_republisher', - DeviceNodeResourceTracker() + host_node.resource_tracker ) - + lh_joint_pub = LiquidHandlerJointPublisher(resources_config=resources_config, + resource_tracker=host_node.resource_tracker) executor.add_node(resource_mesh_manager) executor.add_node(joint_republisher) + executor.add_node(lh_joint_pub) thread = threading.Thread(target=executor.spin, daemon=True, name="host_executor_thread") thread.start() @@ -121,6 +125,7 @@ def slave( executor.add_node(n) if visual != "disable": + from unilabos.ros.nodes.presets.joint_republisher import JointRepublisher resource_mesh_manager = ResourceMeshManager( resources_mesh_config, resources_config, diff --git a/unilabos/ros/msgs/message_converter.py b/unilabos/ros/msgs/message_converter.py index 11c7afd5..62ab606d 100644 --- a/unilabos/ros/msgs/message_converter.py +++ b/unilabos/ros/msgs/message_converter.py @@ -131,7 +131,7 @@ _msg_converter: Dict[Type, Any] = { Bool: lambda x: Bool(data=bool(x)), str: str, String: lambda x: String(data=str(x)), - Point: lambda x: Point(x=x.x, y=x.y, z=x.z), + Point: lambda x: Point(x=x.x, y=x.y, z=x.z) if not isinstance(x, dict) else Point(x=x.get("x", 0.0), y=x.get("y", 0.0), z=x.get("z", 0.0)), Resource: lambda x: Resource( id=x.get("id", ""), name=x.get("name", ""), @@ -141,7 +141,7 @@ _msg_converter: Dict[Type, Any] = { type=x.get("type", ""), category=x.get("class", "") or x.get("type", ""), pose=( - Pose(position=Point(x=float(x.get("position", {}).get("x", 0)), y=float(x.get("position", {}).get("y", 0)), z=float(x.get("position", {}).get("z", 0)))) + Pose(position=Point(x=float(x.get("position", {}).get("x", 0.0)), y=float(x.get("position", {}).get("y", 0.0)), z=float(x.get("position", {}).get("z", 0.0)))) if x.get("position", None) is not None else Pose() ), diff --git a/unilabos/ros/nodes/base_device_node.py b/unilabos/ros/nodes/base_device_node.py index 28b67aa4..eafdd71c 100644 --- a/unilabos/ros/nodes/base_device_node.py +++ b/unilabos/ros/nodes/base_device_node.py @@ -1,5 +1,4 @@ import copy -import functools import json import threading import time @@ -20,16 +19,29 @@ from rclpy.service import Service from unilabos_msgs.action import SendCmd from unilabos_msgs.srv._serial_command import SerialCommand_Request, SerialCommand_Response -from unilabos.resources.graphio import convert_resources_to_type, convert_resources_from_type, resource_ulab_to_plr, \ - initialize_resources, list_to_nested_dict, dict_to_tree, resource_plr_to_ulab, tree_to_list +from unilabos.resources.graphio import ( + convert_resources_to_type, + convert_resources_from_type, + resource_ulab_to_plr, + initialize_resources, + dict_to_tree, + resource_plr_to_ulab, + tree_to_list, +) from unilabos.ros.msgs.message_converter import ( convert_to_ros_msg, convert_from_ros_msg, convert_from_ros_msg_with_mapping, - convert_to_ros_msg_with_mapping, ros_action_to_json_schema, + convert_to_ros_msg_with_mapping, ) -from unilabos_msgs.srv import ResourceAdd, ResourceGet, ResourceDelete, ResourceUpdate, ResourceList, \ - SerialCommand # type: ignore +from unilabos_msgs.srv import ( + ResourceAdd, + ResourceGet, + ResourceDelete, + ResourceUpdate, + ResourceList, + SerialCommand, +) # type: ignore from unilabos_msgs.msg import Resource # type: ignore from unilabos.ros.nodes.resource_tracker import DeviceNodeResourceTracker @@ -37,7 +49,7 @@ from unilabos.ros.x.rclpyx import get_event_loop from unilabos.ros.utils.driver_creator import ProtocolNodeCreator, PyLabRobotCreator, DeviceClassCreator from unilabos.utils.async_util import run_async_func from unilabos.utils.log import info, debug, warning, error, critical, logger -from unilabos.utils.type_check import get_type_class, TypeEncoder +from unilabos.utils.type_check import get_type_class, TypeEncoder, serialize_result_info T = TypeVar("T") @@ -292,7 +304,9 @@ class BaseROS2DeviceNode(Node, Generic[T]): self.create_ros_action_server(action_name, action_value_mapping) # 创建线程池执行器 - self._executor = ThreadPoolExecutor(max_workers=max(len(action_value_mappings), 1), thread_name_prefix=f"ROSDevice{self.device_id}") + self._executor = ThreadPoolExecutor( + max_workers=max(len(action_value_mappings), 1), thread_name_prefix=f"ROSDevice{self.device_id}" + ) # 创建资源管理客户端 self._resource_clients: Dict[str, Client] = { @@ -329,12 +343,14 @@ class BaseROS2DeviceNode(Node, Generic[T]): ADD_LIQUID_TYPE = other_calling_param.pop("ADD_LIQUID_TYPE", []) LIQUID_VOLUME = other_calling_param.pop("LIQUID_VOLUME", []) LIQUID_INPUT_SLOT = other_calling_param.pop("LIQUID_INPUT_SLOT", []) - slot = other_calling_param.pop("slot", -1) - if slot >= 0: # slot为负数的时候采用assign方法 + slot = other_calling_param.pop("slot", "-1") + if slot != "-1": # slot为负数的时候采用assign方法 other_calling_param["slot"] = slot # 本地拿到这个物料,可能需要先做初始化? if isinstance(resources, list): - if len(resources) == 1 and isinstance(resources[0], list) and not initialize_full: # 取消,不存在的情况 + if ( + len(resources) == 1 and isinstance(resources[0], list) and not initialize_full + ): # 取消,不存在的情况 # 预先initialize过,以整组的形式传入 request.resources = [convert_to_ros_msg(Resource, resource_) for resource_ in resources[0]] elif initialize_full: @@ -349,6 +365,25 @@ class BaseROS2DeviceNode(Node, Generic[T]): response = rclient.call(request) # 应该先add_resource了 res.response = "OK" + # 如果driver自己就有assign的方法,那就使用driver自己的assign方法 + if hasattr(self.driver_instance, "create_resource"): + create_resource_func = getattr(self.driver_instance, "create_resource") + try: + ret = create_resource_func( + resource_tracker=self.resource_tracker, + resources=request.resources, + bind_parent_id=bind_parent_id, + bind_location=location, + liquid_input_slot=LIQUID_INPUT_SLOT, + liquid_type=ADD_LIQUID_TYPE, + liquid_volume=LIQUID_VOLUME, + slot_on_deck=slot, + ) + res.response = serialize_result_info("", True, ret) + except Exception as e: + traceback.print_exc() + res.response = serialize_result_info(traceback.format_exc(), False, {}) + return res # 接下来该根据bind_parent_id进行assign了,目前只有plr可以进行assign,不然没有办法输入到物料系统中 resource = self.resource_tracker.figure_resource({"name": bind_parent_id}) # request.resources = [convert_to_ros_msg(Resource, resources)] @@ -359,6 +394,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): from pylabrobot.resources import Coordinate from pylabrobot.resources import OTDeck from pylabrobot.resources import Plate + contain_model = not isinstance(resource, Deck) if isinstance(resource, ResourcePLR): # resources.list() @@ -366,25 +402,39 @@ class BaseROS2DeviceNode(Node, Generic[T]): plr_instance = resource_ulab_to_plr(resources_tree[0], contain_model) if isinstance(plr_instance, Plate): empty_liquid_info_in = [(None, 0)] * plr_instance.num_items - for liquid_type, liquid_volume, liquid_input_slot in zip(ADD_LIQUID_TYPE, LIQUID_VOLUME, LIQUID_INPUT_SLOT): + for liquid_type, liquid_volume, liquid_input_slot in zip( + ADD_LIQUID_TYPE, LIQUID_VOLUME, LIQUID_INPUT_SLOT + ): empty_liquid_info_in[liquid_input_slot] = (liquid_type, liquid_volume) plr_instance.set_well_liquids(empty_liquid_info_in) if isinstance(resource, OTDeck) and "slot" in other_calling_param: + other_calling_param["slot"] = int(other_calling_param["slot"]) resource.assign_child_at_slot(plr_instance, **other_calling_param) else: - _discard_slot = other_calling_param.pop("slot", -1) - resource.assign_child_resource(plr_instance, Coordinate(location["x"], location["y"], location["z"]), **other_calling_param) - request2.resources = [convert_to_ros_msg(Resource, r) for r in tree_to_list([resource_plr_to_ulab(resource)])] + _discard_slot = other_calling_param.pop("slot", "-1") + resource.assign_child_resource( + plr_instance, + Coordinate(location["x"], location["y"], location["z"]), + **other_calling_param, + ) + request2.resources = [ + convert_to_ros_msg(Resource, r) for r in tree_to_list([resource_plr_to_ulab(resource)]) + ] rclient2.call(request2) # 发送给ResourceMeshManager action_client = ActionClient( - self, SendCmd, "/devices/resource_mesh_manager/add_resource_mesh", callback_group=self.callback_group + self, + SendCmd, + "/devices/resource_mesh_manager/add_resource_mesh", + callback_group=self.callback_group, ) goal = SendCmd.Goal() - goal.command = json.dumps({ - "resources": resources, - "bind_parent_id": bind_parent_id, - }) + goal.command = json.dumps( + { + "resources": resources, + "bind_parent_id": bind_parent_id, + } + ) future = action_client.send_goal_async(goal, goal_uuid=uuid.uuid4()) def done_cb(*args): @@ -401,10 +451,16 @@ class BaseROS2DeviceNode(Node, Generic[T]): # noinspection PyTypeChecker self._service_server: Dict[str, Service] = { "query_host_name": self.create_service( - SerialCommand, f"/srv{self.namespace}/query_host_name", query_host_name_cb, callback_group=self.callback_group + SerialCommand, + f"/srv{self.namespace}/query_host_name", + query_host_name_cb, + callback_group=self.callback_group, ), "append_resource": self.create_service( - SerialCommand, f"/srv{self.namespace}/append_resource", append_resource, callback_group=self.callback_group + SerialCommand, + f"/srv{self.namespace}/append_resource", + append_resource, + callback_group=self.callback_group, ), } @@ -433,6 +489,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): registered_devices[self.device_id] = device_info from unilabos.config.config import BasicConfig from unilabos.ros.nodes.presets.host_node import HostNode + if not BasicConfig.is_host_mode: sclient = self.create_client(SerialCommand, "/node_info_update") # 启动线程执行发送任务 @@ -440,7 +497,7 @@ class BaseROS2DeviceNode(Node, Generic[T]): target=self.send_slave_node_info, args=(sclient,), daemon=True, - name=f"ROSDevice{self.device_id}_send_slave_node_info" + name=f"ROSDevice{self.device_id}_send_slave_node_info", ).start() else: host_node = HostNode.get_instance(0) @@ -451,12 +508,18 @@ class BaseROS2DeviceNode(Node, Generic[T]): sclient.wait_for_service() request = SerialCommand.Request() from unilabos.config.config import BasicConfig - request.command = json.dumps({ - "SYNC_SLAVE_NODE_INFO": { - "machine_name": BasicConfig.machine_name, - "type": "slave", - "edge_device_id": self.device_id - }}, ensure_ascii=False, cls=TypeEncoder) + + request.command = json.dumps( + { + "SYNC_SLAVE_NODE_INFO": { + "machine_name": BasicConfig.machine_name, + "type": "slave", + "edge_device_id": self.device_id, + } + }, + ensure_ascii=False, + cls=TypeEncoder, + ) # 发送异步请求并等待结果 future = sclient.call_async(request) @@ -529,6 +592,11 @@ class BaseROS2DeviceNode(Node, Generic[T]): """创建动作执行回调函数""" async def execute_callback(goal_handle: ServerGoalHandle): + # 初始化结果信息变量 + execution_error = "" + execution_success = False + action_return_value = None + self.lab_logger().info(f"执行动作: {action_name}") goal = goal_handle.request @@ -568,7 +636,11 @@ class BaseROS2DeviceNode(Node, Generic[T]): current_resources.extend(response.resources) else: r = ResourceGet.Request() - r.id = action_kwargs[k]["id"] if v == "unilabos_msgs/Resource" else action_kwargs[k][0]["id"] + r.id = ( + action_kwargs[k]["id"] + if v == "unilabos_msgs/Resource" + else action_kwargs[k][0]["id"] + ) r.with_children = True response = await self._resource_clients["resource_get"].call_async(r) current_resources.extend(response.resources) @@ -591,7 +663,19 @@ class BaseROS2DeviceNode(Node, Generic[T]): if asyncio.iscoroutinefunction(ACTION): try: self.lab_logger().info(f"异步执行动作 {ACTION}") - future = ROS2DeviceNode.run_async_func(ACTION, **action_kwargs) + future = ROS2DeviceNode.run_async_func(ACTION, trace_error=False, **action_kwargs) + + def _handle_future_exception(fut): + nonlocal execution_error, execution_success, action_return_value + try: + action_return_value = fut.result() + execution_success = True + except Exception as e: + execution_error = traceback.format_exc() + error(f"异步任务 {ACTION.__name__} 报错了") + error(traceback.format_exc()) + + future.add_done_callback(_handle_future_exception) except Exception as e: self.lab_logger().error(f"创建异步任务失败: {traceback.format_exc()}") raise e @@ -600,9 +684,12 @@ class BaseROS2DeviceNode(Node, Generic[T]): future = self._executor.submit(ACTION, **action_kwargs) def _handle_future_exception(fut): + nonlocal execution_error, execution_success, action_return_value try: - fut.result() + action_return_value = fut.result() + execution_success = True except Exception as e: + execution_error = traceback.format_exc() error(f"同步任务 {ACTION.__name__} 报错了") error(traceback.format_exc()) @@ -659,16 +746,23 @@ class BaseROS2DeviceNode(Node, Generic[T]): self.lab_logger().info(f"更新资源状态: {k}") r = ResourceUpdate.Request() # 仅当action_kwargs[k]不为None时尝试转换 - akv = action_kwargs[k] + akv = action_kwargs[k] # 已经是完成转换的物料了,只需要转换成ros msg Resource了 apv = action_paramtypes[k] final_type = get_type_class(apv) if final_type is None: continue try: - r.resources = [ - convert_to_ros_msg(Resource, self.resource_tracker.root_resource(rs)) - for rs in convert_resources_from_type(akv, final_type) # type: ignore # FIXME # 考虑反查到最大的 - ] + seen = set() + unique_resources = [] + for rs in akv: + res = self.resource_tracker.parent_resource(rs) # 获取 resource 对象 + if id(res) not in seen: + seen.add(id(res)) + converted_list = convert_resources_from_type([res], final_type) + unique_resources.extend([convert_to_ros_msg(Resource, converted) for converted in converted_list]) + + r.resources = unique_resources + response = await self._resource_clients["resource_update"].call_async(r) self.lab_logger().debug(f"资源更新结果: {response}") except Exception as e: @@ -693,6 +787,8 @@ class BaseROS2DeviceNode(Node, Generic[T]): for attr_name in result_msg_types.keys(): if attr_name in ["success", "reached_goal"]: setattr(result_msg, attr_name, True) + elif attr_name == "return_info": + setattr(result_msg, attr_name, serialize_result_info(execution_error, execution_success, action_return_value)) self.lab_logger().info(f"动作 {action_name} 完成并返回结果") return result_msg @@ -738,8 +834,8 @@ class ROS2DeviceNode: return cls._loop @classmethod - def run_async_func(cls, func, **kwargs): - return run_async_func(func, loop=cls._loop, **kwargs) + def run_async_func(cls, func, trace_error=True, **kwargs): + return run_async_func(func, loop=cls._loop, trace_error=trace_error, **kwargs) @property def driver_instance(self): @@ -791,7 +887,11 @@ class ROS2DeviceNode: self.resource_tracker = DeviceNodeResourceTracker() # use_pylabrobot_creator 使用 cls的包路径检测 - use_pylabrobot_creator = driver_class.__module__.startswith("pylabrobot") or driver_class.__name__ == "LiquidHandlerAbstract" + use_pylabrobot_creator = ( + driver_class.__module__.startswith("pylabrobot") + or driver_class.__name__ == "LiquidHandlerAbstract" + or driver_class.__name__ == "LiquidHandlerBiomek" + ) # TODO: 要在创建之前预先请求服务器是否有当前id的物料,放到resource_tracker中,让pylabrobot进行创建 # 创建设备类实例 @@ -830,6 +930,12 @@ class ROS2DeviceNode: ) self._ros_node: BaseROS2DeviceNode self._ros_node.lab_logger().info(f"初始化完成 {self._ros_node.uuid} {self.driver_is_ros}") + self.driver_instance._ros_node = self._ros_node # type: ignore + if hasattr(self.driver_instance, "post_init"): + try: + self.driver_instance.post_init(self._ros_node) # type: ignore + except Exception as e: + self._ros_node.lab_logger().error(f"设备后初始化失败: {e}") def _start_loop(self): def run_event_loop(): diff --git a/unilabos/ros/nodes/presets/host_node.py b/unilabos/ros/nodes/presets/host_node.py index 732e8bbd..712e9b3a 100644 --- a/unilabos/ros/nodes/presets/host_node.py +++ b/unilabos/ros/nodes/presets/host_node.py @@ -151,7 +151,7 @@ class HostNode(BaseROS2DeviceNode): mqtt_client.publish_registry(device_info["id"], device_info) for resource_info in lab_registry.obtain_registry_resource_info(): mqtt_client.publish_registry(resource_info["id"], resource_info) - + time.sleep(1) # 等待MQTT连接稳定 # 首次发现网络中的设备 self._discover_devices() @@ -203,8 +203,12 @@ class HostNode(BaseROS2DeviceNode): try: for bridge in self.bridges: if hasattr(bridge, "resource_add"): - self.lab_logger().info("[Host Node-Resource] Adding resources to bridge.") - resource_add_res = bridge.resource_add(add_schema(resource_with_parent_name)) + resource_start_time = time.time() + resource_add_res = bridge.resource_add(add_schema(resource_with_parent_name), True) + resource_end_time = time.time() + self.lab_logger().info( + f"[Host Node-Resource] 物料上传 {round(resource_end_time - resource_start_time, 5) * 1000} ms" + ) except Exception as ex: self.lab_logger().error("[Host Node-Resource] 添加物料出错!") self.lab_logger().error(traceback.format_exc()) @@ -338,6 +342,7 @@ class HostNode(BaseROS2DeviceNode): bind_locations: list[Point], other_calling_params: list[str], ): + responses = [] for resource, device_id, bind_parent_id, bind_location, other_calling_param in zip( resources, device_ids, bind_parent_ids, bind_locations, other_calling_params ): @@ -363,8 +368,8 @@ class HostNode(BaseROS2DeviceNode): ensure_ascii=False, ) response = sclient.call(request) - pass - pass + responses.append(response) + return responses def create_resource( self, @@ -376,7 +381,7 @@ class HostNode(BaseROS2DeviceNode): liquid_input_slot: list[int], liquid_type: list[str], liquid_volume: list[int], - slot_on_deck: int, + slot_on_deck: str, ): init_new_res = initialize_resource( { @@ -610,13 +615,21 @@ class HostNode(BaseROS2DeviceNode): """获取结果回调""" result_msg = future.result().result result_data = convert_from_ros_msg(result_msg) + status = "success" + try: + ret = json.loads(result_data.get("return_info", "{}")) # 确保返回信息是有效的JSON + suc = ret.get("suc", False) + if not suc: + status = "failed" + except json.JSONDecodeError: + status = "failed" self.lab_logger().info(f"[Host Node] Result for {action_id} ({uuid_str}): success") self.lab_logger().debug(f"[Host Node] Result data: {result_data}") if uuid_str: for bridge in self.bridges: if hasattr(bridge, "publish_job_status"): - bridge.publish_job_status(result_data, uuid_str, "success") + bridge.publish_job_status(result_data, uuid_str, status, result_data.get("return_info", "{}")) def cancel_goal(self, goal_uuid: str) -> None: """取消目标""" @@ -856,7 +869,6 @@ class HostNode(BaseROS2DeviceNode): 测试网络延迟的action实现 通过5次ping-pong机制校对时间误差并计算实际延迟 """ - import time import uuid as uuid_module self.lab_logger().info("=" * 60) diff --git a/unilabos/ros/nodes/presets/protocol_node.py b/unilabos/ros/nodes/presets/protocol_node.py index c4dfd083..23e08d0d 100644 --- a/unilabos/ros/nodes/presets/protocol_node.py +++ b/unilabos/ros/nodes/presets/protocol_node.py @@ -1,6 +1,7 @@ import time import asyncio import traceback +from types import MethodType from typing import Union import rclpy @@ -87,7 +88,10 @@ class ROS2ProtocolNode(BaseROS2DeviceNode): # 如果硬件接口是字符串,通过通信设备提供 if isinstance(name, str) and name in self.sub_devices: + communicate_device = self.sub_devices[name] + communicate_hardware_info = communicate_device.ros_node_instance._hardware_interface self._setup_hardware_proxy(d, self.sub_devices[name], read, write) + self.lab_logger().info(f"\n通信代理:为子设备{device_id}\n 添加了{read}方法(来源:{name} {communicate_hardware_info['write']}) \n 添加了{write}方法(来源:{name} {communicate_hardware_info['read']})") def _setup_protocol_names(self, protocol_type): # 处理协议类型 @@ -241,20 +245,23 @@ class ROS2ProtocolNode(BaseROS2DeviceNode): def _setup_hardware_proxy(self, device: ROS2DeviceNode, communication_device: ROS2DeviceNode, read_method, write_method): """为设备设置硬件接口代理""" - extra_info = [getattr(device.driver_instance, info) for info in communication_device.ros_node_instance._hardware_interface.get("extra_info", [])] - write_func = getattr(communication_device.ros_node_instance, communication_device.ros_node_instance._hardware_interface["write"]) - read_func = getattr(communication_device.ros_node_instance, communication_device.ros_node_instance._hardware_interface["read"]) + # extra_info = [getattr(device.driver_instance, info) for info in communication_device.ros_node_instance._hardware_interface.get("extra_info", [])] + write_func = getattr(communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["write"]) + read_func = getattr(communication_device.driver_instance, communication_device.ros_node_instance._hardware_interface["read"]) - def _read(): - return read_func(*extra_info) + def _read(*args, **kwargs): + return read_func(*args, **kwargs) - def _write(command): - return write_func(*extra_info, command) + def _write(*args, **kwargs): + return write_func(*args, **kwargs) if read_method: - setattr(device.driver_instance, read_method, _read) + bound_read = MethodType(_read, device.driver_instance) + setattr(device.driver_instance, read_method, bound_read) + if write_method: - setattr(device.driver_instance, write_method, _write) + bound_write = MethodType(_write, device.driver_instance) + setattr(device.driver_instance, write_method, bound_write) async def _update_resources(self, goal, protocol_kwargs): diff --git a/unilabos/ros/nodes/presets/resource_mesh_manager.py b/unilabos/ros/nodes/presets/resource_mesh_manager.py index c1495818..dadb49ab 100644 --- a/unilabos/ros/nodes/presets/resource_mesh_manager.py +++ b/unilabos/ros/nodes/presets/resource_mesh_manager.py @@ -91,8 +91,11 @@ class ResourceMeshManager(BaseROS2DeviceNode): self.__collision_object_publisher = self.create_publisher( CollisionObject, "/collision_object", 10 ) + self.__planning_scene_publisher = self.create_publisher( + PlanningScene, "/planning_scene", 10 + ) self.__attached_collision_object_publisher = self.create_publisher( - AttachedCollisionObject, "/attached_collision_object", 10 + AttachedCollisionObject, "/attached_collision_object", 0 ) # 创建一个Action Server用于修改resource_tf_dict @@ -121,7 +124,8 @@ class ResourceMeshManager(BaseROS2DeviceNode): """检查move_group节点是否已初始化完成""" # 获取当前可用的节点列表 - + if len(self.resource_tf_dict) == 0: + return tf_ready = self.tf_buffer.can_transform("world", next(iter(self.resource_tf_dict.keys())), rclpy.time.Time(),rclpy.duration.Duration(seconds=2)) # if tf_ready: @@ -129,8 +133,7 @@ class ResourceMeshManager(BaseROS2DeviceNode): self.move_group_ready = True self.publish_resource_tf() self.add_resource_collision_meshes(self.resource_tf_dict) - - # time.sleep(1) + def add_resource_mesh_callback(self, goal_handle : ServerGoalHandle): tf_update_msg = goal_handle.request @@ -147,7 +150,7 @@ class ResourceMeshManager(BaseROS2DeviceNode): """刷新资源配置""" registry = lab_registry - resource_config = json.loads(resource_config_str) + resource_config = json.loads(resource_config_str.replace("'",'"')) if resource_config['id'] in self.resource_config_dict: self.get_logger().info(f'资源 {resource_config["id"]} 已存在') @@ -158,7 +161,7 @@ class ResourceMeshManager(BaseROS2DeviceNode): self.resource_model[resource_config['id']] = { 'mesh': f"{str(self.mesh_path)}/device_mesh/resources/{model_config['mesh']}", 'mesh_tf': model_config['mesh_tf']} - if model_config['children_mesh'] is not None: + if 'children_mesh' in model_config.keys(): self.resource_model[f"{resource_config['id']}_"] = { 'mesh': f"{str(self.mesh_path)}/device_mesh/resources/{model_config['children_mesh']}", 'mesh_tf': model_config['children_mesh_tf'] @@ -187,7 +190,8 @@ class ResourceMeshManager(BaseROS2DeviceNode): pass elif parent is not None and resource_id in self.resource_model: - parent_link = f"{self.resource_config_dict[parent]['parent']}_{parent}_device_link".replace("None","") + # parent_link = f"{self.resource_config_dict[parent]['parent']}_{parent}_device_link".replace("None_","") + parent_link = f"{parent}_device_link".replace("None_","") else: @@ -297,7 +301,7 @@ class ResourceMeshManager(BaseROS2DeviceNode): "world", resource_id, rclpy.time.Time(seconds=0), - rclpy.duration.Duration(seconds=5) + # rclpy.duration.Duration(seconds=5) ) # 提取当前位姿信息 @@ -344,9 +348,7 @@ class ResourceMeshManager(BaseROS2DeviceNode): self.resource_pose_publisher.publish(changed_poses_msg) self.zero_count += 1 - - - + def _is_pose_equal(self, pose1, pose2, tolerance=1e-7): """ 比较两个位姿是否相等(考虑浮点数精度) @@ -386,14 +388,24 @@ class ResourceMeshManager(BaseROS2DeviceNode): self.__planning_scene = self._get_planning_scene_service.call( GetPlanningScene.Request() ).scene - - for resource_id, target_parent in cmd_dict.items(): + self.__planning_scene.is_diff = True + planning_scene = PlanningScene() + planning_scene.is_diff = True + planning_scene.robot_state.is_diff = True + # time_start = self.get_clock().now() + time_start = rclpy.time.Time(seconds=0) + count = 0 + for resource_id, target_parent in cmd_dict.items(): + parent_id = target_parent + if target_parent == '__trash': + parent_id = 'world' # 获取从resource_id到target_parent的转换 transform = self.tf_buffer.lookup_transform( - target_parent, + parent_id, resource_id, - rclpy.time.Time(seconds=0) + time_start, + timeout=rclpy.duration.Duration(seconds=10) ) # 提取转换中的位置和旋转信息 @@ -411,26 +423,62 @@ class ResourceMeshManager(BaseROS2DeviceNode): } self.resource_tf_dict[resource_id] = { - "parent": target_parent, + "parent": parent_id, "position": position, "rotation": rotation } + # self.attach_collision_object(id=resource_id,link_name=target_parent) - collision_object = AttachedCollisionObject( + # time.sleep(0.02) + operation_attach = CollisionObject.ADD + operation_world = CollisionObject.REMOVE + if target_parent == 'world': + operation_attach = CollisionObject.REMOVE + operation_world = CollisionObject.ADD + elif target_parent == '__trash': + operation_attach = CollisionObject.REMOVE + + world_object = CollisionObject( id=resource_id, - link_name=target_parent, + operation=operation_world + ) + if target_parent != '__trash': + planning_scene.world.collision_objects.append(world_object) + + + collision_object = AttachedCollisionObject( object=CollisionObject( id=resource_id, - operation=CollisionObject.ADD + operation=operation_attach ) ) - - self.__planning_scene.robot_state.attached_collision_objects.append(collision_object) + if target_parent != 'world' and target_parent != '__trash': + collision_object.link_name = target_parent + planning_scene.robot_state.attached_collision_objects.append(collision_object) + + count += 1 + + if count > 30: + req = ApplyPlanningScene.Request() + req.scene = planning_scene + self.publish_resource_tf() + self._apply_planning_scene_service.call(req) + self.__planning_scene_publisher.publish(planning_scene) + count = 0 + + planning_scene = PlanningScene() + planning_scene.is_diff = True + planning_scene.robot_state.is_diff = True + req = ApplyPlanningScene.Request() - req.scene = self.__planning_scene - self._apply_planning_scene_service.call_async(req) + req.scene = planning_scene self.publish_resource_tf() + self._apply_planning_scene_service.call(req) + self.__planning_scene_publisher.publish(planning_scene) + + # self.__collision_object_publisher.publish(CollisionObject()) + except Exception as e: self.get_logger().error(f"更新资源TF字典失败: {e}") @@ -440,18 +488,22 @@ class ResourceMeshManager(BaseROS2DeviceNode): return SendCmd.Result(success=True) + def add_resource_collision_meshes(self,resource_tf_dict:dict): """ 遍历资源配置字典,为每个在resource_model中有对应模型的资源添加碰撞网格 该方法检查每个资源ID是否在self.resource_model中有对应的3D模型文件路径, - 如果有,则调用add_collision_mesh方法将其添加到碰撞环境中。 + """ self.get_logger().info('开始添加资源碰撞网格') self.__planning_scene = self._get_planning_scene_service.call( GetPlanningScene.Request() ).scene + planning_scene = PlanningScene() + planning_scene.is_diff = True + count = 0 for resource_id, tf_info in resource_tf_dict.items(): if resource_id in self.resource_model: @@ -479,7 +531,8 @@ class ResourceMeshManager(BaseROS2DeviceNode): quat_xyzw=q, frame_id=resource_id ) - self.__planning_scene.world.collision_objects.append(collision_object) + count += 1 + planning_scene.world.collision_objects.append(collision_object) elif f"{tf_info['parent']}_" in self.resource_model: # 获取资源的父级框架ID id_ = f"{tf_info['parent']}_" @@ -507,14 +560,26 @@ class ResourceMeshManager(BaseROS2DeviceNode): quat_xyzw=q, frame_id=resource_id ) + count += 1 + planning_scene.world.collision_objects.append(collision_object) - self.__planning_scene.world.collision_objects.append(collision_object) + if count > 30: + req = ApplyPlanningScene.Request() + req.scene = planning_scene + self.publish_resource_tf() + self._apply_planning_scene_service.call(req) + self.__planning_scene_publisher.publish(planning_scene) + count = 0 + + planning_scene = PlanningScene() + planning_scene.is_diff = True req = ApplyPlanningScene.Request() - req.scene = self.__planning_scene - self._apply_planning_scene_service.call_async(req) - - + req.scene = planning_scene + self.publish_resource_tf() + self._apply_planning_scene_service.call(req) + self.__planning_scene_publisher.publish(planning_scene) + self.get_logger().info('资源碰撞网格添加完成') @@ -959,9 +1024,6 @@ class ResourceMeshManager(BaseROS2DeviceNode): Attach collision object to the robot. """ - if link_name is None: - link_name = self.__end_effector_name - msg = AttachedCollisionObject( object=CollisionObject(id=id, operation=CollisionObject.ADD) ) diff --git a/unilabos/ros/nodes/resource_tracker.py b/unilabos/ros/nodes/resource_tracker.py index 04b54373..ff1a7797 100644 --- a/unilabos/ros/nodes/resource_tracker.py +++ b/unilabos/ros/nodes/resource_tracker.py @@ -1,3 +1,5 @@ +from typing import List, Tuple, Any + from unilabos.utils.log import logger @@ -5,12 +7,12 @@ class DeviceNodeResourceTracker(object): def __init__(self): self.resources = [] - self.root_resource2resource = {} + self.resource2parent_resource = {} pass - def root_resource(self, resource): - if id(resource) in self.root_resource2resource: - return self.root_resource2resource[id(resource)] + def parent_resource(self, resource): + if id(resource) in self.resource2parent_resource: + return self.resource2parent_resource[id(resource)] else: return resource @@ -44,20 +46,21 @@ class DeviceNodeResourceTracker(object): self.loop_find_resource(r, resource_cls_type, identifier_key, getattr(query_resource, identifier_key)) ) assert len(res_list) == 1, f"{query_resource} 找到多个资源,请检查资源是否唯一: {res_list}" - self.root_resource2resource[id(query_resource)] = res_list[0] + self.resource2parent_resource[id(query_resource)] = res_list[0][0] + self.resource2parent_resource[id(res_list[0][1])] = res_list[0][0] # 后续加入其他对比方式 - return res_list[0] + return res_list[0][1] - def loop_find_resource(self, resource, target_resource_cls_type, identifier_key, compare_value): + def loop_find_resource(self, resource, target_resource_cls_type, identifier_key, compare_value, parent_res=None) -> List[Tuple[Any, Any]]: res_list = [] # print(resource, target_resource_cls_type, identifier_key, compare_value) children = getattr(resource, "children", []) for child in children: - res_list.extend(self.loop_find_resource(child, target_resource_cls_type, identifier_key, compare_value)) + res_list.extend(self.loop_find_resource(child, target_resource_cls_type, identifier_key, compare_value, resource)) if target_resource_cls_type == type(resource) or target_resource_cls_type == dict: if hasattr(resource, identifier_key): if getattr(resource, identifier_key) == compare_value: - res_list.append(resource) + res_list.append((parent_res, resource)) return res_list def filter_find_list(self, res_list, compare_std_dict): diff --git a/unilabos/ros/utils/driver_creator.py b/unilabos/ros/utils/driver_creator.py index 1218725e..9f223f9f 100644 --- a/unilabos/ros/utils/driver_creator.py +++ b/unilabos/ros/utils/driver_creator.py @@ -105,40 +105,41 @@ class PyLabRobotCreator(DeviceClassCreator[T]): return nested_dict_to_list(resource), Resource return resource, source_type - def _process_resource_references(self, data: Any, to_dict=False) -> Any: + def _process_resource_references(self, data: Any, to_dict=False, states=None, prefix_path="") -> Any: """ 递归处理资源引用,替换_resource_child_name对应的资源 Args: data: 需要处理的数据,可能是字典、列表或其他类型 - to_dict: 转换成对应的实例,还是转换成对应的字典 + to_dict: 是否返回字典形式的资源 + states: 用于保存所有资源状态 + prefix_path: 当前递归路径 Returns: 处理后的数据 """ from pylabrobot.resources import Deck, Resource + if states is None: + states = {} if isinstance(data, dict): - # 检查是否包含资源引用 if "_resource_child_name" in data: child_name = data["_resource_child_name"] if child_name in self.children: - # 找到了对应的资源 resource = self.children[child_name] - - # 检查是否需要转换资源类型 if "_resource_type" in data: type_path = data["_resource_type"] try: - # 尝试导入指定的类型 target_type = import_manager.get_class(type_path) contain_model = not issubclass(target_type, Deck) resource, target_type = self._process_resource_mapping(resource, target_type) - # 在截图中格式,是deserialize,所以这里要转成plr resource可deserialize的字典 - # 这样后面执行deserialize的时候能够正确反序列化对应的物料 resource_instance: Resource = resource_ulab_to_plr(resource, contain_model) + + # 使用 prefix_path 作为 key 存储资源状态 if to_dict: - return resource_instance.serialize() + serialized = resource_instance.serialize() + states[prefix_path] = resource_instance.serialize_all_state() + return serialized else: self.resource_tracker.add_resource(resource_instance) return resource_instance @@ -151,18 +152,21 @@ class PyLabRobotCreator(DeviceClassCreator[T]): else: logger.warning(f"找不到资源引用 '{child_name}',保持原值不变") - # 递归处理字典的每个值 + # 递归处理每个键值 result = {} for key, value in data.items(): - result[key] = self._process_resource_references(value, to_dict) + new_prefix = f"{prefix_path}.{key}" if prefix_path else key + result[key] = self._process_resource_references(value, to_dict, states, new_prefix) return result - # 处理列表类型 elif isinstance(data, list): - return [self._process_resource_references(item, to_dict) for item in data] + return [ + self._process_resource_references(item, to_dict, states, f"{prefix_path}[{i}]") + for i, item in enumerate(data) + ] - # 其他类型直接返回 - return data + else: + return data def create_instance(self, data: Dict[str, Any]) -> Optional[T]: """ @@ -187,10 +191,18 @@ class PyLabRobotCreator(DeviceClassCreator[T]): logger.debug(f"自动补充 _resource_type: {data[param_name]['_resource_type']}") # 首先处理资源引用 - processed_data = self._process_resource_references(data, to_dict=True) + states = {} + processed_data = self._process_resource_references(data, to_dict=True, states=states) try: self.device_instance = deserialize_method(**processed_data) + all_states = self.device_instance.serialize_all_state() + for k, v in states.items(): + logger.debug(f"PyLabRobot反序列化设置状态:{k}") + for kk, vv in all_states.items(): + if kk not in v: + v[kk] = vv + self.device_instance.deck.load_all_state(v) self.resource_tracker.add_resource(self.device_instance) self.post_create() return self.device_instance # type: ignore @@ -225,6 +237,10 @@ class PyLabRobotCreator(DeviceClassCreator[T]): if hasattr(self.device_instance, "setup") and asyncio.iscoroutinefunction(getattr(self.device_instance, "setup")): from unilabos.ros.nodes.base_device_node import ROS2DeviceNode def done_cb(*args): + from pylabrobot.resources import set_volume_tracking + # from pylabrobot.resources import set_tip_tracking + set_volume_tracking(enabled=True) + # set_tip_tracking(enabled=True) # 序列化tip_spot has为False logger.debug(f"PyLabRobot设备实例 {self.device_instance} 设置完成") from unilabos.config.config import BasicConfig if BasicConfig.vis_2d_enable: diff --git a/unilabos/utils/async_util.py b/unilabos/utils/async_util.py index ce97f5a1..0f50a730 100644 --- a/unilabos/utils/async_util.py +++ b/unilabos/utils/async_util.py @@ -5,7 +5,7 @@ from asyncio import get_event_loop from unilabos.utils.log import error -def run_async_func(func, *, loop=None, **kwargs): +def run_async_func(func, *, loop=None, trace_error=True, **kwargs): if loop is None: loop = get_event_loop() @@ -17,5 +17,6 @@ def run_async_func(func, *, loop=None, **kwargs): error(traceback.format_exc()) future = asyncio.run_coroutine_threadsafe(func(**kwargs), loop) - future.add_done_callback(_handle_future_exception) - return future \ No newline at end of file + if trace_error: + future.add_done_callback(_handle_future_exception) + return future diff --git a/unilabos/utils/type_check.py b/unilabos/utils/type_check.py index 7366652b..578eb93d 100644 --- a/unilabos/utils/type_check.py +++ b/unilabos/utils/type_check.py @@ -1,4 +1,4 @@ -import collections +import collections.abc import json from typing import get_origin, get_args @@ -21,3 +21,46 @@ class TypeEncoder(json.JSONEncoder): return str(obj)[8:-2] return super().default(obj) + +class ResultInfoEncoder(json.JSONEncoder): + """专门用于处理任务执行结果信息的JSON编码器""" + + def default(self, obj): + # 优先处理类型对象 + if isinstance(obj, type): + return str(obj)[8:-2] + + # 对于无法序列化的对象,统一转换为字符串 + try: + # 尝试调用 __dict__ 或者其他序列化方法 + if hasattr(obj, "__dict__"): + return obj.__dict__ + elif hasattr(obj, "_asdict"): # namedtuple + return obj._asdict() + elif hasattr(obj, "to_dict"): + return obj.to_dict() + elif hasattr(obj, "dict"): + return obj.dict() + else: + # 如果都不行,转换为字符串 + return str(obj) + except Exception: + # 如果转换失败,直接返回字符串表示 + return str(obj) + + +def serialize_result_info(error: str, suc: bool, return_value=None) -> str: + """ + 序列化任务执行结果信息 + + Args: + error: 错误信息字符串 + suc: 是否成功的布尔值 + return_value: 返回值,可以是任何类型 + + Returns: + JSON字符串格式的结果信息 + """ + result_info = {"error": error, "suc": suc, "return_value": return_value} + + return json.dumps(result_info, ensure_ascii=False, cls=ResultInfoEncoder) diff --git a/unilabos_msgs/CMakeLists.txt b/unilabos_msgs/CMakeLists.txt index 0cd6a1e3..b818cf00 100644 --- a/unilabos_msgs/CMakeLists.txt +++ b/unilabos_msgs/CMakeLists.txt @@ -29,6 +29,25 @@ set(action_files "action/HeatChillStart.action" "action/HeatChillStop.action" + "action/ProtocolCleanVessel.action" + "action/ProtocolDissolve.action" + "action/ProtocolFilterThrough.action" + "action/ProtocolRunColumn.action" + "action/ProtocolWait.action" + "action/ProtocolWashSolid.action" + "action/ProtocolFilter.action" + + "action/ProtocolCentrifuge.action" + "action/ProtocolCrystallize.action" + "action/ProtocolDry.action" + "action/ProtocolPurge.action" + "action/ProtocolStartPurge.action" + "action/ProtocolStartStir.action" + "action/ProtocolStopPurge.action" + "action/ProtocolStopStir.action" + "action/ProtocolTransfer.action" + + "action/LiquidHandlerProtocolCreation.action" "action/LiquidHandlerAspirate.action" "action/LiquidHandlerDiscardTips.action" "action/LiquidHandlerDispense.action" @@ -44,6 +63,11 @@ set(action_files "action/LiquidHandlerStamp.action" "action/LiquidHandlerTransfer.action" + "action/LiquidHandlerTransferBiomek.action" + "action/LiquidHandlerIncubateBiomek.action" + "action/LiquidHandlerMoveBiomek.action" + "action/LiquidHandlerOscillateBiomek.action" + "action/LiquidHandlerAdd.action" "action/LiquidHandlerMix.action" "action/LiquidHandlerMoveTo.action" diff --git a/unilabos_msgs/action/AGVTransfer.action b/unilabos_msgs/action/AGVTransfer.action index 06c8c8ef..0c301f47 100644 --- a/unilabos_msgs/action/AGVTransfer.action +++ b/unilabos_msgs/action/AGVTransfer.action @@ -4,6 +4,7 @@ string from_repo_position Resource to_repo string to_repo_position --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/Clean.action b/unilabos_msgs/action/Clean.action index 093a0dad..8fb9be1e 100644 --- a/unilabos_msgs/action/Clean.action +++ b/unilabos_msgs/action/Clean.action @@ -5,6 +5,7 @@ float64 volume # Optional. Volume of solvent to clean vessel with. float64 temp # Optional. Temperature to heat vessel to while cleaning. int32 repeats # Optional. Number of cleaning cycles to perform. --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/EmptyIn.action b/unilabos_msgs/action/EmptyIn.action index c44b70c0..e7f59d07 100644 --- a/unilabos_msgs/action/EmptyIn.action +++ b/unilabos_msgs/action/EmptyIn.action @@ -1,4 +1,4 @@ --- - +string return_info --- \ No newline at end of file diff --git a/unilabos_msgs/action/EvacuateAndRefill.action b/unilabos_msgs/action/EvacuateAndRefill.action index ed138dd5..22ffc659 100644 --- a/unilabos_msgs/action/EvacuateAndRefill.action +++ b/unilabos_msgs/action/EvacuateAndRefill.action @@ -3,6 +3,7 @@ string vessel string gas int32 repeats --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/Evaporate.action b/unilabos_msgs/action/Evaporate.action index 9638a9a8..45887f27 100644 --- a/unilabos_msgs/action/Evaporate.action +++ b/unilabos_msgs/action/Evaporate.action @@ -5,6 +5,7 @@ float64 temp float64 time float64 stir_speed --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/FloatSingleInput.action b/unilabos_msgs/action/FloatSingleInput.action index 2542d31f..52feed71 100644 --- a/unilabos_msgs/action/FloatSingleInput.action +++ b/unilabos_msgs/action/FloatSingleInput.action @@ -1,4 +1,5 @@ float64 float_in --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/HeatChill.action b/unilabos_msgs/action/HeatChill.action index 1c7f8411..87ebf526 100644 --- a/unilabos_msgs/action/HeatChill.action +++ b/unilabos_msgs/action/HeatChill.action @@ -6,6 +6,7 @@ bool stir float64 stir_speed string purpose --- +string return_info bool success --- string status \ No newline at end of file diff --git a/unilabos_msgs/action/HeatChillStart.action b/unilabos_msgs/action/HeatChillStart.action index f9286937..565bad1e 100644 --- a/unilabos_msgs/action/HeatChillStart.action +++ b/unilabos_msgs/action/HeatChillStart.action @@ -3,6 +3,7 @@ string vessel float64 temp string purpose --- +string return_info bool success --- string status \ No newline at end of file diff --git a/unilabos_msgs/action/HeatChillStop.action b/unilabos_msgs/action/HeatChillStop.action index 88fc0293..280ca154 100644 --- a/unilabos_msgs/action/HeatChillStop.action +++ b/unilabos_msgs/action/HeatChillStop.action @@ -1,6 +1,7 @@ # Organic string vessel --- +string return_info bool success --- string status \ No newline at end of file diff --git a/unilabos_msgs/action/IntSingleInput.action b/unilabos_msgs/action/IntSingleInput.action index 0f8b7aaa..23aeec6f 100644 --- a/unilabos_msgs/action/IntSingleInput.action +++ b/unilabos_msgs/action/IntSingleInput.action @@ -1,4 +1,5 @@ int32 int_input --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerAdd.action b/unilabos_msgs/action/LiquidHandlerAdd.action index 0611b276..a17a61c4 100644 --- a/unilabos_msgs/action/LiquidHandlerAdd.action +++ b/unilabos_msgs/action/LiquidHandlerAdd.action @@ -15,6 +15,7 @@ int32 mix_rate float64 mix_liquid_height string[] none_keys --- +string return_info bool success --- # 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerAspirate.action b/unilabos_msgs/action/LiquidHandlerAspirate.action index 9ba17068..b8558617 100644 --- a/unilabos_msgs/action/LiquidHandlerAspirate.action +++ b/unilabos_msgs/action/LiquidHandlerAspirate.action @@ -7,5 +7,6 @@ float64[] liquid_height float64[] blow_out_air_volume string spread --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerDiscardTips.action b/unilabos_msgs/action/LiquidHandlerDiscardTips.action index a7c6f8ae..c2d290d0 100644 --- a/unilabos_msgs/action/LiquidHandlerDiscardTips.action +++ b/unilabos_msgs/action/LiquidHandlerDiscardTips.action @@ -3,6 +3,7 @@ int32[] use_channels --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerDispense.action b/unilabos_msgs/action/LiquidHandlerDispense.action index 73c4d0f4..e06e3753 100644 --- a/unilabos_msgs/action/LiquidHandlerDispense.action +++ b/unilabos_msgs/action/LiquidHandlerDispense.action @@ -8,6 +8,7 @@ int32[] blow_out_air_volume string spread --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerDropTips.action b/unilabos_msgs/action/LiquidHandlerDropTips.action index 76a5625b..46f7e493 100644 --- a/unilabos_msgs/action/LiquidHandlerDropTips.action +++ b/unilabos_msgs/action/LiquidHandlerDropTips.action @@ -6,6 +6,7 @@ geometry_msgs/Point[] offsets bool allow_nonzero_volume --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerDropTips96.action b/unilabos_msgs/action/LiquidHandlerDropTips96.action index b4b7dfcf..a32891f5 100644 --- a/unilabos_msgs/action/LiquidHandlerDropTips96.action +++ b/unilabos_msgs/action/LiquidHandlerDropTips96.action @@ -5,6 +5,7 @@ geometry_msgs/Point offset bool allow_nonzero_volume --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerIncubateBiomek.action b/unilabos_msgs/action/LiquidHandlerIncubateBiomek.action new file mode 100644 index 00000000..da9d7035 --- /dev/null +++ b/unilabos_msgs/action/LiquidHandlerIncubateBiomek.action @@ -0,0 +1,6 @@ +int32 time + +--- +string return_info +bool success +--- diff --git a/unilabos_msgs/action/LiquidHandlerMix.action b/unilabos_msgs/action/LiquidHandlerMix.action index 81d1b71c..99abe939 100644 --- a/unilabos_msgs/action/LiquidHandlerMix.action +++ b/unilabos_msgs/action/LiquidHandlerMix.action @@ -6,6 +6,7 @@ geometry_msgs/Point[] offsets float64 mix_rate string[] none_keys --- +string return_info bool success --- # 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerMoveBiomek.action b/unilabos_msgs/action/LiquidHandlerMoveBiomek.action new file mode 100644 index 00000000..9c75206f --- /dev/null +++ b/unilabos_msgs/action/LiquidHandlerMoveBiomek.action @@ -0,0 +1,7 @@ +string sources +string targets + +--- +string return_info +bool success +--- diff --git a/unilabos_msgs/action/LiquidHandlerMoveLid.action b/unilabos_msgs/action/LiquidHandlerMoveLid.action index 41a51e58..0c5d7477 100644 --- a/unilabos_msgs/action/LiquidHandlerMoveLid.action +++ b/unilabos_msgs/action/LiquidHandlerMoveLid.action @@ -12,6 +12,7 @@ string put_direction float64 pickup_distance_from_top --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerMovePlate.action b/unilabos_msgs/action/LiquidHandlerMovePlate.action index ea7503a1..6ad283db 100644 --- a/unilabos_msgs/action/LiquidHandlerMovePlate.action +++ b/unilabos_msgs/action/LiquidHandlerMovePlate.action @@ -13,6 +13,7 @@ string put_direction float64 pickup_distance_from_top --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerMoveResource.action b/unilabos_msgs/action/LiquidHandlerMoveResource.action index aaffa968..776d6cee 100644 --- a/unilabos_msgs/action/LiquidHandlerMoveResource.action +++ b/unilabos_msgs/action/LiquidHandlerMoveResource.action @@ -12,6 +12,7 @@ string get_direction string put_direction --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerMoveTo.action b/unilabos_msgs/action/LiquidHandlerMoveTo.action index 740d0fc6..0a9e1fe2 100644 --- a/unilabos_msgs/action/LiquidHandlerMoveTo.action +++ b/unilabos_msgs/action/LiquidHandlerMoveTo.action @@ -2,6 +2,7 @@ Resource well float64 dis_to_top int32 channel --- +string return_info bool success --- # 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerOscillateBiomek.action b/unilabos_msgs/action/LiquidHandlerOscillateBiomek.action new file mode 100644 index 00000000..b07eb76d --- /dev/null +++ b/unilabos_msgs/action/LiquidHandlerOscillateBiomek.action @@ -0,0 +1,7 @@ +int32 rpm +int32 time + +--- +string return_info +bool success +--- diff --git a/unilabos_msgs/action/LiquidHandlerPickUpTips.action b/unilabos_msgs/action/LiquidHandlerPickUpTips.action index 096bf17e..89287d91 100644 --- a/unilabos_msgs/action/LiquidHandlerPickUpTips.action +++ b/unilabos_msgs/action/LiquidHandlerPickUpTips.action @@ -5,6 +5,7 @@ int32[] use_channels geometry_msgs/Point[] offsets --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerPickUpTips96.action b/unilabos_msgs/action/LiquidHandlerPickUpTips96.action index 761349a1..63a60b4a 100644 --- a/unilabos_msgs/action/LiquidHandlerPickUpTips96.action +++ b/unilabos_msgs/action/LiquidHandlerPickUpTips96.action @@ -4,6 +4,7 @@ Resource tip_rack geometry_msgs/Point offset --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerProtocolCreation.action b/unilabos_msgs/action/LiquidHandlerProtocolCreation.action new file mode 100644 index 00000000..c63525a5 --- /dev/null +++ b/unilabos_msgs/action/LiquidHandlerProtocolCreation.action @@ -0,0 +1,10 @@ +string protocol_name +string protocol_description +string protocol_version +string protocol_author +string protocol_date +string protocol_type +string[] none_keys +--- +string return_info +--- diff --git a/unilabos_msgs/action/LiquidHandlerRemove.action b/unilabos_msgs/action/LiquidHandlerRemove.action index e6b43c53..2b2656e5 100644 --- a/unilabos_msgs/action/LiquidHandlerRemove.action +++ b/unilabos_msgs/action/LiquidHandlerRemove.action @@ -12,6 +12,7 @@ bool is_96_well float64[] top string[] none_keys --- +string return_info bool success --- # 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerReturnTips.action b/unilabos_msgs/action/LiquidHandlerReturnTips.action index 25d15965..0c3b366c 100644 --- a/unilabos_msgs/action/LiquidHandlerReturnTips.action +++ b/unilabos_msgs/action/LiquidHandlerReturnTips.action @@ -4,6 +4,7 @@ int32[] use_channels bool allow_nonzero_volume --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerReturnTips96.action b/unilabos_msgs/action/LiquidHandlerReturnTips96.action index fd20d712..da670e5f 100644 --- a/unilabos_msgs/action/LiquidHandlerReturnTips96.action +++ b/unilabos_msgs/action/LiquidHandlerReturnTips96.action @@ -3,6 +3,7 @@ bool allow_nonzero_volume --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerStamp.action b/unilabos_msgs/action/LiquidHandlerStamp.action index a7db4bf2..383eee3e 100644 --- a/unilabos_msgs/action/LiquidHandlerStamp.action +++ b/unilabos_msgs/action/LiquidHandlerStamp.action @@ -7,6 +7,7 @@ float64 aspiration_flow_rate float64 dispense_flow_rate --- # 结果字段 +string return_info bool success --- # 反馈字段 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerTransfer.action b/unilabos_msgs/action/LiquidHandlerTransfer.action index 39df59bb..6130f20c 100644 --- a/unilabos_msgs/action/LiquidHandlerTransfer.action +++ b/unilabos_msgs/action/LiquidHandlerTransfer.action @@ -20,6 +20,7 @@ float64 mix_liquid_height int32[] delays string[] none_keys --- +string return_info bool success --- # 反馈 \ No newline at end of file diff --git a/unilabos_msgs/action/LiquidHandlerTransferBiomek.action b/unilabos_msgs/action/LiquidHandlerTransferBiomek.action new file mode 100644 index 00000000..65db2646 --- /dev/null +++ b/unilabos_msgs/action/LiquidHandlerTransferBiomek.action @@ -0,0 +1,11 @@ +string sources +string targets +string tip_rack +float64 volume +string aspirate_technique +string dispense_technique + +--- +string return_info +bool success +--- diff --git a/unilabos_msgs/action/Point3DSeparateInput.action b/unilabos_msgs/action/Point3DSeparateInput.action index 4e15e8f8..5d24125e 100644 --- a/unilabos_msgs/action/Point3DSeparateInput.action +++ b/unilabos_msgs/action/Point3DSeparateInput.action @@ -2,5 +2,6 @@ float64 x float64 y float64 z --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolAdd.action b/unilabos_msgs/action/ProtocolAdd.action new file mode 100644 index 00000000..de06c6a0 --- /dev/null +++ b/unilabos_msgs/action/ProtocolAdd.action @@ -0,0 +1,20 @@ +# Goal - 添加试剂的目标参数 +string vessel # 目标容器 +string reagent # 试剂名称 +float64 volume # 体积 (可选) +float64 mass # 质量 (可选) +string amount # 数量描述 (可选) +float64 time # 添加时间 (可选) +bool stir # 是否搅拌 +float64 stir_speed # 搅拌速度 (可选) +bool viscous # 是否为粘性液体 +string purpose # 添加目的 (可选) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolCentrifuge.action b/unilabos_msgs/action/ProtocolCentrifuge.action new file mode 100644 index 00000000..356ccb9f --- /dev/null +++ b/unilabos_msgs/action/ProtocolCentrifuge.action @@ -0,0 +1,16 @@ +# Goal - 离心操作的目标参数 +string vessel # 离心容器 +float64 speed # 离心速度 (rpm) +float64 time # 离心时间 (秒) +float64 temp # 温度 (可选,摄氏度) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_speed # 当前转速 +float64 current_temp # 当前温度 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolCleanVessel.action b/unilabos_msgs/action/ProtocolCleanVessel.action new file mode 100644 index 00000000..cba232a7 --- /dev/null +++ b/unilabos_msgs/action/ProtocolCleanVessel.action @@ -0,0 +1,12 @@ +string vessel # 要清洗的容器名称 +string solvent # 用于清洗容器的溶剂名称 +float64 volume # 清洗溶剂的体积,可选参数 +float64 temp # 清洗时的温度,可选参数 +int32 repeats # 清洗操作的重复次数,默认为 1 +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolCrystallize.action b/unilabos_msgs/action/ProtocolCrystallize.action new file mode 100644 index 00000000..50d26cf6 --- /dev/null +++ b/unilabos_msgs/action/ProtocolCrystallize.action @@ -0,0 +1,14 @@ +# Goal - 结晶操作的目标参数 +string vessel # 结晶容器 +float64 ramp_time # 升温/降温时间 (可选,秒) +float64 ramp_temp # 目标温度 (可选,摄氏度) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_temp # 当前温度 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolDissolve.action b/unilabos_msgs/action/ProtocolDissolve.action new file mode 100644 index 00000000..6b860d07 --- /dev/null +++ b/unilabos_msgs/action/ProtocolDissolve.action @@ -0,0 +1,14 @@ +string vessel # 装有要溶解物质的容器名称 +string solvent # 用于溶解物质的溶剂名称 +float64 volume # 溶剂的体积,可选参数 +string amount # 要溶解物质的量,可选参数 +float64 temp # 溶解时的温度,可选参数 +float64 time # 溶解的时间,可选参数 +float64 stir_speed # 搅拌速度,可选参数 +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolDry.action b/unilabos_msgs/action/ProtocolDry.action new file mode 100644 index 00000000..5692ef28 --- /dev/null +++ b/unilabos_msgs/action/ProtocolDry.action @@ -0,0 +1,17 @@ +# Goal - 干燥操作的目标参数 +string vessel # 干燥容器 +float64 time # 干燥时间 (可选,秒) +float64 pressure # 压力 (可选,Pa) +float64 temp # 温度 (可选,摄氏度) +bool continue_heatchill # 是否继续加热冷却 +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_temp # 当前温度 +float64 current_pressure # 当前压力 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolFilter.action b/unilabos_msgs/action/ProtocolFilter.action new file mode 100644 index 00000000..564df1a5 --- /dev/null +++ b/unilabos_msgs/action/ProtocolFilter.action @@ -0,0 +1,19 @@ +# Goal - 过滤操作的目标参数 +string vessel # 过滤容器 +string filtrate_vessel # 滤液容器 (可选) +bool stir # 是否搅拌 +float64 stir_speed # 搅拌速度 (可选) +float64 temp # 温度 (可选,摄氏度) +bool continue_heatchill # 是否继续加热冷却 +float64 volume # 过滤体积 (可选) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_temp # 当前温度 +float64 filtered_volume # 已过滤体积 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolFilterThrough.action b/unilabos_msgs/action/ProtocolFilterThrough.action new file mode 100644 index 00000000..dbabd129 --- /dev/null +++ b/unilabos_msgs/action/ProtocolFilterThrough.action @@ -0,0 +1,14 @@ +string from_vessel # 源容器的名称,即物质起始所在的容器 +string to_vessel # 目标容器的名称,物质过滤后要到达的容器 +string filter_through # 过滤时所通过的介质,如滤纸、柱子等 +string eluting_solvent # 洗脱溶剂的名称,可选参数 +float64 eluting_volume # 洗脱溶剂的体积,可选参数 +int32 eluting_repeats # 洗脱操作的重复次数,默认为 0 +float64 residence_time # 物质在过滤介质中的停留时间,可选参数 +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolPurge.action b/unilabos_msgs/action/ProtocolPurge.action new file mode 100644 index 00000000..00d76b31 --- /dev/null +++ b/unilabos_msgs/action/ProtocolPurge.action @@ -0,0 +1,17 @@ +# Goal - 清洗/吹扫操作的目标参数 +string vessel # 清洗容器 +string gas # 清洗气体 (可选) +float64 time # 清洗时间 (可选,秒) +float64 pressure # 压力 (可选,Pa) +float64 flow_rate # 流速 (可选,mL/min) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_pressure # 当前压力 +float64 current_flow_rate # 当前流速 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolRunColumn.action b/unilabos_msgs/action/ProtocolRunColumn.action new file mode 100644 index 00000000..3fba948a --- /dev/null +++ b/unilabos_msgs/action/ProtocolRunColumn.action @@ -0,0 +1,10 @@ +string from_vessel # 源容器的名称,即样品起始所在的容器 +string to_vessel # 目标容器的名称,分离后的样品要到达的容器 +string column # 所使用的柱子的名称 +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolStartPurge.action b/unilabos_msgs/action/ProtocolStartPurge.action new file mode 100644 index 00000000..f5500a61 --- /dev/null +++ b/unilabos_msgs/action/ProtocolStartPurge.action @@ -0,0 +1,16 @@ +# Goal - 启动清洗/吹扫操作的目标参数 +string vessel # 清洗容器 +string gas # 清洗气体 (可选) +float64 pressure # 压力 (可选,Pa) +float64 flow_rate # 流速 (可选,mL/min) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_pressure # 当前压力 +float64 current_flow_rate # 当前流速 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolStartStir.action b/unilabos_msgs/action/ProtocolStartStir.action new file mode 100644 index 00000000..534c9f31 --- /dev/null +++ b/unilabos_msgs/action/ProtocolStartStir.action @@ -0,0 +1,14 @@ +# Goal - 启动搅拌操作的目标参数 +string vessel # 搅拌容器 +float64 stir_speed # 搅拌速度 (可选,rpm) +string purpose # 搅拌目的 (可选) +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 current_speed # 当前搅拌速度 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolStopPurge.action b/unilabos_msgs/action/ProtocolStopPurge.action new file mode 100644 index 00000000..b7db8913 --- /dev/null +++ b/unilabos_msgs/action/ProtocolStopPurge.action @@ -0,0 +1,11 @@ +# Goal - 停止清洗/吹扫操作的目标参数 +string vessel # 清洗容器 +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolStopStir.action b/unilabos_msgs/action/ProtocolStopStir.action new file mode 100644 index 00000000..a3205987 --- /dev/null +++ b/unilabos_msgs/action/ProtocolStopStir.action @@ -0,0 +1,11 @@ +# Goal - 停止搅拌操作的目标参数 +string vessel # 搅拌容器 +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolTransfer.action b/unilabos_msgs/action/ProtocolTransfer.action new file mode 100644 index 00000000..f31f9dde --- /dev/null +++ b/unilabos_msgs/action/ProtocolTransfer.action @@ -0,0 +1,20 @@ +string from_vessel # 源容器 +string to_vessel # 目标容器 +float64 volume # 转移体积 (可选) +string amount # 数量描述 (可选) +float64 time # 转移时间 (可选,秒) +bool viscous # 是否为粘性液体 +string rinsing_solvent # 冲洗溶剂 (可选) +float64 rinsing_volume # 冲洗体积 (可选) +int32 rinsing_repeats # 冲洗重复次数 +bool solid # 是否涉及固体 +--- +# Result - 操作结果 +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +# Feedback - 实时反馈 +float64 progress # 进度百分比 (0-100) +float64 transferred_volume # 已转移体积 +string current_status # 当前状态描述 \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolWait.action b/unilabos_msgs/action/ProtocolWait.action new file mode 100644 index 00000000..d4c49429 --- /dev/null +++ b/unilabos_msgs/action/ProtocolWait.action @@ -0,0 +1,9 @@ +int32 time # 等待时间(秒) +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) +int32 remaining_time # 剩余等待时间(秒) \ No newline at end of file diff --git a/unilabos_msgs/action/ProtocolWashSolid.action b/unilabos_msgs/action/ProtocolWashSolid.action new file mode 100644 index 00000000..cb57e5cc --- /dev/null +++ b/unilabos_msgs/action/ProtocolWashSolid.action @@ -0,0 +1,16 @@ +string vessel # 装有固体物质的容器名称 +string solvent # 用于清洗固体的溶剂名称 +float64 volume # 清洗溶剂的体积 +string filtrate_vessel # 滤液要收集到的容器名称,可选参数 +float64 temp # 清洗时的温度,可选参数 +bool stir # 是否在清洗过程中搅拌,默认为 False +float64 stir_speed # 搅拌速度,可选参数 +float64 time # 清洗的时间,可选参数 +int32 repeats # 清洗操作的重复次数,默认为 1 +--- +bool success # 操作是否成功 +string message # 结果消息 +string return_info +--- +string status # 当前状态描述 +float64 progress # 进度百分比 (0-100) \ No newline at end of file diff --git a/unilabos_msgs/action/PumpTransfer.action b/unilabos_msgs/action/PumpTransfer.action index bbe6cb1e..69d22b6c 100644 --- a/unilabos_msgs/action/PumpTransfer.action +++ b/unilabos_msgs/action/PumpTransfer.action @@ -10,6 +10,7 @@ float64 rinsing_volume int32 rinsing_repeats bool solid --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/ResourceCreateFromOuter.action b/unilabos_msgs/action/ResourceCreateFromOuter.action index e0eeb1c7..57330758 100644 --- a/unilabos_msgs/action/ResourceCreateFromOuter.action +++ b/unilabos_msgs/action/ResourceCreateFromOuter.action @@ -4,5 +4,6 @@ string[] bind_parent_ids geometry_msgs/Point[] bind_locations string[] other_calling_params --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/ResourceCreateFromOuterEasy.action b/unilabos_msgs/action/ResourceCreateFromOuterEasy.action index cc832a71..420602eb 100644 --- a/unilabos_msgs/action/ResourceCreateFromOuterEasy.action +++ b/unilabos_msgs/action/ResourceCreateFromOuterEasy.action @@ -6,7 +6,8 @@ geometry_msgs/Point bind_locations int32[] liquid_input_slot string[] liquid_type float32[] liquid_volume -int32 slot_on_deck +string slot_on_deck --- +string return_info bool success --- diff --git a/unilabos_msgs/action/SendCmd.action b/unilabos_msgs/action/SendCmd.action index cc883204..6f453f6e 100644 --- a/unilabos_msgs/action/SendCmd.action +++ b/unilabos_msgs/action/SendCmd.action @@ -1,6 +1,7 @@ # Simple string command --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/Separate.action b/unilabos_msgs/action/Separate.action index 502b420c..fe8976a7 100644 --- a/unilabos_msgs/action/Separate.action +++ b/unilabos_msgs/action/Separate.action @@ -13,6 +13,7 @@ float64 stir_time # Optional. Time stir for after adding solvent, before separat float64 stir_speed # Optional. Speed to stir at after adding solvent, before separation of phases. float64 settling_time # Optional. Time --- +string return_info bool success --- string status diff --git a/unilabos_msgs/action/SolidDispenseAddPowderTube.action b/unilabos_msgs/action/SolidDispenseAddPowderTube.action index 674c4ffc..db0924e1 100644 --- a/unilabos_msgs/action/SolidDispenseAddPowderTube.action +++ b/unilabos_msgs/action/SolidDispenseAddPowderTube.action @@ -2,6 +2,7 @@ int32 powder_tube_number string target_tube_position float64 compound_mass --- +string return_info float64 actual_mass_mg bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/Stir.action b/unilabos_msgs/action/Stir.action index defbed34..9542f9dc 100644 --- a/unilabos_msgs/action/Stir.action +++ b/unilabos_msgs/action/Stir.action @@ -3,6 +3,7 @@ float64 stir_time float64 stir_speed float64 settling_time --- +string return_info bool success --- string status \ No newline at end of file diff --git a/unilabos_msgs/action/StrSingleInput.action b/unilabos_msgs/action/StrSingleInput.action index bb762a58..bac365bc 100644 --- a/unilabos_msgs/action/StrSingleInput.action +++ b/unilabos_msgs/action/StrSingleInput.action @@ -1,4 +1,5 @@ string string --- +string return_info bool success --- \ No newline at end of file diff --git a/unilabos_msgs/action/WorkStationRun.action b/unilabos_msgs/action/WorkStationRun.action index ea75668d..5ca9fd4e 100644 --- a/unilabos_msgs/action/WorkStationRun.action +++ b/unilabos_msgs/action/WorkStationRun.action @@ -3,6 +3,7 @@ string wf_name string params Resource resource --- +string return_info bool success --- string status

    -;_ot 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 literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.stl b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meshes/hotel.stl new file mode 100644 index 0000000000000000000000000000000000000000..59cb90842adbbe11b54ee0b49e5335455a2eaf1e GIT binary patch literal 495584 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%0A~i6#n{D-x9jJ-WTbDp+5w5_C@>U-yk=Ww5%`QZB zz25X?kt3B+M9~T{qwh)kGzP!1X!teYrWWGqZ-LlL=HRO4{XLNqvu~2Q-w)1OaE&c9QHm}(`FEA9f z&o(nUzukWG0z-c}Sz!@FpScJ!Hyj}|8(iGdFK)TFttcXlgNhkC1K>ONUwW7MJ*Ovn zdOQPYg{olWUoErkK33ju7s|YRT_$}Qn|F~Of9LoDI|{GK-7K~`sA`6yu=U<%HSd|B zD0wD=_jsHo|%OdPR@lU_%B)jxzAy_4IhWQWPG) zt|MlceIbg*9#DDwcGd~^n9PY|(zk6Hzge-u4?+WGD(5RLnSN zTsS2(dgdrrUXF?xSZQftR!5f{^uM8uJ{Nqp zPYs!|1bJL-c1T}tr+sZ?C^8g<3@T>ibDu8sXboLn#{BxU4XqyeUac}5#rtqs-g$wc zC}j45d)DFmHHt!ZTTQuCt{s%>sAedN_w1$WX2@!y!EY+-fv4ZfqH?iY zLs34{W7b#AP?XLrs~JU%sh&v&rxrP=2Qxvabz8Pvmzn zVmxiPO!;%Y$N1e<6^y)JX&5WCa6XB~>Vin8DP?0gumo#!gU_mIjpSCsE4!R}`0P6H#(0Xs}df1mGv zATtYRmt)*nQ_{)dE>mS_j?}^8Js95oUdqZr5X02s7a$Z`!kl%r6eI&Ya`%s)&N&^J|}L+xuXak$<_p9=!g( zwJ(|8dCyflC$DUH{ZN;u4!irl5f@GG{MEL*TFsTAIm-C7^U3?ZxnO$dK}YRYU??hW zyJx6Bx0<1-Z%>>#)Sp|;P!zw&S6fLwzJIr*n!%}0e=g@lo$-Uw2PcP|H@$PqX`>4D z&>UsVS#kGTYlfnX+5eLib|(`-E6CBhN8Z^Y_ay0>^)CAX4j;ep{Tu|S-Sm; zi>G(C{e9;i7>YXM{uSE~oiM%gxNArBz);kIQ~S05uJxrIOW09#nJ2u3w&2yW_*@or|0}*XO(WSF0#3Ni}1ow=S&x zd5uRp_g>`EX^OhzZ@;VkcJw2i=e}}>#nadC{IbI?tNrnmM>=1)Z}%aJ+W*ww*Iu~e zkYDt|-+}%_yQyzkYh>^G|G<#03@T>izXU^g_sm$C!=0N)p=CDUvd^!r=CY!929|$hW$@ch zdYPdpu6loxTLhOM;9((nHNl44$RW?U~{49F&%-T8HPfV$jm%QWc*| z&+t;UW}w4S{{H9B;8~!Q;qSj(sv?S>0b3Z%`uMXR={d#sOuDzB=@5qY24w0~d^cr= zqp&l%T&)8umupuP>E2^v9g0#N)eJ=;`*UN4TejIHJ8RNc_qnAAnNbu=(W9>~62{}q zPF-Xu3K>+)&@W0o=#c4Sth|uBS4BmJ=M)*fB8z(oC>f-Q{f8)qc#V(*u8<}cZd)#U~AxaXw*J{xz1!58H@tr(>!1zn5= zFvxK>a%gEwC*DE+)#i3f&1uE>UMW(#-tFXUP(->$H}^cX)&WX&R5SE8C`BRT?>8dE zDauFC(7Ke09ByS+6eaZZxKxT#9n}oaxzntUE~AfDM@N3rTi&4ND1%mL%}|t(01Y|t`ZxR+N;unxhPjqfvf?-s7l;_xx&x z<|u<`+SG5;QeUs3!;6mDrO4ch zq7~55-(vPxGc-pT>_?+xtFX7NZ%|RR0y-A8DF4+A%~1xivC+|4ip;GjS^*uuvgqH{ z49!sn(X?CZP!z3zjxO`8sb*-7GVtVS-ByaC70|Ibl^QN)Xf!RTDgP!uugVKCNKGZdv?Q8hzR z`VCey6varyJ2=m7kEmuSig9KB3`H?Yz+fz?)}bis1cMQ-nxQD#4F=z5-8=zgk7P%r`%O1}H66HA7K+U6h1b zMm0loS~1G22}QZgTEw3ujBEzm;3h=(o9Bi^_opYiwWsH8l{1Q{`7-K6>?s#%Rp9Zbha~^mntw6h3qzK zw_j(wmOLMpw=QQmy>*d2y?FvO+$5+Ba+Kk6nV~r@qoeb%U)Q43vP~VWP@H|OW@wJf zF#faWnKe!TH_z}kb+kfphPRrbIWEIsl)y))d9t{vqZR6*tG6#OunJnsHoYu(mZK(_ zHEPI8JN|z#&`wE|f&AunKV(K$&_N${ZyMz9?U~(oi04q|i_?nXs6EZX@`qEF2>PlS zMbv92EHxhn&vKNPojO(PP?XlZn&COcwj!OF6XmulKDXn;otpJ%&EQ#%q7`N?we$Z6 zgJ)4HW$nNfQ*kaef?q>Km&M1VhGdcJ`B2z+-&r!`#l(!Eh>}D_`gg>({@yp^m z)W?f-_hE~EKO!G57_P5phNH9|)eJnlUAv-4_tM6tQk3ebW+)2TpBpoH5BWO@XEVH1 z#ESD+4d`|c!DyuJQWUaBkm#A=D2-VZGyLuGfA*`Vh366-gvf!;CY=%zZ6j~1d{0VI zL@Jy=L+i0Y@3GCAYn@^piqeu)GZdwzs%9vP2wh%}77Tj4ji$`P`3-+4KMUY8>AZi^ zqkh$3rtc_ZN5zb*e|1RsWj^k{|Ag4MKQ$kQ*N&+r#K}F@e$QVwnYg1znm5F-A96Ek zk)bH$tqc`2Y^R!EoFRDlGpD8`2iW=ynGz!F3@7YuM+`+F`#gvzA=?JlxL<{O>{dIm zL$xD&sfg~d|M-3G-bQHyM_v!h48n5Lxea@~RV>KjwVzB8K8Hz#%6*K&_p~n&S_ko4YTN;ZV z=_6al5mpp3sF-2zJIpZXyF|n5x9H>H96hlu8~Z*MWTJ15ek4l|eYeRVX69?>KT$%# zxMkFnAw6d3vx+)eGbq)2OJ=A0^|`Qnbu}ZzNOf?10YCm=4BqEtsU zgAu@=r6@+!kEgZL!P(Hk4`w+;esdY$;RB|&VkkRuHT90amqV#=KGZdvgv6`VM{i3QFL<{xrSy4pz^zT1zE24$^XrL(KSw1>Fi)9G?OMH_m0Tq;GWj%tRY7+1Wu1%~+I@M}PfaNprY{>aW_`Th>+ zR;m^ZMXB7HG5&Xtr@hQN~NPbr+@N+-~}cANi9Ef7$={xrrEhoB z&#hENhND*8`1BB4d#e|IT3{S->Jg!3Z@Kg7lob{?Y@TfET4Z9fAj7`pw`ZsA#%^m< z2HI(#VWwSC$1grUqz^oI_X0yvs-v2rD8D~wFI%6-4E0;m{Xt}UB^G+!Psk!uFmGqR zSVX~K7a(SU_OA+G17?ue6Y#%6#s=W&SP-n2v|x~kAyZ^g!bu4!q zojEW4>e1|8%c~~NOOLUe7qJ??`EVx33@q4=LUvSvVKpCk%RL?G|Bk6+x%2pG+%mV_ zZ&poKw_E1W-5n*3wsMA|xVLdftJBZzcE>W~o;Me-_dRjXI+m2l-~RD%$9ZToj`|sQ*nFU4-Q>98Dsa| zk&eG#7Eulz&QKKkw(49Z`HhvT%y{Lb{pRb-FE)l$!E756z-P&)s?f8qrW~h_dIik zqWC8EJa=~T<2?>-!8rAU_3K~H8QS1}&M50TbMw_1{HK-){YNTZ`*TKOVp6>}0tkmJ7Q} zKek?Zoqa1YLs9HIHXg}P^y7%pHRP=&>&d)P;Vb}i!(*-YefNvYlZ7rfUz}z33#B5S z%&NB@l)b?wLs8V}rAKF`v#d_kBVr7hHfKn^>w^u#xa0c&`@bGjzj^Yt9rRc4OFw({;u^hgn_aWrC1MIcW4g2V z;S5EgulIF~T%F(ZuBHZI~J#Eqv5*gh9*zOE6u4o}Z?IHQQ->-t^3=M^!!CT#X> z7bnRHH>A8vD$prgr96g}KgWyZTV{-uL&o!QcaL1(9z%y=sF zjJx`so&MG42{3Lu^6d0|)0gRR2K~oT=p$Mas4`>lYi;$8FGkld-Sgt)p8t(cpMCJ@ z;NQ&rdYsKsRClJs8H@&wQhf!+fJyh|ziM?DJ}*J`xyU-pUYv9uv`TXI(*L3!HtRd} z-PP(>{&IL-bCf}8*S9+@977%-sv_^@KJP2n^`bNnSMcgy7R+3<~=d*?F~gCpK39kHnsiQ0>f5Bp+SDe^I9mOr-ynp8H!@Y!TNJh?t9*vQAD+7NMxhBt{RYiHKE=~ zAtr~%LJAB;A>-*3GZ=lspIMzbk-MLrmixrc1|wr{N9Gi*r)Td&8H!RlVs!EQL<|4D zesr?+2D8!;cFvrW<$Qz4rQ7S83`KFWoNut@eRo~&{`Jot++^SW!BNSPU)mV{Ku0(U z&*=O&I|;A4Lp_=dPQ^P)^_3Vyj=Sgej&Wc9tbW8%M+@wwpkoZy%oz8-qw522 zoz}7Pq{EZPhP9`2r*0c`47RcT3Oh4M{jNFD=3Q35tgW2Ea~*{|&gNH(Sj|g}A?#v3 z)qZ@(N!K10PB{JCPDR7;Q)1};_mV3mb4+)pgEcMlAMTA_)_$Yb&d-mz%#&`k->YBP zlVS$Xb(EH{#AvQRKzZ~=Y)dYa{;@@yUOmL?QOK12jobo>oH2?Xbi}iJFZZA$Y8^8EaNTk4iVQ`0 zoV%Fu^0D<`xjXg!bsFqvUuuyF2K;J7*xP1oU&mzbef3BfZEZz{qLA;k*cmY+?}@?F z0>4MMIwSKNg~j~EFNW4Uz1gpt3`g~Pdz+feF+)mKNBdKDu6?&1hlY}{qrAJx)X(?s zqk05}qLA6uj~P~vF8>Dc*zhkE*}q5X#`8HA7LvEb?!# zno&emGJMWZr``D`_&SeVV&kSv`l4qq9@6t~Fz@jZ>b(tXM2Ll5&7i#gEJcw{8_LL# z>rfOCf?Y=s3_-C!>~T4(8H&1Sm4P*n%UR7(l(#fxuVyI9-)7GYMR||unV~4}yA_Ol zyrR554*J_Pd&qcc0#VV6amoXKlp{gP8_7 zSkHH{92k3Ep2>$Cy+N>x_YU!v7)70-C}gbXph}Fcn>(NF=zHqn^JT>y9qfUyo1r<%DAl8D$U7_7uN<>e{eT7cud!0RcJ{DD_3>s|O>$>PR&(wS zCpL%XC_{AzM%UM$Y+wKComJ~&UfQ>Ij#&r)diU0e>f=eQCiCbQRu5m-YEF?6mx>Y* zTLcEybD|WeK7CSFD(0d`-I{ceGxF^>lHc2mbxiMlYR7%`M)L4R+Xc^l?2HT9lVXOV z(6Q|)ZzhwiPCO}QocZ19^$GQFYvgb@$Hq4Iq4&8=`mI;YO|Q)&Y}jv1!du**4iegvJbrcx3KF{}~>biHs zUQuHEQQRd{*vBdCM-kiXBeSZ&*yH6X>7n_46cNmjtscTq6tbh(k8-)Kt?RwD>hE5A zVM^b6ZrxGIX*>3B473{@PWt`+$;R9EZ=7J>P5r<4ak9|g*9hq`Ls47wIWT#B>Kcs` zOAKZitRPo8anE40{G+X%67x_Wx$ecuiMHC>aqjjtEIKcoUQ3@gU-ztEIYUv{Vfr6X zOAmN_c!AOJ)#3HFwf;Em!#khpVAtyINBT6jw_PiCmqy&&r|~!2UHaG5b83e#`~Akm zHJ`M$Qih_istmZIPvZ*P!K!9xjxt8QcXExW>3iNx#1qw_C~QFN75&9_u&Nn~`p4_z zYwSne_}5o@U?_^-$L`Wl>*3Wp6h+^Kald^Z)eOy1#&QRrRwG91(_wc>Ypy8d!FOgl zVg@6%@7?hY(mv-}Oa^TQ(x3QKpT-#$J0tsQouMdg=@O&4cZYq?{oC1BLtZA|?Zf*U z-}Bd5pHXD;FCnGR(rO67>r+`D7Xx z`y7SU*->Q%dw1B}(Q)l=^U?=9mJ8oDyVIN7?uqKo-iI?7GaQB0+4Yqfe>|vHz3<7R z>o4zhdGhYmzRCJqEgN>4d_Mxlg({lPlBdUI#bO+U0< zJ=iNeH#dF8b}-O=)^hXGRZMrL!x@S~X1{)fowO-4@*TwnyL!K|Il~*a4@l4Ocq#0+ z9Ai6*587^KrX$}U?6~z`mnRq8I5)lf@g+m4R+>6DeaiMc*qi+Pfw}34wl^6wD2b!A zgk=VM1_N%qvV%Q3zM|f1E)jGfbAkum1BR}Y%rM=V4rlOOM}Fnd^7!;i+szC*nhe^Q-qKzZXGbWnjGCG*aFkd;rc4cE7tx(Krsu`N&G7O)|+z{f0 zYpGhHbhcDx=(Ajg!5Kwby_%sYl{1F!f3P3HX-T4rYosaCIXT&kN#5N5P?W~0iW$_L zUr)w&dIQ!o`m6Uu@4KYar?dB=4DY+%UqK;vGeGD2=fOA1ccgWvns!^oZdiTKe+`-p zMIk$?z_1x|zT;lU|6-c$O>|wJ?VsOoJMPQd{yDwJ$KY%%VaI*d(@$vl4Dvhk5Mgxw z=Zspqz3tKS%TQaSBRw$mM5{-aGZe+|(kE+mq$iu_K#4Jg9rtwJsIXK0gNxou_O;QO zvG%%=ZzWIK-ZrK3-Tv&Wb%vs-(*ph8PVTWfl^9*@pWpYv24RNG9OruT-WdLe%agNz zZ})DkzGv9GW9D>r_-d(#GZe)R|BX}nG}_G%fDyHuan$Y8J6`@g zhh)}mYc?L= zX*9ElF(lt{Z?Jaa?7~szFUYuZyY2Q(HGe_U;}h%7P!v7fQDp}E=dX@EzOm+x=hR-D zGc!GBWOg?AJKODh+*U%WJ8LUv(0?4I`pS%a|Ge>P-*duAi#J!z&IZ3~o+EeJDok}} zI-J29bd>5VFl^1q$V0z^p(k0HIdRJP#8I*RA z?YMtzr8S0)4Ec_GgV{Y^D0|pGx$4s=WsEbw{$>5BDK~U5Z`ZhLE;EOBKf;*7m*Xg8 z_dF~x>>G5C6wOhF`UjW}VJHgOJqHR5^EJqK^%H)J@L@UaosqQ*?;am~Sbo05E}<1j zf57|}Lp_=dMX|EL|7v&hJfz)PGm5ARM*eHVduOl6=OxI#f?yZO(?iXh_NyYQnvu_a zx+t%E6}yaIu%3g>bT~tEl)?Jb{e@$OqG$zB=qNMt-X4By>96=Vhc#|4bDGP~+Qv0k z6dvC%k6k0##=OU?8H&Qc-JcsX)b|`6%=%8qOT}+EGEX}BlPT$zExpy*ORMGH>W;#b zob+|iZRM@*DD=6GYKEd{T^M^<>&6Ve^Srk=J#bgbeORze%*}mRu!N9qtt$+CSRCbE zvsgd)x>_@eD7Tjs7==?1w8>U>#()zF$lK*-8tCoAEZs^a3`HS>nm@x)&KQ%Qf)E|{ z4f1=7F1%ZO28rym%y^y{(85rZ%KoGUXKp>O~QR%+}nlhw{z|F+bq4W-R%|b^NJXX^1Hoa245_-ryjgpO7gYc z7=p~)7n!(O=zH?5m({9w<-)6b36ot%tE;DpBfd>_q=Ed^!7+)T< zaFFqhBK%pg_`ZN<(zF@$K7t?i^QGW9^_3^(a}*ctBZ-dANP3K>+) z829rQ?=ElKVFNYuazpNUMi36oseDt*=Z@ z|2uWt9vE9Ldv z2TL_WQFzVy9W2!hMIrOnxPv8TnAN%Ay8z_uw9aSgEPJ<{X~3$M*jGzm*m>^9>F#c! zZ!#2xjJ39BhCWLfTcsB#i#+;q`hPR?orXwYK zS2GmFOqP|`MBAIFW+;joYsZYaY2Uk_>w%#tykpxxoSUZRfm^LZQSAIYzS6vOwt3)I zGZckiF!toD&5Jo^*j{b(W>W4lWv5|DJ6XytrN{@pdRW3;rmVtAFW+TaM3ou4)lW~k zWp(0_>(;rC<;Bj2x}Lpbx7ym*F4+FeVKX}KykV~zx2}-B(OsO0Q--2`yXG?OYyEsi zXZt!oE-+X*GVWq~rM8>D(5G>o)fTVo;h*jcf1!REeUBbh`>*{{ zFBg6Xm7ys07V4SdUPySJ@!TQis}?g3zvi5D=!b(ELq8bUppX93`sl*%Z&}lOQ|Qyr zSo(?&4z|9l3`NaZ=-Z*!ZM0+8dXH{aiy5ztJ1z9x-3D#dLBGO#xXbz#_N)7z9iJ|3 z_A7eNR|lM#ez_w(Q5lND`gP*XW!5&H&9P28>r zhN7@c`L08CsWe9!Utja5p?Y%#DAqTZ6ekeybs1us1Gy6mMjM{$#K=Mw)&R>^Nt?q}wP4sN-No70 zm5v(JwC}EMCpa4ax+uZd;ErQ=3_E66Yi~1qnY|BTC<<=~{2AKKXM%N!FtRmgSKE+x zZ5R8pu-CkxMIK&nz-6@qKmI5^amJk?3NiDC7qjTb!YHCvc;ut>!~3^xCt7efL+?u^ zqLi;7@WAzz1?kcHqj@K*qL6*{5;NR_!!H|aOZSdM_OS~YpVSroK4JQ9h$G}VOWSUk z%b<|m6STQLZ!$cm$Z!wAGQ+jQ&{9=1up!R0xjGDFyrYq61=7npim3TBc$TBQBt7d; zl-8rVROEbScV6prk$L~5m+Rrr0;M{t8H)1Xs91+Y7poIR3?2Xb^->8k&qZd3@T>O1H+$vC%Q&PhQZpo(02w&f+vAZbM!WP|_bV`-IL1ick8C01e^{5kV7St~+ zmNPOsko7%9^#}|_A^Y3pNyy#Nbn)fX@k7TIV)4TGKZ|QoX7F6>C7_T&#SE)QXe;W2 z4H;_$)>CBcKFC;#Nq^MdO>8MDqF{iE8F*y!KJd=uUI3nTlC=*q77t`1Z;*aZs7H~Z zC}dDEqdAJ^zXqJnBMv>|{419|mR^wm8jzmHx-a}1C~DWAK9+u-{~B~N@XBNcFrod^ zn#Q`lQ|qYT!&?pYTz6om{M9X&G~1%qfbN7$})&kRRlLD>7a zdFf|g^u%Bm&V2CmJc!rQT-M3`ME` zT{S~d>StHYP!uidzKYchMd>@}nc=-b-$yk=QCPo-*0ZO1M^`fx#cG0xKy_P9R5KLC zTIAd(=B9Vqilv&ND7O@LnWt&c(BQKb*$rct>2QT*4 z3`J2wVoqFPzERZ-MIn3HduBLFYhKMz6!J5JvzG3e;V4dBT)gO-%Q zxHLi+rDCVy@|I^BJlYpNGkmp|=4TpOGxS-?;5RthF=?K(P!t~czHd;?P?Y+&S2Gla z=K#Mx_|sQ26ouab4EAxV8JeRE<`TY#6rbi$6teFw#SFDZ@yqG)j~I!Te*Dq&irjuh z`iOA=HBDRYo#P(BS zjH1Eb2w?BA#~6)KgT@#oR`gnceYVCZF|iwsB^qoPmDpRbz4M*D*SXK^v*+^uaXx2# zW}au-p1Njcjk9{-&e?HW(q!%uvXgSB(`(?Kue{0(Q0%eTz0{E5?DY9w^yy81)UMXI z=t9~zIiHBOwNKFZ+SJM+?S+`0EK4n?u10`-D>SuA9*-t<3b zBV~gNc1}k)``xFx6A3>#bzC~S?+0EU`j0_PcUMb!w5Q{c`rHE~Jq0 z{%`xHul8Fc#Ya)^{H=HTz$#05_mH6|O-Y>bRG;2ypZ%BhVJT|A6MLuUKhvWkjz-UZ zX%D9z@aa9iPx|q8t9tp1r=Af&<)ce?%X3O z{MlbONq75S|2(xpsuZQ+#u@L;8=m%;E;Rt0?5^_Mxb99Mud(X+Gj{C`!LaoS`VK?Qw>pw4KKp ziqifn&QO#ug`$s&GZe+ww7x6OSmB5jn`hvV>32D?rKjG)dR0bs!N_%SBhee8)BVJq zPvh+xOJHb(d2 zrC@A5<$CHWhM@@8kZc#QhHUDysh;Eew3h3|>u#X3$=Y6 zx6g$<>bcXr%SQdYKk!!w~c{J>C(C$@FOR6R~dw5C}dDkhQHxPSj@;k!6?tp zf>e2iqLBGEmRjUm?defRwZDA$hIMylwEp_5OQv%#Unx7$&BCTkSTtQ@YA(M#YO(au zZYyU$boN<7hN322SxYbdb|sGr8P=NkXD5HRk7v%_+=WGNaQ(#(db$0B9_eno-sklJ zJ|BKGfI)u_3ax>nw9jv4Sbwf4Tn=`ZQnt@J__pTI$%x=b{%2ZkGpfrv+ z16}AzMI45L{q9oTe0^*E9!Ea<1Mj1#ziqW*`pxILdn?1j(zJKY(3Ds{x@H)PIP9x+ z%`g-Us~KH03w!gzwJhr$WJ((M z{$@L&*(btK6f&rg@y&lX_lzm?hxqyK4Xzh`!QHm!`%hS*d-ixCk8}Ml?zNgStf&6Q z-N}bxDB>U_+(U+$k!eaZ}K&nJ~}SlX>#fg+?%h8xi`MmBCjaJH_`w;evc+$Cf5 zA?*h(SxZ)Y;PxWt%23pcXDpIf&O-*Tcwk9~G5xCRl7w@*STH+$?e^r#*~OXNe{P;| zt`~P#R>Dx!KlU7+T)1ZyLwAumWz8D*$?C&7H2=MzqH-EhbJIlm=EVNjKP_J zCwsIvruq4<#-S)=*u>E_!%#5J9Max6t~mP_;_&9V~m5fKwg3 zZ?J^3^}{~Z5j$m>SajL^CoX)o$R#S$e(2=b3!U`?leJ?X&;8S$59_AGDDV`g3LU zzv8{Ni~8p7K|V4|6=7MPU|S0FI3(wpqO9DyW+=*XOFqIl7zO;#>8sHQq3e0m_0*;V zLN-kia-hYjD+-+h`lMEdj8S#Qq8@JaVpYT#WosuJ?O0#cYRXWQjc}ks#=nkmbB5t_ zN6nr;w9bh9%rSY*V5~j+vbJU_PyKc+ zKU#)y@bU>(RSv)94-Lu+E!Szz8VM_5g<| zZKHU@Eu$T9+VFaJt_$rK_7l%9UQ6Q~>CF7BnlKba`!EzCne2LopAD-2b#T3X|06c7 zYyHuBwe6*=q|2PNc2Regp{OMmbWg87eQjS8Lq^X-R?qk*v*r)YZr-?-98v4#Z*5(@ zVDV&`V{>`X$4e(WzQ4A=k5#LEaQ~Z);cs@Yld4tsS~+?Brd~ewBhT%T>^*QDAIGiB zFPH2&E_V+ZirVdj3M2(E-`Ms>(NHjQsF~`lHGrvr?*?%kYwGj za=U}~zOreu{05c}WhiRW?jw@+o2nQSZoI60-^14RWu;aR)wbcWhi~pJBj(l+m7%C- zlHutko9AT}GG6-0^4XyK{)KJztasnGWaq#3_uqMoBeqC3spqMhclegcU3=y3wVE;% zb@2Jyc{Vm0L&kxV5951`lM=xT9Of-C64q2J0Gp zunDIqRz>KR*YoQrWhhGHh%*$m!cWif;f`{a#zF?`j@r<_&ZhTy;h3?>`@Q=4+IQ1O zW0Tv??(5|*Zr>r9HK(sH!(vYDY(`PKLpR?xIrHUy-e<4fcS^8aPg(79*Y?T7yXWp9 zLs8F8+aMee#M)tj3vYTnN(#c3Ypo! zHN~5(oeb=X?l5QsJ$2T1;~kP2qw-Qb@w#1;qvrSVIe&53cFCvr^eIYL8H!qU!I#V?H1Izq3^`b(1{3)QnZ0%5UDQM$fNOn+!$0H)?CI5#*bPjN9*h zxv~1eE3h`mbe8eSw6^5KH*-11lI;AJQ|M zfA>@EFaK<1puG+`Ts#|vTN*Idz#e}Vr?FRJmB^@$&DgE(* z{phdi`l5!uo3UWKz0+y!_R@wj6gBeI@hSZy-y>v9p0|d7y@k4~HY?OJ#q?XorKB() z)s&&AjSt^1CFit{kikvdn{W7qZ-eTij5~MQD?R=Oi$fWTnttB_=^Iz(afFP<{|?EH zyzkWpGmZP--7>LPNp$R6^4@Ke&R0p4p(q_0LI!0-Ps%^q53~_?JIn6K>{=nSzk_>z z2C~dh6tbN>>|~(Fu>B9!k(oxPtS|FpRFk17)99cNP~BO+x^tGGGhS=f)x-w#zMjpl z73&XOS%eJrQ3kpbTZ@DYMU7wnl{Skb&QKKk8Cw;Fj6z4|t!ANB>$zvXGlss*cAC(U zE$G?3*pE_%qR^_b&q-N@491T_TN`LOL7}aMp&HM8{4j>1NFmx^$6F?#@qpaUKrY-18H3%21Taph5;cg4u639mz2FDgk>eW`hj-?cB%X zMR;F#n+!#UyI_CAFO@^XW-x_Bq zO6zOLFfAvw-L#q1YSVJkK1}uKFb!+oqRKtP>r3C|cc*FdwrfqQc02l( z*@rnjY-`V8C`#1!v*Qd!(SncZ{YSq89x_DFkeNP#5!v(%jNzuSz&+4RWQsCPK`TQv zMVV=Y2+K4@Fihu^$Ds^GnVzYYVcJ@DGgQ}On%h>rkGHW^=$2GlW11-#ma3+1sczaR zMOms^8BSA_VLQ>ykh8h{mq^e@lf%c4`Cl7aXYyg%s66M&P?Y7PmGRr34ay2#cxG*z zu&iyv(70iS(-2}4mIJvB1H`kt>DvOD0$ zb8aHJHz%08>#n8AjDuE>sWH_IMUmT(!7GAAKC-vQZJDwM;mhQSty5O1I2&VB@Oy!h`?Df<+}5yV}aFAPO#d?Dk#TmIPSIia`LWvI?V zH4~~^c3Nj)D2g{y|FTt{s*q9p?j*0r7&z^;2Kt@%ITmWSQBW7JHSUsK;JkYBr3M=I&Zz=-qJcxL-B*t@I*ixr2M+ zllOihUAeg9zJFi$u8@DjO&OrfM;Y8?Kjh*!)A{Z-IM+JlR=oNsgI&P;`@flfHmvH7 zyZI=Cd+8fI{YLthe_u`GP!xC3$KUaMdUkQgy_%t6DT5p9OS`k&|Ej#>ZsBsr9n_V@ z9rsQKn#bX zEsNE@-=y()VauYE!RpT52IPd{hOWjfUA!i^Gp`XBuL(Zj>h2?zuL&B8z4TYyJH@XR zuL*WC)Pk~F`@(`Ur~LPEtJKi)mogNE{D0&A*w}la3`1da8LMU66gHPTEtokSSypJ( z>e?@6Va9OO>yql%XioOo0j+^q{;; zhBivi;-CZC{;T{}ik{1Hqk%BgM;WGb$Wx^ZMWLCpIN}UNnO=jOw=ldtC#)#(zQOx@ ze%9#gUP1WdMI-&2qqn=)#d*b``=$BI<~|=yhN3pVyUo8$%3J6mgA)U2=gH57Yj2c1 z^~9U$ZmupNKkej2oc3eo>o-V#;9i`=-D~IrhN8MVR4c=UJ(JT9-^|~n&g&7}8T_+* zV*<@4a<`dVro0ic_`l9)f9KnC64#_se#UB7#|dy#F|IiuRP{?VL{vCc{w?k_m^8+YH@%`BCn zs6&r#YnwQ3PRGVKZ(U;C`M|vP7Z3V@&&R#P_D*KLIKY?H4g2qt%=>x1o1wcLZj2I! zqI72?WVrp0hV7V~_P;$++Zh=*Y0uR5KTh84z|?k9{EkVJp{Rc?Gd?}4*kcJ9?ptJ( zFk|i0A5Kj_{4n2fUHaiO(&3-y``M39Jt_TsTE5Tiv{AxP)chSzOW(LT-^mXd)Lnb| zom+paxRGVO;;nd-aUZ@}TjR>gx8ew#^YdeqNyp{;!|t04Ls3s|HYHi>#C)$gWE5v6{JB)LgWRM3)>%q6c`G*> zAhU;nyI-;Ry$N~-eArQVZ|Z1|LZ+n}1NUl%qExPC5WAu*g}BEVh9Xazk2nLLs+{K< z;c{8ojb+O%C}hs{_Vh2_mKpf;br!!Bh0IxAG|;VOWnq=$h%+b?ONr(@&QR2^K04i} zButg7g$?Q!Bf@QchNeF~H}5Tx|F!h`e%Dfa*IKR2FqHPFAw&Az%z9)_1zEq#X(40a z9`w|iqAZS92EBCAGt>`1Yhpsrz|8WKZB9t&8QAAOsK=oRJp=B(XJ|4Mb?ktn6MBYL zhV*cm^-HAJ`YTdpJzt&=WhlyeyH*CT#B4nKBlPX{tuHz{ePo-wr+(pt390qk1N%%) zzus+tPhtK_j4>3ors zp!dOw2QvK%GW$EYFY9c%cfQDG3`HS>3K?dr4+b-R3k%s8YC*)k!so28Gd>wZQ5Ijw za6L5)Z>hk}I%Bg0+0GuDd+`cJ1p}Wl19sEaOAv?olo_0pYTAy_#Vt3%6^AqO`2yahOjzAGkLy0tNZdaP3sNrK*~tC{l=>qOKVh zJ1AvPZq;#=QP@R--N}%18U7^!>h5vH+XK`@WZoXYJ-2dGW+)07RLGFAHq#MO$3Yvl z^FC1-WfUVdePYO-d$4W60QV;*iX>Lq7vp`?sg3wu<|5*4e48)pTZ1t0_ZKIvWTXAEjTme>Hb8w9fSp z9@#FnGn-fbYIMrkbMmxz_np((X+HOLcQb^csGD9Kn{qC^l_9CBTkN1LRg{(GFW*a5 zhN3J_tqdvM%u12^W2H+ivG0`ED`hCkzD+Ab)&`l@IIW2qcd$0d6s7Tn44I1t^LA^s z)I^)rQii^L*nGFHD4WT)GFby2(Lr@0>jIyMD7b`pKM*m(Lnk z+JjVvq8?anmDykZbWXQFWVh>^A3=K;e>?c&m zp(u7XEQKwMnfJfBT)o!`d(_dAAOBff<2k3TV|91sGD+hSx4Pqn<=W_^G1$GsoUaFs zp(yqcUOYKz{NC*}gbaO0ksUW?!dn(EFJ5&_x9qOs(a70KI}gcO6Fc3QpRJX1mYJgL%w^XMMcGM7 z?uLhPOnQ9@zngJ%`guFAS6R<+$>M$6E^s}=Auo;dd&0P1mvL8L8H(EVKR;|+bo`tS z-YI6^xs!3tkt2Q2z`Y6Wefsq2;ZH!+4&EiXY?(EEuaw833`LDzZVk`4cfyzwM-Ud{S5Hc%aG)1Nt&-W(E3`HT^jsUCeoMGo=)|q;A z#t9mGPndHu-1*9~5eX-5I^PpkhN3uS1A|wGLq>5k%$F`_<*hxVBeRmGtyr6H-VE~$ zMRD@bN;=L^)XGPE-DbT+$l&GxDPy+8S^0fF$nP}RJ#pGOCz|hjG>neYrnS>M$) zLs8aW(KCc`xE?OE9*#bPH@(?e*R*S%n$}@_FRG=h40o^w2&ihUxk^T$;@{Td3W7(#Z`0tOy17R3`MC-NFhUK zdbLwlNi1A*haEB$r74Ls6lF5uE}Y?GFH+UYu$vs*(V)-Zl+O0&AMa0#VE+i2Gncq; zcE(9AA7zH3kU@nE|2^_=k{!F~nN3TM$n45tGxLeX&uF?AWhD$nschCB9mDRQI~F|| zv#`aAT}1YWO@77Maa&Dy6uq7rhWQ|u8SB^!#Pp&~#&YMhH+FY>jm8FrJYe7m@7|g! z;xLrP5of&d#%7Irv2$!F;&{`!FVJ1&W~vmWal{#lLVl;%yNxrb4PO^~+lI1oV;PxNp)w+rs$ zc)L+%?aS`t&<8UTncc9Ep(sXYyOk6&iV?@J&lwF~Kjb!lkA<=1<0GbfnLe@e9*Z&* z#dx*lWxw^eQsN9nG0L2N_OuE{`92P}Yp{7`;r`d%;IY)^7PHECeh3#ETgsrH=iUtN z!F`;dbhUi+u3X4al-{+AGZe)*Xcpc=hMb`DR?_Td5GUx&o+YE5-5&DaJh%aBDEeTt znHe(7@)x!f>>N9~H$4#_-v3aBqKJcfMcs`v6lEs?X&)g&-Ym|zWlGQR!RVj)yQqu? zA3B*Ak8!`%+mtOc6om{bWH5f9HNaYdt;x|q&>qnNprx?&d9ImIhN4V^&^1HDQif?0 zTH{cZ=`}!w4DCx;L0Y@h6w;Si3vTUwEVo(;A%lB;v~^}=%$BSsYF)Axm0O`zhN76y z+5NaULs8ahxj7dyTsseLvRZqlMbSsmGcZTB_TQX~wzHyV&PfkPpP>xeru8vlJLle= z+3Tat)9zr~9lX}QL{S=UoS`U9RmhOpl5eTDcA|CJnu@mBxsFnXqL4wcRtp(Lz4Ceh zY6IFD+P3Lrkg0FBE@{>)&rlRK5xo!XJY?AE1l|Z_T%tWQH$GFS`jzMNjt5}QbmhmcNup#%gB2M&rp=+BhFACWzhbs<4}~ATgZ^n z!0Q04_VESH8b58*YG^PT1UCEWcg@yh$k6eeG1V+~GPYw&k@BHEnjO&Qn$yo26s5Pj z;|xXF?Oa=Vb;ePQ=NT4Bbu~)3tjW!iC+ld~zMW$Yku_(qf>egCck>mbvkv1|^puIM z;_16g2SD#*YxR(!C|j|jpNTURWvQ~e$enSxnm7}k4?nCYtv<}X?&mBqq3bmn8%h6i zZ`5t=tTp+%+hnMZG9DXwPC9V(dg)G6CX^V8;`J#*g^d5)c)8iXs+-j+)_}0F{Kfu| z*~Rkf#F{b`#hY7{=&bF^P!wYcx~#4liekjE78S-pYqAz)+8V-DhKAI%GvQmUhNTQf z=T7~VdvVI^6Wv_STYR@(pFCOL&dD0w+uW-H{>7<)p(tcfA*0vN5B96=qaS#?{iOZ+ zwEf`PM>-yNYfEk%a({5km9|LlSaGekC8j;nG4bKVeL-a?3T-xwb$^qT7{&O}oLORd zma?LsxAh=>JNHd+Z;m*gp(sY5g)=lPWiS#|$Dt^@$3jX%hMNJjGwN`P)z)gvabVjn znXUTrm6tLUWwTdMAw%Yg-r9oAyll=0gZ|Oxb9uj8%teE7P)D*jLs2%HEUyh)ZR47S z1q+wCsIFL>BMvjm%vPh!)s>;M+UCxW*Vbx_(z%wlm5`w*om0gbiqdu$GMI_k982Rc znNdyWDEVv6Wrm_u&TG5W5^qn&RwhQZHv<8IK$tdQc-rkbUefYM_MJ-RXG#k5`b5YMw z6mwB4pO7JQ(V+Ly{=?c}zVcFrqO3jAm&6&0vR2CqGGr9vpl|24R-?YsicBwND@)v) z<6zUCzG=CXVXM2mwln(EFS6RE)!K@lHfU|d*0rq+MQKXn3`J?GLWa9}Uw^uOs-ORu zrigZ6GVR0cf#mI@ilHc#bH=5~7YQwvn_I`8{Prxy*EI$VPuZ_S{=?+qDen8+^hn3* z&b?MshN6%c{Na&~8(SG}w~{zm5i|2*_1mMEg|T)<{_B?i^X_N?UO68o<`{d*618=&@e-Aq~hmXlH?4(;h3$J1*O68n! z-0`5MOIi8v<6yX=uVN@l<$UC%&RT6$-K)tk=v_?@oA0ZY8H!RlkE8tVE3@sji+5kyZ&}O9 zyyA-cB9-sHDhjz)y!+b8C`vaktKwu0vD=!QRM`qSPgNB|Q7SjfDx-w?<~9z3vT+yL z+*=unG8t6Jpzd1AxJ_!ieaO??yG!f!$!}+xd$2yw6!o`13{2XVYHwWm^?uErzhXyG z;!qSeQ#s?cYi-{y7>eRPxb9$9r>cyqX0WccTRe=lrX4bw($$qkz7j4o6s2`OeR(I5}h;4Du$v|&ht_3 zeeB&&;xG*)adgfTm7yq;nIVM?EvsK&I>fgq%7n8~mUG;#4D+?Km6f7a{qdA0DrC4+ z(KGllUFWzaGfxcXyHyNBSt*1J>v>>Kxa+mHWt`QSF=Gx-kneKumm;5+z3AN^{PHk2 zs+AdvLI%~!poA$i)d85y7qohue?j6XGZdwA&RG4&i)W25_Vsb-eGHQs2le!KtyaZQ zl*-MqmQ}EigSn__olPcH%(d-ZDgSC{3qw&VcjlaOvhTrIG`jd6Xo_|$z6b7U<@Zn& za-;YjoeaXa(Lmcd8qcfT$&nfEwO(z_dEGUJqR{nLGuY>}5t`A`%F1MNZhdg^1uGbe zQaNW7De~V#brvR5^KG@1uW_mvic&de&`Xh%;Wg>~bI0 z5+{#pQ`F8$?*603{iDKEDN5srGb|tPIQwZ>Nh43UIxA_GTHM1p6s6(D8H&!!Y zGWR$GA7z+)x7&{l<1in>WiCn_%!AB5&cH_*CNJ;zIkl|Jhj5v(5(jfCbB{CdQHIH< zdp(@SVLpV5?#<#b_g03DOSC)2C2No7-r8yvWg{7FqH6{z0mT{znR*;&C<==gFsPMr zhN4st6K5#O&cIP);tWOE`8&RUoS`VRs^o*O8D}WUz93&M&QO$o=Qu-A#-_%^8H%zL zQjg;dMOi7(y5bB)SxM98;|xXF*Q6(kGZbYthW;_mP?Xh5dhIwvQPw^fOX7?w6r*UI zVLqU$X0NTS)==-bd4kP-K{ef5W-^Mh__}6Pp_ui><1p){+y8Wl2kb3$=2VBx_^ogA z%Qp>exfQo&G^%AI>GtZOeF_N@QToKI3)ILO${#a_-={g+RC zO`K^A>XI_ds!qt@^~fa(d(S<_q1%;H6k~(;a#nigWq)t%a%&GaPgI7Ykgs(w zJ$B8|u#~Z76!sRtd*v*e$VsmpOy! z^h`!`$0-ui0p|AM$_z!R+|+VrrWdtVi-yi*TCj~ix#o^jhGmALRL&W){upT|sl`<4%GN_Q@UPACTIVQiiex|pSN4&q-?4#>*I+CY{dJ7wN4;s^koeV``lVi-5 zb2=8BIIP5Q-!OAD{|bh^62mxQGUEp;{mwV4su+qQA0dMo0J%pqtm{`~_Jofv?5eR& z$k)zghN5g2Ib3az88o6%`+kbozv?Yqli6u7>uLE;Llr|&D(4Kh_mR0B4IhWv_c0lU z+WM*0su+r*+(HK7+a8Nqwjp+tJzL(N^m{BV3`MD&=fmD5bsFh1%rs>GQ5&f4|;j~(svq31|UCRO$| z^Hfza6s2;`D0Y4_T9xf*^9@Xb2sVcQOt*VbA*BKUvnt!DyklS`|Z4D(5Q}PPTDgjas5TfXTEEvuu^Ok1B?uRL&W8ii0yCXg_$tV|S+`LC!w> zy_cDz;J%g9gml`iHHM;)L4^#`Z*2sv0rrS~_kK_RJ-BnuZE|x*GwHsEF!*YQGMPK) zEewB8pHX_y=e^S_*SI)+-u3M(9I>K5i@_ODEFqZfEgwgdp(wps9A_wsZ*I3i;|xXF zsr#-|r6@ar+ciT`dKNsMDn;o@@;F0%l%bZ*!qQcgtp~|RoS`UNHFnKVl%Cm*$Dt@a zdmLvdO5dN1GZdw#%Hs@0>3RB)VduM8ALtGbGV?^vCo*3#-FxSqQDZ0yxtr6_hm4Kx zeX;$!{~emq7WF2Z$@Eux^Ua++t6(Tf<-GUt?L2Sm8M7rcEGrbYMTXy#%ZD#NG%@$0 zXDArz1KSuczdJZVKSM|%Lw%HiO+aihw=&d68N4xrz2{bjqBuursVXtVGB>^2b#C21 zsIc#{#hAyMGVbf;XAMe>-N!!JxU+a~8yS>^guBam1w&CPS2HYj!Y!vN&ahOK8Qc8o z%8FDe3K^8;qhQErfF5qfC2OY7I?cAp7p--^*K*(G+;1!IhL2R#Wwmjsq0o4nT-1_c z9>>eZZ*R41_L9?{p$Rb=OZmvXb9?%dDn*$Ls)A9}UG*t5uzx0T6bwaSr{7S7WOAMl z)|-CK>Dt7vR(&^JyRe?~zq8))?;x?4ZtkrNMXB7$z#fEJP-hOF{q**8IxcG;Sz>6{KiYJGFgWcuCEf^ro@Q7Y#>wP}f1Pcb)ShP<8|Wsq6D zAhX|w`wuEl#48FJRLIa-AFY=2qR%+{|Fl}SP6WiSQ?tQ+9M4dcotiB%k}v$pXs5f(xIc8=FCOXm=)tl6E)gg8K6dga9Z$^q z*132J!BmD%}z<5{g?GVib5VeX{8E= zqRMepGf36Chp*9$!%&|6s-6W>|`1Zufexs(f(Aq{p;8c14Xjw_mc`|N2*?N>Lg|oS`Vq zN1W09a*`flJv%Xl}1{I}oU>~xYp(xEq zoS`T!-8e&0`px4EMQJ;aGZaNzvHmK~P}Ito_xk@}DC*_w)@b&REpasUKFq1<5em-X~VlpByg0g;PWLdpf%QAi-GdknGwA14H+kgQ>QOKY| zMlqH%r_Q+3K&t-ic9GFQ@oMOuZq32&vbpE^UxdTixz!i73vyS(jkL+E+y;cz25pBE8%(W zL>uSUSf#$>WKN{vexp0LmhUtuLs7_}LdJ-L zK3W(v(NWhn+$iZYU=MFGX^h(|YQOy;FAtnH#UB9;qd7lnr;C!l?{~{~PxqazD9&hn|9rP>@nznd6*3g1al{#%@mTqm zZrONuDnwD-R@wQoZrSS(Zk3;CY<`cQtn$m`Plt8OR@*3RQ`Dc9xj0#7t8Uq{-xjxP znvCO?J2QEAscu={b9YM=_1$?>z5Axq56NqLlc6Y$BhFBi<|EEfA7#+eNbLyMHp9|Y zl$LIsK^r8jEnQ!tD0&Rso3EKSbFMzhplwz&)JGY#;A)2YD1$jsHA8)rfquW5fu_KG z6h&LXoe~L4S5X>AoS{BdjP;#1I*h{@_$Y&U7pWTQ_Xo8Ns*f_*r+_iW?KFmQsE;x@ z^#WtCJMkSd6s7el&QKp^a4v^9e&@$?%}0PLdOJT)j50JV%8gzP20L5C@w%Hog!xbu z{9Bp1xr1?-3B~2Xk=W&MmC<9$4aop*&RAD|8MM)FKa!%J5XQ+=d z(EC)!p(sk4I8Je=sp1UvQ3jf+>at?L79V;U#$9CE9ec&*9_D<53wCb$4E@KTri`Yz znsL**=Xf8&MQ3d&Y)vA!_M(c?aN`U`X{zE3MQLv13`J>K#Tkk+nSN#A3{cEbC?9&9 zI73m)USQDU#2Jc0Hw}XxC(ck5vwIlyA904FSWUp7H;6M7rS&z=P?Xm8I73nNE3_yq zdBz!vqL+YyCC@lRQM7p&=y&4`MbUy6&QO$Uo#SyRijrP<&K1SighB5Uk3&(^7#Q@4 zafYIF<{f7!O6ToyhWaRDg`eiVPwUL`m-}6w{$g;q?9@;DC5sNez}H>orSDz->-4s5 zx@Et-qg!b-P?UxnXDCWj6=(eAo~u)PkxfzhI$PLNe{=nB(*BQj%ii99#4JUPUG$3d z(f@YK`t5jVX*HoJjU&!bl;$JOP!u-_s3oj-;tWM`3Z9kF40p#MWH?=h*8#AHN2_HQ z@lMyak=cVprv2l7q^rkXmk}@&g$ycWxLL+X(*ba=bfA8kRB&2B?tX%c>|ZcCa|hd1SGJh1LKW?WegHWmPcHm?}!;N=8O6%1Iz@ zeIlFX7Wzta5906)MXB7$uv18!1Y~B(Zs?9~L`G&05}DZ`?)&+fewm>tWKbbP>lO8f z+`i)K6?M#HbMM!3E<;h&F&LmihSn11B6bRe86fh{iy0ugzWhXrG8Bajs+FPnK!;39 zo+|8LnQZRe+}n3y`#`&FDC}P$g9;gZ2jbyOCu6Oh7C@#Za&kc1e{RQ18Hz%-Uc!2e zR_!@$ZIwdb&aOT(D;eB5HQmZk6f&rgL5gTqlrrB#&r{oZVRUEao|ly}429m<0znDpV^&?#k48P4H!R=AV}-_5E6I-QfPh-D8vBc1>MT+_ZV_&^aCV{9!Nu znqVh`Qnk^5Z)@k%C|%?won;$yFV2w(Ls2HLF?~{rLG37NN*#T)g^NrZBo1ni#qE3Q zfT1X4I}g{%u<(hCl=S?`Q;q%HJ_j;)3D+x5R+)RVCi?SNWmJSAr}QlC#}@a&Erq!M z+uc{h-NjMCAh+dGh%>aTkSX1+;~*@0HANwlLfl(ZWwBeTERHxsQv#}$QQqyNUs}58 zedw={saLpvr{Da&ME9N4MILOTBaUbhP&N4$$$h$dI$ng0nS{1X5gC;!Hm{80zsENqTGR(cm zN5Np0p(vFD#!T7!08EYdg{H@U8juHVHC!uuMM5xu5^en7j@8*()h4qfT}VP`C@jA@vK|t!PFW z^1*HC$uFFmn0sDJjG-uOO-2~So-?W9^ryv+Y^g%F{JA(v3`JSaON^r4x;SRi>o4oh z!#r8s+Cl!juvvqAZh235CViCo7+V=Fr;2CN&SBtVY-D8&-dcSs87($B zuruMqaz0JAld(C0`(oplcpwsoLunjw1~w~}cVYE(wl@@ojQb(Zu0deQn9s_^SZm=@V>o~H!%CZg z=3{Kq4g>Zm+heiWlCOytuBIx^P##u3%^Bhh^-%^oK;rn! z_HmkVD2h@bj@8^AOPrxT%0M$o9J|^+PBRWgQ3}NIwbL`i8S0}9bO6NhumUlK}8XtxrYozX&iAz8D%+-Gc>p5 z(ydOFqV$``<4_b@HBv=?9%m>DO&SdP^Eg9M=qX{)JI5J{LgNX8zBbNKl(wQcLs8lW z;|xX76VcA6xZR~VLs9fA3uh>bUc&m4cpQo%PcZ1=;tWMmZZPO~;|xXdZD24O#2Jd> z`@>+2iZc{N9fQHh8E4S@fMQnML=|>x%{^?jifYPkCQG|n2*aT?RdI%*XkCQMEF;cP zpDIS{YC=&avlg+Cat3Q==0E&{V$9glode+P4>GqdaOeE?PX4@)G8Bbur@TXk*$+Y^ z%s9v`{`+0+L!LGGCNI-&a9`PtiLGxnDhe4?$SB`kqBmeRLF*ds(vA!R_k1Q(W+)07 zRLEexX=TM6&dLORyX72rE5kt7=U;0!6bvifkfCc%^)dOr;;ya5?dq3dhmueZN%&)zW9jY3t=b< zJwpYfQ_nCG?FaXPpLIGCle@cJ88jj0UgW&Ui=ud^160=x%4%I#y1Nvby8%v~T->2B z_b?6^hT_(R$&_vi+!9<#=Zyl@U8aRt&VHt%RPJQRXi#UK!02^@vjKqo?5DYWY__F$zu%Q%FdBGmz7qm1@Fw@43psfwXK%HZ}8 zIY(O`#-S)=Lxl{=%4!NNiri8@d>iW37E>np)i&;v{SKBg6lF3f3n|XPhr68v_M7g* z4H;Um=$%OkR$A$`O{S+t9@ui8K~W}yYGsgf@?$OPZ?6A9!$xkY?VKne4&3v)YYatk zU#*(Ky(sd+Jt=emDFhH}l%X?Nrk~OycVkJ<+&-KO-x!KQHdHIaa?YA#b$1t$)6tBB z$ed#4Hn6#eWkowMA8yW?Z0;+&J?N03C=EBxP?V-B&QO%ex4W5s$e<-r8!0dPS86r4 zK9RX)h)l1I`!C%{6rKtzqhMU_P$9$D_TrnHHD=m2dxg|KWcCLc2c>5y7-dwPL0-rQ z-Ra8AbD^Y5VyLoFEY?x|HW-0IHTnP7&A_Jg-&w|6T#}BdM?z4PtFEbQ{3@T)p)jHOXiQ;)V`(9TF$pxo~K_waitiW_y+3|Vb^ z3mc45?uWp$$FmE%I$)G}p z))IE&sIN;F7L%yQ$n2isexg6KU1lf>8B`0y_dKq)_?P9bn3tC*GbB>DbumN6eM)(T zJX297gJR_DngNO#@=f2J<--jbzU~&I8m-et0D2sg!_hz)ibCcKwvHddsH1_RCYHY- zU)J1<_K~N`+YquZsNX-%V6^mg$+ZvUUww4CZ!4@=%sq@leU!m!>DrTAt#l!U3~hrO z_ZX3`GrqMwh73jRFmptDZ|{XM6vb+i?_6&4VH}ELHJRSEFovSATu$%PbsUP)@}Xa` zJ|;|+qO^45j55l;V4T5R&1wm=Gm~+zu2+g;256`XM$xx(zMXLCKa7p6aThr+7>Y8P znjbQHO_}J&sEzLWOXK2KrzWR3y;!dW6OvtP=O^ez?^}Db1ox>^=X9*&+-o&uC<=M+ zt><)nw|$u*Z7}2hAZ>f9>lu(~6Z8^j>&-p*f}Wu$l{*>#o_d_0w-5Z|HSN6raKqTo z8rQk^A84r$|KhX8g2$fnZ$T{e*hh`q{M#JL;6{!4D1+NI-B10fvAVw{q>Kl)ydvFy zz-Nt@?mocZ!7h-RMro=Pg>3gq2&tN(K4k{C6{_Q~aAAPr<_jTpGRB|sb6*q3j`(T&|DL=cInLF- z+7g$~Uh}OBlHc}wwBtuh{c`r*f4VF=!MVS8#=Y+3fHKOcOZI=XH5rfNRrfOb$u4%no{1M61$?1JGIW`e3+(LQOIaTunF4w zJuIwp9C3!_5QgR>&Y+HBX+~3m%zfV6GDSHb?DpWJC}dvFI-w;WJwHD-nRHzKW|X3y z+-yp+)`|VRwfWYZTUZ)L*9=Q949jiT3`4=Nvg(>)C>U1TyJi>)hFMnanqerchP>vi zxAJyPi6JX5=G2TCixqR~QO}*`WoF2@A6Gf2RunR*kl{wPnWubxM1A5NX*=`UJFfh+ zal@V4rpI>MJNfFGPaDq;**3);OG+zVuysC%Ycdpd>?`{uUp(|_|)oDr1y z2Q#D>inGqh@45Xb+{p*-Zse?BC`#pO2D$y#tz|7-lX2fFw^LM#gV+saDS_QJ!}0;c zQq?uXP%xHsdj(y`q4PEi7lzCeOZlJ|W&NrsWZZkYyAG|TYhh_hx@KrfG#~Le6vZsu za^A@h3ubk#qsYWZ-Q^qzA$2%iR$#%*GZcjkDrA&z91>O!r&U420t1=zOr3F*8H%zv zLPlBd1L{ntfzmi^J&1d&1!ao^hNUoMoU-7s`uw|}@;k}XZyA?vH=vL2Urojyvb{x^ zzs*s_P?XA@?+?0m=q-P7|NQ0sHf^j}+&_P4#<0fDTP)kgZ1BemHgzu^m+zl57yZvw zn>DT~Zg(4s8{pXQ-_E~YNAF{CaGU%M=d-4>rKKqJySUd|tcxj1Qxa!Tt1T==;ZCX+ zxE{mL+ncFUA7!BTvv&wWhWaQ2Z7mGmItUr+qYV0d7&X`DhYU1ymJei0J6ct94;kvC z3@in~pwvSK7R(5jFQq7~j`3wrtF&PD)Q6ikdKDJT4231Ft$({|<7)THTo{LjrE$a= zSTOs|JHr}}6&B1aT+YKzId52F)rYDqn0@x{CXJzm1v5iob?lWbHfi*%v|z?Oad2V5 z%uv`6!+q;Y3ucDWl*Ac|(%i-w>Z1(oNs+4Uoc1d$T}5f>#u>~-2x|woGo~m`S>Vnb zK8!{OEn6^Cl-80sLw%INzB+O6%5|73MUf}#ui^~# zQ3hv+iG#Pd!#EU0DG&#*#B{-su#~}gP8=WFU76-+peRa#IOxyg4E0e4V>@x|Xm@3r zaVUyXAPz==I75Au!JL6O8n#E@j6+eB4{`9iW1OKr%0Opb9fzVQ1>%_DW@K@O`Y3}v z$m+6E6s15M%egsRoS{C-V4g@Et>0Wxlmc;_=H_j2hWaRjnJjU%)?GzW3KmD4p+3rB z&OjWkZBS8^f|XUAp+3rBzCs+WeTkwd1>)eF#~JFQ3}#Wp(b~f)ic%mB>TaBYR+g|B zy_nA-)1RZcHTSSDQIyH_!3$@A(v-v*iqd?<8H&=mVVt2Toms{iSopK@!FHdO54N|E zTW1-H!gk-n8H&ON;lde;!rI@$8H&=}#`B>lEvq;~QM&$!GZck|E?Y;%8S0}9td3C% zt#eUDVQFl&?>A{Ye)H{ZaRxTe2#fiyqOhL!`WHhR7k=8WG}bCgpx10SgGWrkl!5fgsirFvOw*Wo4FTOvV-tGIl?(M&shB zU?@uEY6fBPvYdvCjE)@l);KJ7V^|zrGYkbAD_IMVLs2R>Q^l@~Ka0$l;;T(|=RHiO zULjw#Oyb>rK3W)t;yarhXDAApn%H$5zj3iM4k`+HHJ93Ab(gn|WH3>`|8gVQ58X*(PM(>}?)&v_w8K5fd8R1N zNg1kwQM3_u?+N!(ccuUo@;=4cICC%JC>T|!t{E1`yyD&j;UZf|l8+(|%ZD;RRWOR0 zXt~vtAj6;(kb|=Fr@}0^7H%cOj|A+<(K-hV9MRa_o#o<`ugSPCcTT%^_i;2C)I{@9 z6n3$uf0I-&)JGZE#d`7NDu((f1G`xCU8FWlmHH@y7jNm|S{dr23|>*Ahihf1k1}}C zmma*85ul`W;|%rD@4-96^r)?IC<@t7EeyM9k#Qc5Qe4dKRC1b*Z?LPgV8%?=-1BV$ zz;3PWT%xnw`_ms}pSZM}{6lxv06pV^p548B{@!+(p(vFJspw0Jd~mMMdP`2}nan9Y z>tjNOqD-du2^pNWx3l__uB@e(e!G%SugRopgLz-i-u|oHJ%4Ak%utldc|N!|VdK=x zqZUg)K4SXpZ(I&d=3EBxU4QJ&-aWrJQD!JgWkPbLJNd9|;yus!{o46EoR+?E^ST-D z)S65!S^D8K(&3-?_wLmUMXB8KHhKM&WZo#On;x|EZV56L?2x%-ZtlhRDC$-jRn4G{ zQw#a0-BIIgmBOfxOdGT{b+|rq8fgCJgsuoZc^tLp5Hi zFAEu1r?m41$1Ju?+UMI2|7}g?3obZksr2=w?<&4|6+=-f=imH*6ZWj{{gY*Vd40Rg zF6k}z^!9y*$$UZEug`miDu$v|&KXC~`fvMnlMeE6(C_X%dmSH#$uQm;w`F?o*SUMG zR>e@1%B}qsZSAth{y3Z5j$i(jHj~Xg&$*w&6+MHZOa>J)W`8iUKJ)!SJ|DeT-yz+4 zY+hC-lPW8>JXKW;MX6lmqokQQ^3l9cq~E>a;s^bAM#i09!nKbQLs8c|2BlD944gJ= zzllS#wT>KK*S3ay(1bZ1=k))PZ;#Rjg`urh8I2j=_|}|TH?9doQS05XSescl4jJW} ztk$A*7l_dS_qF}$gfhe0o$gJA4FAoGzJ#3y!aBXUcLkdr6LvYwJ?wpSZ$kG%LdFI+ zUDfD)^6|cwaEAWOc>{fKY4S&|mfV@_m>zU%?(Xb`S1=T%a^8#D7)bxl&JXEbzBnO7 zKGHK5(Dm?%=hisvPdq$M^6h9cSQUC{lRN&zJxI zU=Ta0QU)bbovJeGi`|#?Y+=Zp+DehIu**sck1B5JAs6367>eR3K_m{FUE8B z4a^FV$=DNOr@`Ede3TfVu;KtJ!YIm0PY5Af&h@NOSXO0J7mOlR%sJW3U>AUSso8Qj z_hN5CzPX}IZnfFZJdyHZc8Ok$a_7Z5WZuU?W{!$GFDlh)Wrm{c-KCIW>l?l#=>^4G zeQ45|RKiDn)4=aRzs4Ei6TGbN2pT z`Q4K+4n=7kaYpZzH%=DmpNFL=v~A`d#(_R@y_Iu@qIlVU*MC=)m7+9`I73mIk2s_I z$32^0YT7%!67KeKHwOzMj8XC;bWyJqrQyaIbBFdw7F#9{>pExU#KLXcbcJNE$yGH` zQ5tTXap&CSo3&k0XB@afqBbp~(r+GT zC`#LToS`V%iuG4K*&23^(+`>dV2nrcJqq&Feyo_2XqmHH#J7>E)ts`ucap&zK+=DpkiXw%E ziZU|J2%}Hn79FzPT|4-nizMHCp1TKeWMc*`l3cKEZl_35oKHS+T<#t+6s2**8D*5E zs+CcELBGRmFHX_Vn-#gqZV%Gj^Hdo_QEGQCWPmPa0lr=_k6yeuCqaLOOufQ=U4Oo$ z%up0EsE}dd!$eDNwGY{9A2SYf5Axv|ic&dbSluNoR-?ION@R(?#FR-QB9Ff}tptb6tkiEB{s_r-E*DXUx$X zbB+j^Svc;zb`;Kc%P1K3K2j&ctqFV{nDL_#qD0d|JH*R!$efzSeTvs?ml=ve1{E^O zYXf_+j+s6(@7>Wph@<)5oo|DzCKQDXs+A!tNN=GD)EdR9YvMp={fYYpcEioqoSva5 zWKbcaY|YABFmvU@>0hkx@zNiwRNQ$du+^HCqL4v_jH1Q*+@k|v4R}wX13>2WGIM`4 z*U99wG0#8;U?_9|Cbuw}r|!8$cj?B@r~lb6f5r8*PoGQoE^g6XbHoejTa~xyZk_(m z^zz~souRn-MxM5*yhZmr=d*foi_TD-RmHun@)n(;IG<{9#2M5d3rkVB6H@+?nJe99 z&eca5)G-*mgXVjNCPRIc!8#g7Zlh7-P#_H+kl))JGZUwW=BF zqYPF6)eQAf1}lJShWaRj`C~PM8Kn6rinfA#t|`(ss3?si&QPB+gD*HDKO-!?4-E5B z2B#r#=iT4%d#H~x*ze;#M3k22VyBaShZx9BWfN&%S>AkI)9 zWv~ZH91m9BqO))*QDj~kk2BOq8O(jE<4_c(Kpf0{;tcgs26Lb4vQiYKKpZw(s%B_d z%3yW|qxG9Bic%nsQ{1dC&QKp^FxMuI*1D@GO2OiYGt@^J%o&KIwGAqYQn0d$Gt@^J z%vXq`wJ%YW&UfPs^-%`1DB@`C;S@zFkPqr^oKe>NTYt{IDeLpYUX)p%p^!-ly>r(L zLupFl3`J=^;tWOU+%V2il+G;U3~td`&e`p=^5HfY`D>kJD2hG7g)wwtY^;tcgs2KU(b9<6gxMR9lShZjDZK2zMHt7dSE z4j<;b8ZI~7u07=G^pa1jZqZp-8b_R=C~ncc)c=|EhT;}oXBG;*yC7b-WZ%Ox6om{bWK93VuN$*JY|lo{TRl7V z!JciSwwlwi&yJfWyI%5xw(sk6I+ovcljMWNzZ>=YA){w*_}HdyzI)z=x4X6eX4!8i z4$U|(##=%?|2#ZEaU#v$7^>CQnKIF*3M-p?U2;xp)-?a!`?Az*X5wzvH$#S^7TxT! z)a-JGjQKPE-kALMDt=FRhciBD8-Hr|?9DmXB)y;gtZl`=w(>iQ+mo! z)LA3`+jh_U3u7p1(&ult9d}Y5ZWsqM{nt+1um08C#WKo$mvg&k8_wS`+2r&Ky?oym zJ9$mfW+L907T&IGu?@w2$Z*=$L#8KDtt^4-eCtc;K-rjOxc$QNcirVFm zyZe)%*cuEOr+w$GY|eao(;v03-{+!a-Pzr<$GaUc`>35RO8UOvE!*AcPLL0{v3u72 z&wINTr402^#!J7rDEaqg-Ls9J9#>+hk22QjxG1^htnS&cO~;fN>Z6SFKf5TIJ+*t* z@8fMs3`L=t`2P8B+2YH*H!IFiA7${yDZTcZwfteqGu?| ztS`nH_$bP(FNO>~@k>g+a&{Rxt&D6o8o!)%c8Wbq+KtP(oDr@Z&y%Tg6G?6tJ(jvrU&y|Y_ye5B*j8%FpS(s&i`GAHxa+S4~Y(lK`QD3_`- zLs7`PIaJ7SvkZFCk(^*=jl&yxIay0C3OW+b%N{g$ycWNZs}AgRpo>nf7sy zE79_+%0b=r3`NuSenj zi_iCVHL=W46f&rgA^FHiyS?s)%!?7c4M(bQ=l!@KAD*EoWPN2WXB0Kve-mb2S!pC-+g*i~k;#PD%2SI%FtHe|vh0MPlL$Q$??DDN)ov4&6Wfe9WTR6D2am3@5L zK zv=znUP?Wa8I73m}Ub;%U%t?9A5N9ars4Z4XH~VTWU$0si&DFM!6RZIlWmesBA3yro zNaSltld<0EJ^UDT#FV`P)UHRa;oT3PzDM2$n~cHZ*JqBQ4mhWaRj??fE6gLf&#p+3q$hH=u|^7l|5Wl(!y6!+C6 z=jx*jy?q+iD^|RO#TV4oFY8_0TWd)bimw)Dm=CD+YwP%M`D*6g8i%4rFSmwg@YNR1 zptdUtHZ7{Pee~(m!~4*p6!qBaOL=!@fMHoFO5=z#6s7ryGZaM%`3BUbIHQb$L0yV7 z@G;aG(-zD^rY^-9isDWr4DLI}8H&={7iTC+>u#K(DD6e#3`LPb>v!V}MNtYcnCZtE z?6@=krLkLx5;6>vN@n=JMoIrdV_y~ugND5I(wvgY)b>v@BGlGA^)&g5-!WLB)W z&vd)Jt+wtJg$ycW6q*UYK42GM_&wdTvzFiA?*gEwym9Tlyo~$h4?gEKMO6%ZU@HUp z)CXRuV3<#tfxh(I{a&tMm`|C3j%>|wuT?P6SR5KJs3isQ3yM-_;c2cDbN~AiDG723c>`q4c zz8ZD3e{sW&nuyGfDeg;G-f&YCGN_OtT7#MB+m~~?g^P+k5A+PHx^K?z2{NzFyVC8P zWq5|6coos)I73mqsc7Mb472%RZ?clZ72U~2_MpiJGCT2BBCW5uD#}VBWJo?na=()P zBP(uBnr!Y1+}>1>^O4-IG!!>7kwH~3^78WUl3~~21-F76^m*^}$~7)dpLa5Ag9$4* zt-7s*n>tHQo-H!*y9Zz}mTZ6SBCLf*Hy1mFpk*dSbnwXeAK~V?w zI5hcu+Pa-9`eq!8(m3LbzGKEGk8Cp_`V##=$NApPrlhDC)L8LsN4P8H&<4 z;*8q|x2G1nqWZr(Iah&$QJyI(ZMV-9afvJ^Y$WWBV5oah$^ATsfaKePtzOACR zzUb)G>Oz>RN2i{YT8&ebYIj10qBM>;L$zv(TJ52I)9Vfpty;6TtB*4Jf4OIR^s7}2 zMQN(y4E0gQ@P~FtpSrWE4XTeadi-OH^vG|k80w>pXOiLRC7TbZXy@vqjBMcG^gsJl zwOaL2#=IWuB-IQ>X}yXw)JGZZyA4d<8&;JM^-%_QN!R_Vs;tyU8IyJ&k+k1b#ZVt* zY;nXE$tLwGhWaSu;PbajcK&Nsy;2`#aNBX{HdPGuQO2{=c1d2JA==tzZC4*Z6P=Zr>qc_q}y=Rv%^PZhx2$^-+eN2?!bLql^__8B9@9JT6RD<{GJN0V{u^2;T*W1^@*A1|HQ?n#&`MQI#yhN3j>afYHa=W&Lj zUOZ!w#Aab}Mz`k|O-!ddxBn7}X@p@1y6|RMDN4hQGs-ASRh*$|KWNEX(sR#zHrX}9 z(yI*QU~i(C4@I4~`qyoo-e4};HN(PE26C`t(u_k85Wi@kZrdntci;H z>aF>0`+Shc(KW-uQU>ze%Vp=MnGZ#AO0V~l%lfkFnqgrn19^?9RdFb4%7jHzi=%6X zg{2H+a}Uc(QLn$cWNKvksDn0Ml$Zau)Jf7T^vOr+dIr5!&yo5XFvWu<*4kFjwfcB{WN5=k~U+D`(~NF zHFx*5#88ykSPL2G8ORGiG#+MQoHH6GXHTA!KDJ+bqy43WU0EqZeU!mDYwW!?Ux{hP zp(wNwh6)+KJNd-y<{N%N?q@D}@3zU}f6d4d&G4JX4g;GMN+2n$x#96|fSobts!S#6_@XJ7T>CF>VX zKE&Ht8s=USIPr!&V!vphzcZ=~MXfb$Lb}8m-Lu-=+jPO;J}_bJ;cl5~ zxN2{!R?|2XrE$a=irV>;!_rZgbkDwdeXGExR~Uz)KKbzQ^q6bhsCLPgT`&|i_TitU zAKu46Q!fl7wyI?4)?fr@Wuds6ulA^l8_#mKSp`xM~QG}IU9)f@Z zvh4KCvdDt4$U{VV7(pWnBH}6vD=G*CEuy>>6~(f^paIGkHjmxu8I4)TL_<(CDoZF8 zv7%CFf`Nz;bG|!$cD~y)J^nFOw{CyGxwpITqx<%`=XkptTBbU_5i3Bj>h1WgUghDI zsgV_h2v%VoZtNK+r&@|dQuukWihZfs1pGQj`h8l56-fOijIWmbMHwU9$1=i|89U_m z_svd4I<|_AbY@uut1wo6B*e<9O6lkDB!@Dv%Rk@OaFk~gh`O-sf=A2_fAj-b*1+zO z`viLJ(vnPmCQbtr+SiJD4sl*B%k(>&@V`y;kMu0BV;fPV$NRRU7)xM#e&u;4HlSK& z`UI<*&r7>wM3sk-YlV@H&z#Se=aopL-@cZ{2H@IRSEXQw_<>x-H9B9$r)5KrG0OJO{${km)F>RqQtk33xOM&2Io-8T1(=nNsY zuNm&a;{S$a_3q5I!@Nj@306HmwXGq#%pMjX%srR0#<++tW3Xr}^JDP91~MvX?CnH; zmDw#DBv^$sR5pSC7Rp?&9W@mmzSoTtzd^C9%DpL{WYU^{qVbW!1gkU+l}+HznV)$1 zgV&L*H*QGY;QRN{H1by;pUJnLGK_y8Rl%2us%%1MP23aAWQbsWk9--`^g!7`-u2!A z-uhz;O}??3H1jM7KEed%N5sX(KiNb+)!pKm!X|Lmn9)!>SW5nPMsu&f_DRaUJR`JtoIKe7@_6;Xk zH6mRW9e8!x9eHSQfm*R@>3w~pwG-0r7her4K(K1WKf6bdo0N88e-mCSRxNE-6kT#d z+MV*r=mG?*mKL{;mP|>z(JogNB1px4w!>@1D%fbK_wR55?*KYSRrj9j=p2RbZP{HA z+;;g06M;Pq7!xydVJ)k;CgB9nudKq%sWr6w2dlV@aDtC8!F$Z?GFZh|H=JNq={HRi z>M1>(VAb|EXC{u^DC5VmF-|zaDp;X)la{!9;phSctClb5k+|c!w0oU+f(|c(RoiD? zn)q>i+I>fMpM?{wn%pXyC?1=3H~y!x0KqDx+l@-QgXUEfAb4*d*JM%g6JGvtmya;P zvAyhj&PSL)1hD+G0rv1dG3PD!le$s;SyeLnac_V8Ew}XxaoA;0|6moD5l(Du_Ne#N z1#h`mpRgjqD(nW{e4ySvVb-BQ8Luo~jtL23Mus;yy7aoZur& z;2Qo$+U}<_f^FAQ$q2V|aN1oS>+ggUd<3JN681hXZda_rRcLcr+CA%EeVuTEk1)Zz z((HD{Dva}01Jdr%yLy{5-cOA`Ye`qr;WPULUjk1y7-1vvnS}DOQq@l72(@HYq zdmOf$?>)CLxzCTnhxaz55uH!-{X6Iru;pYGr?Uj!x=;?@yx_k8@3nXNz6|PmtT$=+ z6GHy+#vU$6unK9YY@%`XL(0MXIsB=^lZvLhiPux4;Z4H#f2FG*M8NwNRPg(uY5bFG z_NxWUV3q!_mY1Ihs(Mr-{u?J7LnxAP`Xdxh2g&l|aiQozg&Rp-gUTL&; zkh9`1ZRG~3M6)H{?V{RL{e8kF@HIwP&*1|C zEgbDi)5ptNI6OV9xjU0@N5agf$|c}4L3gISw&Y;6qN25lwy9}E#lzEC{H9F4iCvRJ zu!_@}Xqz;)8$a9d54FknurOYtLnDp37WvV%eh_;F} zR?kreVy9Yu4Gh65#JJQr?pZ=cP*Vol7WPNrNRu%qJ4lyGeBb2~)k^adW>(8b;7E`_ zdHD(cU#J=+))we+0<{_^>q%OZ9pc4W%los&CCfPvRpEa%jk5C-dPHlY1n5%nkt8Er z;9BXCAW*R3$2DiC_D3KOi_E0N_;!*D{6s7eXgPk0)O&N>ee ztQsqk>_8KN*(NjN#5JleqJU%efz1Tc$VW_Xq^&v1e8Ex`W;j*Z1b>g2y493GB6S$4FcnpmX|wT1y#9(%s6petG7Fx5Zkf z&aWTXQit@?iEp`!_inCRdDBYgF3GQZA}UWkL4sAfQfLz|x_?i$tGO9>vG$aoOB`6f zBVxe34JFPUn=^B5%~?I1lkU{m15B{$;2Re?SI)^tB!8G<&f~zAhS-Q79&mKsu=^Je zI652f{1}Na!782;ZDLLJP-6#h&Q0gWf4Y9Ar?Vxmmwhm9q<5=at3G`ZF`Wrk@k(Jh z5mfzZ&$>GNuTAK453VlWqtFjtmFGdEAD8q}r`)_#p-tBt&n-bhRS#BmHSyusof$7c zunM-kh)q6Fo*D2)mcI;E!NVV7lm9F`s=|q&3X#Th2_6%%>-QG15Ws2;(i3G5ucou! z_kskg;LG5VTl<;VvP4MVz%#?LOZPU;03GBxy2I=RX1+oiqYp;#CYimKM6l|;&lWf@ zTqx1S*Y6Dw<;P~HMn-QpaX{H(gDp9#J{{!TxweBJF`WrkecZd!IrLfw^Ym&HYBPcO z$XHcF^jv%sgw2HR6UU0)Cz5~Beni`3f>pd1-6o!{9vX+84EhH@LGqL3!E;7Ax<)Qm z7DTY>wX@3|?M2}PtB}_IVH5t2!&KF8=21Q zewTz7QbZyt6HoiF*gG=(Z^^!5%ZKl6$d4Ic_e=y;^TihuR5l?tMP|Gbo1!GvMb*xd zYiQRB9v#ug_uMfe{``*C(c8tt*Pb3uGM`rDT#3r7e(chG@`<5PYKEed9 zdbUR~!7BC|ViTqN#A;E_1HG1yFoCrRNp#9t?T4wU2ot}JwQ~?FDVJas?_INr7q{*;SNEAYQ{vp$xDQ_aeY5EE#UE^+{R6%<{O`ae z@nt2e9lUwLlc!n&!lxH@QNfev(aLMQtR)~5tlHCJl80SXxx~)0+hV(?U1%)5*|Hy& z>$=}ycUe;po?J8UoJ_E4_Tv!`-aDbPiP+JbHjik<+oyey>ygdxf~n^I-9ob^X|U>qXGo~7ZV&kM&7omR;-#oY@xHQ<38{H zW(|pOf>oH$tM-5HEtdH_oM0861`unhtvoY?6Rg7ew~5*$&vW4fA7O%H#@T1iDx@|3 zoK0Y)-n3zZc`oTXr;D@X&i&pfSua8Q<%jlr!z1H8#0KqE{iVsz?A2$2Rbv)^={@%2 zgaF|`i<(i6{Va1|v3)KF37zk_7ljk7!btSt>sQv|D`GgoN0`9qlYLI)S_M`7T$&}! zTq|Q1#zm~EAf|KiIg`x_3)0;sHYD=lTcnkFgA5XSL}?}9XCglVUly7B6)-q5A zzI`Fa2%_x`kZ3SS;~BR?(ufO!eAh&92@jGtPZn)clCBxX+D`BHmixC4)ycgoDU?W+OKJ(qX%-=mmd)#3Yx zI`A5hOQ3IH1zpzLjTduxP+cruXI}d7F|Wn29mx@kha0c*BWCSLE*0-UnWqdTSXH^| zG0&T}BRRNeOpx%u;ou#FVv z?@?%1u9QgXcdGJ?2@fAh{ zs}R8h>zBC%cJM?xKU>$TN7U;#X|;*_S-B?>MZA%l=6{>qDv?j7zWS8O-#xc1n%Tjl z1gl_k8EyDBd4a^Ww29p}wn%Wx?!BN=#+E4^;;_n5Ui>`=^E$BFVFG**lSP$0?+NR zxf&qfXu0l)WQRQ_XX&oS#;eOJE+d>^RmrJijZg9-*+pp+L%Q{f`D00{dfKJNHx0&D S_7ubK)R71itm3y~oA^I^HFwnj literal 0 HcmV?d00001 diff --git a/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meta.json b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meta.json new file mode 100644 index 00000000..b8f35cb5 --- /dev/null +++ b/unilabos/device_mesh/devices/thermo_orbitor_rs2_hotel/meta.json @@ -0,0 +1,10 @@ +{ + "fileName": "thermo_orbitor_rs2_hotel", + "related": [ + "thermo_skyline_stacker", + "thermo_cytomat2c_stacker_15", + "thermo_fisher_cytomat_stacker_16", + "thermo_cytomat2c_stacker_21", + "thermo_orbitor_rs2_hotel" + ] +} diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/full_dev.urdf.xacro b/unilabos/device_mesh/devices/toyo_xyz/config/full_dev.urdf.xacro new file mode 100644 index 00000000..29bd48de --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/full_dev.urdf.xacro @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/initial_positions.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/initial_positions.yaml new file mode 100644 index 00000000..d44ccee9 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/initial_positions.yaml @@ -0,0 +1,6 @@ +# Default initial positions for full_dev's ros2_control fake system + +initial_positions: + slider1_joint: 0 + slider2_joint: 0 + slider3_joint: 0 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/joint_limits.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/joint_limits.yaml new file mode 100644 index 00000000..251b26c1 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/joint_limits.yaml @@ -0,0 +1,25 @@ +# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed + +# For beginners, we downscale velocity and acceleration limits. +# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed. +default_velocity_scaling_factor: 0.1 +default_acceleration_scaling_factor: 0.1 + +# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] +# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] +joint_limits: + slider1_joint: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + slider2_joint: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + slider3_joint: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/kinematics.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/kinematics.yaml new file mode 100644 index 00000000..d11fa7bf --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/kinematics.yaml @@ -0,0 +1,4 @@ +toyo_xyz: + kinematics_solver: lma_kinematics_plugin/LMAKinematicsPlugin + kinematics_solver_search_resolution: 0.0050000000000000001 + kinematics_solver_timeout: 0.0050000000000000001 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/macro.ros2_control.xacro b/unilabos/device_mesh/devices/toyo_xyz/config/macro.ros2_control.xacro new file mode 100644 index 00000000..5bc3404d --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/macro.ros2_control.xacro @@ -0,0 +1,35 @@ + + + + + + + + + mock_components/GenericSystem + + + + + ${initial_positions['slider1_joint']} + + + + + + + ${initial_positions['slider2_joint']} + + + + + + + ${initial_positions['slider3_joint']} + + + + + + + diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/macro.srdf.xacro b/unilabos/device_mesh/devices/toyo_xyz/config/macro.srdf.xacro new file mode 100644 index 00000000..753382fe --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/macro.srdf.xacro @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/move_group.json b/unilabos/device_mesh/devices/toyo_xyz/config/move_group.json new file mode 100644 index 00000000..d9006744 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/move_group.json @@ -0,0 +1,12 @@ +{ + "toyo_xyz": + { + "joint_names": [ + "slider1_joint", + "slider2_joint", + "slider3_joint" + ], + "base_link_name": "device_link", + "end_effector_name": "slider3_link" + } +} \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/moveit_controllers.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/moveit_controllers.yaml new file mode 100644 index 00000000..0fcac512 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/moveit_controllers.yaml @@ -0,0 +1,16 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - toyo_xyz_controller + + toyo_xyz_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - slider1_joint + - slider2_joint + - slider3_joint \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/pilz_cartesian_limits.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/pilz_cartesian_limits.yaml new file mode 100644 index 00000000..b2997caf --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/pilz_cartesian_limits.yaml @@ -0,0 +1,6 @@ +# Limits for the Pilz planner +cartesian_limits: + max_trans_vel: 1.0 + max_trans_acc: 2.25 + max_trans_dec: -5.0 + max_rot_vel: 1.57 diff --git a/unilabos/device_mesh/devices/toyo_xyz/config/ros2_controllers.yaml b/unilabos/device_mesh/devices/toyo_xyz/config/ros2_controllers.yaml new file mode 100644 index 00000000..1d1a552e --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/config/ros2_controllers.yaml @@ -0,0 +1,34 @@ +# This config file is used by ros2_control +controller_manager: + + ros__parameters: + update_rate: 100 # Hz + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + # action_ns: $(var device_id) + toyo_xyz_controller: + type: joint_trajectory_controller/JointTrajectoryController + +# joint_state_broadcaster: +# ros__parameters: {} + +toyo_xyz_controller: + ros__parameters: + joints: + - slider1_joint + - slider2_joint + - slider3_joint + command_interfaces: + - position + state_interfaces: + - position + - velocity + allow_partial_joints_goal: false + open_loop_control: true + allow_integration_in_goal_trajectories: true + action_monitor_rate: 20.0 + # goal_time: 0.0 + # constraints: + # stopped_velocity_tolerance: 0.01 + # goal_time: 0.0 \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/joint_config.json b/unilabos/device_mesh/devices/toyo_xyz/joint_config.json new file mode 100644 index 00000000..26bda262 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/joint_config.json @@ -0,0 +1,14 @@ +{ + "slider1_joint": { + "child":"slider1_link", + "axis" : "x" + }, + "slider2_joint": { + "child":"slider2_link", + "axis" : "x" + }, + "slider3_joint": { + "child":"slider3_link", + "axis" : "x" + } +} \ No newline at end of file diff --git a/unilabos/device_mesh/devices/toyo_xyz/macro_device.xacro b/unilabos/device_mesh/devices/toyo_xyz/macro_device.xacro new file mode 100644 index 00000000..5694c353 --- /dev/null +++ b/unilabos/device_mesh/devices/toyo_xyz/macro_device.xacro @@ -0,0 +1,465 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.STL b/unilabos/device_mesh/devices/toyo_xyz/meshes/base2_link.STL new file mode 100755 index 0000000000000000000000000000000000000000..ded0641d636df04b7706ae5f91dedadda043ca1b GIT binary patch literal 345384 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