<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:bioc="http://bpmn.io/schema/bpmn/biocolor/1.0" xmlns:color="http://www.omg.org/spec/BPMN/non-normative/color/1.0" id="veb_digest_help" targetNamespace="https://m-cod.ru/veb-digest">
  <!-- Создано генератором; схему можно открыть в Camunda Modeler или на demo.bpmn.io -->
  <bpmn:collaboration id="collab">
    <bpmn:participant id="pool" name="Новостная сводка «Топ новостей»" processRef="process" />
  </bpmn:collaboration>
  <bpmn:process id="process" isExecutable="false">
    <bpmn:laneSet id="lanes">
      <bpmn:lane id="lane_emp" name="Сотрудник">
        <bpmn:flowNodeRef>start</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_window</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_review</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>g_how</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_mark</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_read</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>g_edit</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_send</bpmn:flowNodeRef>
      </bpmn:lane>
      <bpmn:lane id="lane_llm" name="Языковая модель">
        <bpmn:flowNodeRef>t_annotate</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_chat</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_nominate</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_choose</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_build</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_fixlen</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_replace</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_ask</bpmn:flowNodeRef>
      </bpmn:lane>
      <bpmn:lane id="lane_alg" name="Алгоритм — скрипты службы">
        <bpmn:flowNodeRef>t_collect</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_candidates</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_articles</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>g_annot</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_checkpick</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_check</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>g_ok</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>t_export</bpmn:flowNodeRef>
        <bpmn:flowNodeRef>end</bpmn:flowNodeRef>
      </bpmn:lane>
    </bpmn:laneSet>
    <bpmn:startEvent id="start" name="Нужна сводка">
      <bpmn:documentation>Выпуски по будням в 5:30, 10:00, 14:00 и 18:00, по выходным в 5:30, 11:00 и 15:00.</bpmn:documentation>
      <bpmn:outgoing>f1</bpmn:outgoing>
    </bpmn:startEvent>
    <bpmn:userTask id="t_window" name="Выбрать окно и собрать повестку">
      <bpmn:documentation>Сотрудник выбирает, за сколько часов собрать повестку. Рабочие окна — 4 и 6 часов; окно в 48 часов тянет вчерашние новости.</bpmn:documentation>
      <bpmn:incoming>f1</bpmn:incoming>
      <bpmn:outgoing>f2</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:serviceTask id="t_collect" name="Сбор: ленты, поиск по сайтам, Telegram">
      <bpmn:documentation>Обход идёт тремя путями: ленты изданий, поиск по сайтам без ленты через поиск Яндекса, каналы Telegram. Каждый заход записывается: сколько взято и чем закончилось. Источник, который не ответил, виден до сборки выпуска. Модель здесь не участвует.</bpmn:documentation>
      <bpmn:incoming>f2</bpmn:incoming>
      <bpmn:outgoing>f3</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:serviceTask id="t_candidates" name="Отбор кандидатов">
      <bpmn:documentation>Скрипт снимает перепечатки (одна новость из десяти изданий — один кандидат, число изданий запоминается), отсеивает спорт, происшествия и светскую хронику, раскладывает по семи направлениям задания и упорядочивает: старшинство направления → число изданий → свежесть. Это счёт, а не мнение: любой шаг можно повторить и объяснить.</bpmn:documentation>
      <bpmn:incoming>f3</bpmn:incoming>
      <bpmn:outgoing>f4</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:serviceTask id="t_articles" name="Тексты статей">
      <bpmn:documentation>Скачивание текстов статей и очистка разметки. Посты Telegram не качаются — их текст уже собран. Текст достаётся примерно у двух третей материалов; остальные размечаются по заголовку, и в таблице это видно значком ✎.</bpmn:documentation>
      <bpmn:incoming>f4</bpmn:incoming>
      <bpmn:outgoing>f5</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:task id="t_annotate" name="Разметка: сюжеты, тональность, роль ВЭБ.РФ">
      <bpmn:documentation>Модель читает статью и называет 1–3 сюжета (формулой смысла, а не пересказом), тональность по отношению к ВЭБ.РФ, роль ВЭБ.РФ в новости и обоснование — аргумент, почему оценка именно такая. Идёт пачками по 8 материалов, каждая пачка сохраняется сразу.</bpmn:documentation>
      <bpmn:incoming>f5</bpmn:incoming>
      <bpmn:incoming>f8</bpmn:incoming>
      <bpmn:outgoing>f6</bpmn:outgoing>
    </bpmn:task>
    <bpmn:exclusiveGateway id="g_annot" name="Ответ модели годный?">
      <bpmn:documentation>Скрипт проверяет ответ модели: значения только из перечня, роль и тональность обязаны сходиться («не упомянут» бывает только с «не по объекту»). Негодная пачка уходит модели ещё раз — один раз; противоречивая пара отбрасывается, чтобы сотрудник не принял её за оценку.</bpmn:documentation>
      <bpmn:incoming>f6</bpmn:incoming>
      <bpmn:outgoing>f7</bpmn:outgoing>
      <bpmn:outgoing>f8</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:userTask id="t_review" name="Просмотреть таблицу кандидатов">
      <bpmn:documentation>Таблица: новость, направление, число изданий, сюжеты, тональность по ВЭБ.РФ с ролью, обоснование, издание. Отметок нет: отбор начинается с пустого места.</bpmn:documentation>
      <bpmn:incoming>f7</bpmn:incoming>
      <bpmn:outgoing>f9</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:exclusiveGateway id="g_how" name="Как отбирать?">
      <bpmn:documentation>Путь выбирает сотрудник. Модель сама отбор не запускает и отметок за сотрудника не ставит.</bpmn:documentation>
      <bpmn:incoming>f9</bpmn:incoming>
      <bpmn:outgoing>f10</bpmn:outgoing>
      <bpmn:outgoing>f11</bpmn:outgoing>
      <bpmn:outgoing>f12</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:task id="t_chat" name="Разговор: ядро M-Code зовёт инструменты">
      <bpmn:documentation>Сотрудник пишет просьбу словами («оставь только про ставку»). Ядро M-Code понимает её и зовёт инструменты службы — закрытый перечень действий, командная строка ему запрещена. В ответе называет, сколько отмечено и по какому признаку.</bpmn:documentation>
      <bpmn:incoming>f11</bpmn:incoming>
      <bpmn:outgoing>f16</bpmn:outgoing>
    </bpmn:task>
    <bpmn:task id="t_nominate" name="Номинация пачками по 40">
      <bpmn:documentation>Модель проходит все кандидаты пачками по 40 и в каждой отмечает до пяти достойных с обоснованием — по правилам заказчика: главная новость, тематический баланс, запреты.</bpmn:documentation>
      <bpmn:incoming>f12</bpmn:incoming>
      <bpmn:outgoing>f13</bpmn:outgoing>
    </bpmn:task>
    <bpmn:task id="t_choose" name="Выбор 5–6 новостей">
      <bpmn:documentation>Одним обращением по всем номинантам модель выбирает 5–6 новостей для выпуска целиком: правила баланса и «не больше одной военной сводки» относятся к выпуску, по пачкам их не соблюсти.</bpmn:documentation>
      <bpmn:incoming>f13</bpmn:incoming>
      <bpmn:outgoing>f14</bpmn:outgoing>
    </bpmn:task>
    <bpmn:serviceTask id="t_checkpick" name="Сверка номеров с предложенными">
      <bpmn:documentation>Скрипт принимает только номера, которые модель сама и предложила: сбившись со счёта, модель привела бы в выпуск чужую новость. Обоснование каждой отметки ложится в базу — на вопрос «почему эта?» есть ответ словами.</bpmn:documentation>
      <bpmn:incoming>f14</bpmn:incoming>
      <bpmn:outgoing>f15</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:userTask id="t_mark" name="Отметить новости и собрать выпуск">
      <bpmn:documentation>Сотрудник ставит и снимает отметки — вручную или поверх предложения модели. Сколько отмечено, столько строк будет в выпуске.</bpmn:documentation>
      <bpmn:incoming>f10</bpmn:incoming>
      <bpmn:incoming>f15</bpmn:incoming>
      <bpmn:incoming>f16</bpmn:incoming>
      <bpmn:outgoing>f17</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:task id="t_build" name="Сборка: строки и «В фокусе»">
      <bpmn:documentation>Модель пишет по одной строке на каждую отмеченную новость, в том же порядке, и выбирает «В фокусе» из отмеченного. Ничего не добавляет и не выбрасывает. Тональность и роль строка наследует от размеченного материала. Одновременно модель сверяет отмеченные новости с выпусками, отправленными за 7 суток (совпадение адреса находит скрипт): повтор или новый поворот сюжета выпуск показывает предупреждением, отметку снимает сотрудник.</bpmn:documentation>
      <bpmn:incoming>f17</bpmn:incoming>
      <bpmn:incoming>f23</bpmn:incoming>
      <bpmn:outgoing>f18</bpmn:outgoing>
    </bpmn:task>
    <bpmn:serviceTask id="t_check" name="Проверки выпуска">
      <bpmn:documentation>Арифметика, а не мнение модели: «В фокусе» 3–7 слов; строк ровно столько, сколько отмечено; 120–180 знаков, одно предложение; числа есть в материале; нет двух однотипных новостей. Модель, проверяющая свой текст, ошибается там же, где ошиблась при письме, — поэтому проверяет скрипт.</bpmn:documentation>
      <bpmn:incoming>f18</bpmn:incoming>
      <bpmn:incoming>f22</bpmn:incoming>
      <bpmn:outgoing>f19</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:exclusiveGateway id="g_ok" name="Проверки пройдены?">
      <bpmn:documentation>Не сошлась длина строки — правится только эта строка. Иное — выпуск возвращается модели целиком со списком замечаний, и она правит именно эти места. Если не сошлось и после повторных попыток, сотрудник получает выпуск с прямым указанием, что не так.</bpmn:documentation>
      <bpmn:incoming>f19</bpmn:incoming>
      <bpmn:outgoing>f20</bpmn:outgoing>
      <bpmn:outgoing>f21</bpmn:outgoing>
      <bpmn:outgoing>f23</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:task id="t_fixlen" name="Правка длины строки">
      <bpmn:documentation>Модель переписывает одну строку короче или полнее. Скрипт принимает правку, только если строка стала ближе к норме.</bpmn:documentation>
      <bpmn:incoming>f21</bpmn:incoming>
      <bpmn:outgoing>f22</bpmn:outgoing>
    </bpmn:task>
    <bpmn:userTask id="t_read" name="Вычитать выпуск">
      <bpmn:documentation>Сотрудник вычитывает выпуск. Решение об отправке — за человеком.</bpmn:documentation>
      <bpmn:incoming>f20</bpmn:incoming>
      <bpmn:incoming>f28</bpmn:incoming>
      <bpmn:incoming>f29</bpmn:incoming>
      <bpmn:outgoing>f24</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:exclusiveGateway id="g_edit" name="Нужна правка?">
      <bpmn:documentation>Выпуск можно поправить до отправки: заменить новость или спросить подробности.</bpmn:documentation>
      <bpmn:incoming>f24</bpmn:incoming>
      <bpmn:outgoing>f25</bpmn:outgoing>
      <bpmn:outgoing>f26</bpmn:outgoing>
      <bpmn:outgoing>f27</bpmn:outgoing>
    </bpmn:exclusiveGateway>
    <bpmn:task id="t_replace" name="Замена новости из запаса">
      <bpmn:documentation>Новость меняется на следующую по значимости из запаса (направление по приоритету, затем число изданий); модель пишет новую строку по её материалу.</bpmn:documentation>
      <bpmn:incoming>f26</bpmn:incoming>
      <bpmn:outgoing>f28</bpmn:outgoing>
    </bpmn:task>
    <bpmn:task id="t_ask" name="Ответ на вопрос по новости">
      <bpmn:documentation>Ответ строго по материалу новости. Чего в материале нет — так и говорится.</bpmn:documentation>
      <bpmn:incoming>f27</bpmn:incoming>
      <bpmn:outgoing>f29</bpmn:outgoing>
    </bpmn:task>
    <bpmn:userTask id="t_send" name="Отметить «Отправлено»">
      <bpmn:documentation>Отметка необратима: отправленный выпуск больше не правит никто, включая автора и администратора.</bpmn:documentation>
      <bpmn:incoming>f25</bpmn:incoming>
      <bpmn:outgoing>f30</bpmn:outgoing>
    </bpmn:userTask>
    <bpmn:serviceTask id="t_export" name="Вынос: Telegram или HTML">
      <bpmn:documentation>Перекладка без смысла: в буфер для вставки в Telegram или файлом HTML для письма.</bpmn:documentation>
      <bpmn:incoming>f30</bpmn:incoming>
      <bpmn:outgoing>f31</bpmn:outgoing>
    </bpmn:serviceTask>
    <bpmn:endEvent id="end" name="Выпуск готов">
      <bpmn:documentation>Выпуск отправлен получателю человеком.</bpmn:documentation>
      <bpmn:incoming>f31</bpmn:incoming>
    </bpmn:endEvent>
    <bpmn:sequenceFlow id="f1" sourceRef="start" targetRef="t_window" />
    <bpmn:sequenceFlow id="f2" sourceRef="t_window" targetRef="t_collect" />
    <bpmn:sequenceFlow id="f3" sourceRef="t_collect" targetRef="t_candidates" />
    <bpmn:sequenceFlow id="f4" sourceRef="t_candidates" targetRef="t_articles" />
    <bpmn:sequenceFlow id="f5" sourceRef="t_articles" targetRef="t_annotate" />
    <bpmn:sequenceFlow id="f6" sourceRef="t_annotate" targetRef="g_annot" />
    <bpmn:sequenceFlow id="f7" sourceRef="g_annot" targetRef="t_review" name="да" />
    <bpmn:sequenceFlow id="f8" sourceRef="g_annot" targetRef="t_annotate" name="нет — повтор пачки" />
    <bpmn:sequenceFlow id="f9" sourceRef="t_review" targetRef="g_how" />
    <bpmn:sequenceFlow id="f10" sourceRef="g_how" targetRef="t_mark" name="сам, вручную" />
    <bpmn:sequenceFlow id="f11" sourceRef="g_how" targetRef="t_chat" name="словами в разговоре" />
    <bpmn:sequenceFlow id="f12" sourceRef="g_how" targetRef="t_nominate" name="кнопка «Отбор моделью»" />
    <bpmn:sequenceFlow id="f13" sourceRef="t_nominate" targetRef="t_choose" />
    <bpmn:sequenceFlow id="f14" sourceRef="t_choose" targetRef="t_checkpick" />
    <bpmn:sequenceFlow id="f15" sourceRef="t_checkpick" targetRef="t_mark" name="предложение" />
    <bpmn:sequenceFlow id="f16" sourceRef="t_chat" targetRef="t_mark" name="отметки" />
    <bpmn:sequenceFlow id="f17" sourceRef="t_mark" targetRef="t_build" />
    <bpmn:sequenceFlow id="f18" sourceRef="t_build" targetRef="t_check" />
    <bpmn:sequenceFlow id="f19" sourceRef="t_check" targetRef="g_ok" />
    <bpmn:sequenceFlow id="f20" sourceRef="g_ok" targetRef="t_read" name="да" />
    <bpmn:sequenceFlow id="f21" sourceRef="g_ok" targetRef="t_fixlen" name="длина строки" />
    <bpmn:sequenceFlow id="f22" sourceRef="t_fixlen" targetRef="t_check" />
    <bpmn:sequenceFlow id="f23" sourceRef="g_ok" targetRef="t_build" name="иное — переделать" />
    <bpmn:sequenceFlow id="f24" sourceRef="t_read" targetRef="g_edit" />
    <bpmn:sequenceFlow id="f25" sourceRef="g_edit" targetRef="t_send" name="нет" />
    <bpmn:sequenceFlow id="f26" sourceRef="g_edit" targetRef="t_replace" name="заменить новость" />
    <bpmn:sequenceFlow id="f27" sourceRef="g_edit" targetRef="t_ask" name="спросить" />
    <bpmn:sequenceFlow id="f28" sourceRef="t_replace" targetRef="t_read" />
    <bpmn:sequenceFlow id="f29" sourceRef="t_ask" targetRef="t_read" />
    <bpmn:sequenceFlow id="f30" sourceRef="t_send" targetRef="t_export" />
    <bpmn:sequenceFlow id="f31" sourceRef="t_export" targetRef="end" />
    <bpmn:textAnnotation id="note_repeats"><bpmn:text>Сверка с отправленными за 7 суток: повтор — предупреждение в выпуске, решает сотрудник</bpmn:text></bpmn:textAnnotation>
    <bpmn:association id="assoc_overlap" sourceRef="t_build" targetRef="note_repeats" />
  </bpmn:process>
  <bpmndi:BPMNDiagram id="diagram">
    <bpmndi:BPMNPlane id="plane" bpmnElement="collab">
      <bpmndi:BPMNShape id="pool_di" bpmnElement="pool" isHorizontal="true"><dc:Bounds x="40" y="40" width="3560" height="720" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_emp_di" bpmnElement="lane_emp" isHorizontal="true"><dc:Bounds x="70" y="40" width="3530" height="200" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_llm_di" bpmnElement="lane_llm" isHorizontal="true"><dc:Bounds x="70" y="240" width="3530" height="280" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="lane_alg_di" bpmnElement="lane_alg" isHorizontal="true"><dc:Bounds x="70" y="520" width="3530" height="240" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="start_di" bpmnElement="start"><dc:Bounds x="132" y="122" width="36" height="36" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_window_di" bpmnElement="t_window" bioc:fill="#eaf6ec" bioc:stroke="#2f855a" color:background-color="#eaf6ec" color:border-color="#2f855a"><dc:Bounds x="205" y="100" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_collect_di" bpmnElement="t_collect"><dc:Bounds x="365" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_candidates_di" bpmnElement="t_candidates"><dc:Bounds x="535" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_articles_di" bpmnElement="t_articles"><dc:Bounds x="705" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_annotate_di" bpmnElement="t_annotate" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="875" y="340" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="g_annot_di" bpmnElement="g_annot" isMarkerVisible="true"><dc:Bounds x="1085" y="595" width="50" height="50" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_review_di" bpmnElement="t_review" bioc:fill="#eaf6ec" bioc:stroke="#2f855a" color:background-color="#eaf6ec" color:border-color="#2f855a"><dc:Bounds x="1195" y="100" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="g_how_di" bpmnElement="g_how" isMarkerVisible="true"><dc:Bounds x="1395" y="115" width="50" height="50" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_chat_di" bpmnElement="t_chat" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="1505" y="270" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_nominate_di" bpmnElement="t_nominate" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="1505" y="410" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_choose_di" bpmnElement="t_choose" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="1675" y="410" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_checkpick_di" bpmnElement="t_checkpick"><dc:Bounds x="1835" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_mark_di" bpmnElement="t_mark" bioc:fill="#eaf6ec" bioc:stroke="#2f855a" color:background-color="#eaf6ec" color:border-color="#2f855a"><dc:Bounds x="1995" y="100" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_build_di" bpmnElement="t_build" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="2165" y="270" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_check_di" bpmnElement="t_check"><dc:Bounds x="2335" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="g_ok_di" bpmnElement="g_ok" isMarkerVisible="true"><dc:Bounds x="2545" y="595" width="50" height="50" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_fixlen_di" bpmnElement="t_fixlen" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="2475" y="410" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_read_di" bpmnElement="t_read" bioc:fill="#eaf6ec" bioc:stroke="#2f855a" color:background-color="#eaf6ec" color:border-color="#2f855a"><dc:Bounds x="2675" y="100" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="g_edit_di" bpmnElement="g_edit" isMarkerVisible="true"><dc:Bounds x="2875" y="115" width="50" height="50" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_replace_di" bpmnElement="t_replace" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="2985" y="270" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_ask_di" bpmnElement="t_ask" bioc:fill="#e8f0fe" bioc:stroke="#4a7fd4" color:background-color="#e8f0fe" color:border-color="#4a7fd4"><dc:Bounds x="2985" y="410" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_send_di" bpmnElement="t_send" bioc:fill="#eaf6ec" bioc:stroke="#2f855a" color:background-color="#eaf6ec" color:border-color="#2f855a"><dc:Bounds x="3145" y="100" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="t_export_di" bpmnElement="t_export"><dc:Bounds x="3315" y="580" width="130" height="80" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="end_di" bpmnElement="end"><dc:Bounds x="3512" y="602" width="36" height="36" /></bpmndi:BPMNShape>
      <bpmndi:BPMNShape id="note_repeats_di" bpmnElement="note_repeats" bioc:stroke="#c05621" color:border-color="#c05621"><dc:Bounds x="1995" y="392" width="200" height="62" /></bpmndi:BPMNShape>
      <bpmndi:BPMNEdge id="f1_di" bpmnElement="f1">
        <di:waypoint x="168" y="140" />
        <di:waypoint x="205" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f2_di" bpmnElement="f2">
        <di:waypoint x="335" y="140" />
        <di:waypoint x="350" y="140" />
        <di:waypoint x="350" y="620" />
        <di:waypoint x="365" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f3_di" bpmnElement="f3">
        <di:waypoint x="495" y="620" />
        <di:waypoint x="535" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f4_di" bpmnElement="f4">
        <di:waypoint x="665" y="620" />
        <di:waypoint x="705" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f5_di" bpmnElement="f5">
        <di:waypoint x="835" y="620" />
        <di:waypoint x="855" y="620" />
        <di:waypoint x="855" y="380" />
        <di:waypoint x="875" y="380" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f6_di" bpmnElement="f6">
        <di:waypoint x="1005" y="380" />
        <di:waypoint x="1110" y="380" />
        <di:waypoint x="1110" y="595" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f7_di" bpmnElement="f7">
        <di:waypoint x="1135" y="620" />
        <di:waypoint x="1165" y="620" />
        <di:waypoint x="1165" y="140" />
        <di:waypoint x="1195" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f8_di" bpmnElement="f8">
        <di:waypoint x="1110" y="645" />
        <di:waypoint x="1110" y="700" />
        <di:waypoint x="940" y="700" />
        <di:waypoint x="940" y="420" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f9_di" bpmnElement="f9">
        <di:waypoint x="1325" y="140" />
        <di:waypoint x="1395" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f10_di" bpmnElement="f10">
        <di:waypoint x="1420" y="115" />
        <di:waypoint x="1420" y="65" />
        <di:waypoint x="2060" y="65" />
        <di:waypoint x="2060" y="100" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f11_di" bpmnElement="f11">
        <di:waypoint x="1445" y="140" />
        <di:waypoint x="1470" y="140" />
        <di:waypoint x="1470" y="310" />
        <di:waypoint x="1505" y="310" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f12_di" bpmnElement="f12">
        <di:waypoint x="1420" y="165" />
        <di:waypoint x="1420" y="450" />
        <di:waypoint x="1505" y="450" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f13_di" bpmnElement="f13">
        <di:waypoint x="1635" y="450" />
        <di:waypoint x="1675" y="450" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f14_di" bpmnElement="f14">
        <di:waypoint x="1805" y="450" />
        <di:waypoint x="1820" y="450" />
        <di:waypoint x="1820" y="620" />
        <di:waypoint x="1835" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f15_di" bpmnElement="f15">
        <di:waypoint x="1965" y="620" />
        <di:waypoint x="1980" y="620" />
        <di:waypoint x="1980" y="140" />
        <di:waypoint x="1995" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f16_di" bpmnElement="f16">
        <di:waypoint x="1635" y="310" />
        <di:waypoint x="1815" y="310" />
        <di:waypoint x="1815" y="140" />
        <di:waypoint x="1995" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f17_di" bpmnElement="f17">
        <di:waypoint x="2125" y="140" />
        <di:waypoint x="2145" y="140" />
        <di:waypoint x="2145" y="310" />
        <di:waypoint x="2165" y="310" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f18_di" bpmnElement="f18">
        <di:waypoint x="2295" y="310" />
        <di:waypoint x="2315" y="310" />
        <di:waypoint x="2315" y="620" />
        <di:waypoint x="2335" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f19_di" bpmnElement="f19">
        <di:waypoint x="2465" y="620" />
        <di:waypoint x="2545" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f20_di" bpmnElement="f20">
        <di:waypoint x="2595" y="620" />
        <di:waypoint x="2635" y="620" />
        <di:waypoint x="2635" y="140" />
        <di:waypoint x="2675" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f21_di" bpmnElement="f21">
        <di:waypoint x="2570" y="595" />
        <di:waypoint x="2570" y="490" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f22_di" bpmnElement="f22">
        <di:waypoint x="2475" y="450" />
        <di:waypoint x="2400" y="450" />
        <di:waypoint x="2400" y="580" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f23_di" bpmnElement="f23">
        <di:waypoint x="2570" y="645" />
        <di:waypoint x="2570" y="700" />
        <di:waypoint x="2230" y="700" />
        <di:waypoint x="2230" y="350" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f24_di" bpmnElement="f24">
        <di:waypoint x="2805" y="140" />
        <di:waypoint x="2875" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f25_di" bpmnElement="f25">
        <di:waypoint x="2925" y="140" />
        <di:waypoint x="3145" y="140" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f26_di" bpmnElement="f26">
        <di:waypoint x="2900" y="165" />
        <di:waypoint x="2900" y="310" />
        <di:waypoint x="2985" y="310" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f27_di" bpmnElement="f27">
        <di:waypoint x="2900" y="165" />
        <di:waypoint x="2900" y="450" />
        <di:waypoint x="2985" y="450" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f28_di" bpmnElement="f28">
        <di:waypoint x="3050" y="270" />
        <di:waypoint x="3050" y="220" />
        <di:waypoint x="2760" y="220" />
        <di:waypoint x="2760" y="180" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f29_di" bpmnElement="f29">
        <di:waypoint x="3050" y="490" />
        <di:waypoint x="3050" y="505" />
        <di:waypoint x="2720" y="505" />
        <di:waypoint x="2720" y="180" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f30_di" bpmnElement="f30">
        <di:waypoint x="3275" y="140" />
        <di:waypoint x="3295" y="140" />
        <di:waypoint x="3295" y="620" />
        <di:waypoint x="3315" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="f31_di" bpmnElement="f31">
        <di:waypoint x="3445" y="620" />
        <di:waypoint x="3512" y="620" />
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge id="assoc_overlap_di" bpmnElement="assoc_overlap"><di:waypoint x="2180" y="350" /><di:waypoint x="2180" y="392" /></bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</bpmn:definitions>
