<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>60117</bug_id>
          
          <creation_ts>2026-08-07 11:34:10 +0300</creation_ts>
          <short_desc>rpmgs: merge -s ours отбрасывал содержимое апстрима (3.3.1–3.3.2), отравлена история gear-репозиториев</short_desc>
          <delta_ts>2026-10-07 19:56:50 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>etersoft-build-utils</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="minergenon">chal55rus</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>lav</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292404</commentid>
    <comment_count>0</comment_count>
    <who name="minergenon">chal55rus</who>
    <bug_when>2026-08-07 11:34:10 +0300</bug_when>
    <thetext>В etersoft-build-utils 3.3.1-alt1 (коммит d223e6c от 07.02.2026,
«rpmgs: use &apos;ours&apos; merge strategy for .gear/tags-based packages») в rpmgs,
функция update_master_branch_to(), для репозиториев с каталогом .gear/tags
обычный мердж апстримного тега был заменён на `git merge -s ours $tag`.
В 3.3.3-alt1 (коммит bd83b59 от 29.06.2026) стратегия убрана.

Проблема в долгоживущих последствиях, которые остались и после исправления:

1. `merge -s ours` создаёт мердж-коммит, дерево которого идентично ветке
   мейнтейнера — содержимое апстрима отбрасывается, но апстримные коммиты
   становятся предками ветки и считаются git «уже смерженными» навсегда.

2. После возврата к обычному мерджу (3.3.3+) git вычисляет дельту от
   merge-base, в который эти теги уже входят, и применяет только инкремент
   между последними тегами. Все изменения апстрима за период до ours-мерджей
   в дерево ветки не попадают никогда — молча, без конфликтов и предупреждений.

3. В результате дерево ветки — несогласованная смесь старой базы и свежих
   дельт. Пример: в python3-module-pykickstart после обновлений 3.74→3.77
   код из r3.77 импортирует символ F45, добавленный в version.py ещё в r3.74
   и отброшенный ours-мерджем: checkout ветки нерабочий (ImportError, тесты
   падают). Сами пакеты при этом собираются корректно, т.к. тарболл в
   .gear/rules берётся из апстримного тега (tar: r@version@:.), и проблема
   незаметна при сборке.

4. Репозитории, где тарболл собирается из дерева ветки (tar: . и т.п.),
   в период с 28.03.2026 по 01.07.2026 могли выпустить пакеты со старым
   кодом под новой версией — это стоит проверить отдельно.

Детектор поражённых репозиториев (пустой ours-мердж: дерево результата
совпадает с первым родителем, хотя второй родитель отличался):

    for m in $(git log --merges --format=%H); do
        git diff --quiet $m^1 $m &amp;&amp; ! git diff --quiet $m^1 $m^2 &amp;&amp; \
            git log -1 --format=&apos;%h %ad %s&apos; --date=short $m
    done

Починка поражённого репозитория (переписывание истории не требуется):
одним коммитом привести дерево к содержимому последнего апстримного тега:

    git read-tree --reset -u &lt;апстримный_тег&gt;
    git checkout HEAD -- .gear
    git commit -m &quot;Restore tree content from upstream tag (ours-merge skew fix)&quot;

У себя обнаружил 23 поражённых репозитория из 73 (ours-мерджи в период
18.05–30.06.2026). Вероятно, проблема затронула и других мейнтейнеров,
пользовавшихся rpmgs 3.3.1–3.3.2 с git-merge-стилем обновления.

Предложения:

- анонсировать в devel@lists.altlinux.org, чтобы мейнтейнеры проверили свои
  репозитории детектором выше;
- рассмотреть добавление в rpmgs защиты: предупреждение, если мердж
  апстримного тега не изменил дерево (git diff --quiet HEAD^1 HEAD после
  мерджа) — на случай подобных регрессий в будущем.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301377</commentid>
    <comment_count>1</comment_count>
      <attachid>22353</attachid>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2026-10-07 00:18:43 +0300</bug_when>
    <thetext>Created attachment 22353
gear-ours-merge-audit.sh: audit gear repos for empty ours-merges (first-parent, periods, tar:/diff: rules)

Спасибо за подробный разбор и детектор.

Хронология в etersoft-build-utils (rpmgs, update_master_branch_to):
- d223e6c (2026-02-07) — &apos;ours&apos; для пакетов с .gear/tags;
- bd83b59 (2026-06-29) — убрано;
- 2e21b42 (2026-07-29) — &apos;ours&apos; снова, для пакетов с архивом из тега версии (tar: ...@version@);
- af5e7ff (2026-08-21) — &apos;ours&apos; убран окончательно, обычный merge тега.
То есть опасных периода два: 2026-02-07..2026-06-29 и 2026-07-29..2026-08-21.

Защита на будущее: rpmgs после merge апстримного тега предупреждает, если дерево не изменилось, а тег отличается (git diff --quiet HEAD^1 HEAD &amp;&amp; ! git diff --quiet HEAD^1 HEAD^2) — коммит 2f752bc, войдёт в следующий релиз.

Важное дополнение к п.4: поражены не только репозитории с tar: . — если архив берётся из тега, но есть правило diff: @version@:. . (патч &quot;тег -&gt; ветка&quot;), то потерянные апстримные изменения откатываются в собранном пакете через этот патч. Так было с i2pd (2.59.0-alt1, 2.60.0-alt1) и ccache 4.11.3-alt1.

Детектор стоит ограничивать ветками мейнтейнера (git log --merges --first-parent), иначе он ловит внутренние merge апстрима.

Прикладываю скрипт аудита gear-ours-merge-audit.sh: клонирует репозитории из /gears (shallow, при необходимости углубляет), берёт коммит апстримного тега из .gear/tags, учитывает только merge в указанные периоды, определяет источник архива по правилам tar:/diff: и для подозрительных показывает расхождение дерева с тегом. Список своих пакетов можно получить так:
eget -O- &apos;https://rdb.altlinux.org/api/site/maintainer_packages?branch=sisyphus&amp;maintainer_nickname=NICK&apos;
Ограничение: правило tar: с подкаталогом ветки считается &quot;архивом из дерева&quot;, такие срабатывания нужно смотреть вручную.

Результат по моим пакетам (1611 src, из них 1275 с gear-репозиториями):
- 11 репозиториев с пустыми merge в эти периоды;
- в 5 из них (createrepo_c, gnucash-docs, libsolv, py2pack, python3-module-backrefs) архив из тега и без diff: — собранные пакеты корректны, искажено только дерево ветки;
- ccache 4.11.3-alt1 выходил со старым кодом (через патч), исправлено в 4.13.6-alt1;
- i2pd 2.59.0/2.60.0 — патч откатывал апстримные изменения (в 2.60.0 — 8 файлов, в т.ч. вернул удалённые апстримом reseed-сертификаты), исправляется в 2.61.0-alt1 восстановлением дерева из тега;
- остальные срабатывания — намеренные пустые merge служебных веток.

Баг закрою после выпуска etersoft-build-utils с предупреждением.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301462</commentid>
    <comment_count>2</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2026-10-07 19:56:50 +0300</bug_when>
    <thetext>etersoft-build-utils-3.3.9-alt1 -&gt; sisyphus:

Wed Oct 07 2026 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 3.3.9-alt1
- rpmrb: add -U option to build without uploading to girar
- rpmgs: warn if merging an upstream tag left the tree unchanged (ALT bug 60117)
- gitask: show who must approve EPERM subtasks, rework ls colors
- gitask: ls: show approval status before each package
- gitask: add &apos;groups&apos; command to show acl groups of a user
- fix(web): use browser User-Agent for downloads
- rpmgs: ignore upstream vendor directory</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>22353</attachid>
            <date>2026-10-07 00:18:43 +0300</date>
            <delta_ts>2026-10-07 00:18:43 +0300</delta_ts>
            <desc>gear-ours-merge-audit.sh: audit gear repos for empty ours-merges (first-parent, periods, tar:/diff: rules)</desc>
            <filename>gear-ours-merge-audit.sh</filename>
            <type>text/plain</type>
            <size>12956</size>
            <attacher name="Vitaly Lipatov">lav</attacher>
            
              <data encoding="base64">IyEvYmluL2Jhc2gKIyBnZWFyLW91cnMtbWVyZ2UtYXVkaXQuc2gg4oCUIGZpbmQgZ2VhciByZXBv
cyBwb2lzb25lZCBieSBgZ2l0IG1lcmdlIC1zIG91cnNgIChBTFQgYnVnIDYwMTE3KQojCiMgcnBt
Z3MgZnJvbSBldGVyc29mdC1idWlsZC11dGlscyAzLjMuMS0zLjMuMiAoZDIyM2U2Yy4uYmQ4M2I1
OSwgMjAyNi0wMi0wNy4uMjAyNi0wNi0yOSkKIyBhbmQgYWdhaW4gMmUyMWI0Mi4uYWY1ZTdmZiAo
MjAyNi0wNy0yOS4uMjAyNi0wOC0yMSkgbWVyZ2VkIHVwc3RyZWFtIHRhZ3Mgd2l0aAojIGBnaXQg
bWVyZ2UgLXMgb3Vyc2AgZm9yIC5nZWFyL3RhZ3MtYmFzZWQgcGFja2FnZXM6IHRoZSB1cHN0cmVh
bSB0cmVlIHdhcyBkcm9wcGVkLAojIGJ1dCB0aGUgdGFnIGNvdW50cyBhcyBtZXJnZWQsIHNvIGxh
dGVyIG1lcmdlcyBvbmx5IGJyaW5nIGluY3JlbWVudHMuCiMgRGFuZ2Vyb3VzIHdoZW4gdGhlIHRh
cmJhbGwgaXMgYnVpbHQgZnJvbSB0aGUgYnJhbmNoIHRyZWUgKGB0YXI6IC5gKSwgbm90IGZyb20g
dGhlIHRhZy4KIwojIFVzYWdlOgojICAgZ2Vhci1vdXJzLW1lcmdlLWF1ZGl0LnNoIFstaiBOXSBb
LXcgV09SS0RJUl0gWy1rXSBbLXMgREFURV0gTkFNRS4uLgojICAgZ2Vhci1vdXJzLW1lcmdlLWF1
ZGl0LnNoIFstaiBOXSAuLi4gLWYgRklMRSAgICAgICMgbmFtZXMgZnJvbSBmaWxlICgnLScgPSBz
dGRpbikKIyAgIGdlYXItb3Vycy1tZXJnZS1hdWRpdC5zaCAuLi4gPCBuYW1lcy50eHQgICAgICAg
ICAgIyBuYW1lcyBmcm9tIHN0ZGluCiMKIyAgIC1qIE4gICAgICAgIHBhcmFsbGVsIGpvYnMgKGRl
ZmF1bHQgMTsga2VlcCA8PSA0IHRvIHNwYXJlIGdpdC5hbHRsaW51eC5vcmcpCiMgICAtdyBXT1JL
RElSICB3b3JrIGRpciAoZGVmYXVsdCAke1RNUERJUjotL3RtcH0vb3Vycy1hdWRpdCk7IGNsb25l
cyBpbiBXT1JLRElSL3JlcG9zL05BTUUuZ2l0LAojICAgICAgICAgICAgICAgcGVyLXBhY2thZ2Ug
cmVzdWx0cyBpbiBXT1JLRElSL3Jlc3VsdHMvTkFNRS50eHQKIyAgIC1rICAgICAgICAgIGtlZXAg
Y2xvbmVzIG9mIHVuYWZmZWN0ZWQgcmVwb3MgKGRlZmF1bHQ6IHJlbW92ZSB0aGVtLCBrZWVwIGFm
ZmVjdGVkKQojICAgLXMgREFURSAgICAgc2hhbGxvdy1jbG9uZSBzaW5jZSBEQVRFIChkZWZhdWx0
IDIwMjUtMDYtMDE7IGRlZXBlbmVkIGF1dG9tYXRpY2FsbHkKIyAgICAgICAgICAgICAgIHdoZW4g
YSBzaGFsbG93IGJvdW5kYXJ5IGNvbW1pdCBpcyBpbnNpZGUgdGhlIHBlcmlvZHMgb3IgYSBtZXJn
ZSBwYXJlbnQgLwojICAgICAgICAgICAgICAgbWVyZ2UtYmFzZSBpcyBjdXQgb2ZmKTsgJy1zIGZ1
bGwnIGZvciBmdWxsIGNsb25lCiMKIyBEZXRlY3RvciAocGVyIG1lcmdlIGNvbW1pdCBtIG9mIG91
ciBicmFuY2gsIGdpdCBsb2cgLS1tZXJnZXMgLS1maXJzdC1wYXJlbnQpOgojICAgdHJlZShtKSA9
PSB0cmVlKG1eMSksIHRyZWUobV4xKSAhPSB0cmVlKG1eMiksIGFuZCBtZXJnZS1iYXNlKG1eMSxt
XjIpLi5tXjIgY2hhbmdlZAojICAgc29tZXRoaW5nICA9PiB0aGUgbWVyZ2UgZGlzY2FyZGVkIHRo
ZSBvdGhlciBzaWRlIChlbXB0eSBvdXJzLW1lcmdlKS4KIyAgIE9ubHkgbWVyZ2VzIGRhdGVkIGlu
c2lkZSB0aGUgcnBtZ3Mgb3VycyBwZXJpb2RzIGNvdW50IGFzICdhZmZlY3RlZCc7CiMgICBlbXB0
eSBtZXJnZXMgb3V0c2lkZSB0aGVtIGFyZSByZXBvcnRlZCBzZXBhcmF0ZWx5IGFzICdvdXQgb2Yg
cGVyaW9kJy4KIwojIEFyY2hpdmUgc291cmNlIChmcm9tIC5nZWFyL3J1bGVzIG9uIEhFQUQpOgoj
ICAgdGFnICDigJQgdGFyKi96aXA6IFJFRjpwYXRoIChlLmcuIHZAdmVyc2lvbkA6LikgICAgdHJl
ZSDigJQgdGFyKi96aXA6IC4gb3IgZGlyIChicmFuY2ggdHJlZSkKIyAgIG5vbmUg4oCUIG5vIHRh
ci96aXAgcnVsZSAoY29tbWl0dGVkIHRhcmJhbGwgZXRjLikKIyAgICcrZGlmZicgc3VmZml4IOKA
lCBhIGBkaWZmOmAgcnVsZSAoZS5nLiBkaWZmOiBAdmVyc2lvbkA6LiAuIG5hbWU9dXBzdHJlYW0u
cGF0Y2gpIGFwcGxpZXMKIyAgIHRoZSB0YWctPmJyYW5jaC10cmVlIGRpZmZlcmVuY2Ugb24gdG9w
IG9mIHRoZSBhcmNoaXZlLCBzbyBsb3N0IHVwc3RyZWFtIGNoYW5nZXMgYXJlCiMgICByZXZlcnRl
ZCBpbiB0aGUgYnVpbHQgcGFja2FnZS4KIyBSSVNLID0gYWZmZWN0ZWQgYW5kIChhcmNoaXZlIGZy
b20gdHJlZSBvciBhIGRpZmY6IHJ1bGUgcHJlc2VudCkuCiMgRm9yIFJJU0s6IGdpdCBkaWZmIC0t
c2hvcnRzdGF0IGJldHdlZW4gdGhlIHVwc3RyZWFtIHRhZyBjb21taXQgb2YgdGhlIGN1cnJlbnQg
dmVyc2lvbgojICguZ2Vhci90YWdzL2xpc3QgLT4gLmdlYXIvdGFncy88aWQ+IC0+ICdvYmplY3Qg
PGNvbW1pdD4nLCBvciByZWZzL3RhZ3MpIGFuZCBIRUFELAojIGV4Y2x1ZGluZyAuZ2Vhciwgd2l0
aCB1cCB0byAxMCBjaGFuZ2VkIGZpbGVzOyBwbHVzIHRoZSBzaXN5cGh1cyBidWlsZHMKIyAoZ2It
c2lzeXBodXMtdGFzayogdGFncykgbWFkZSBhZnRlciB0aGUgZmlyc3Qgb3Vycy1tZXJnZS4KIwoj
IE91dHB1dDogb25lIGxpbmUgcGVyIHBhY2thZ2UKIyAgIE5BTUUgfCBhZmZlY3RlZCB8IGFyY2hp
dmUgfCBSSVNLIHwgZGlmZi1zdGF0IHwgYnVpbGRzLWFmdGVyCiMgZm9sbG93ZWQgYnkgaW5kZW50
ZWQgJ291cnM6JyBsaW5lcyAoaGFzaCBkYXRlIHN1YmplY3Q7ICcob3V0IG9mIHBlcmlvZCknIG1h
cmtlZCkKIyBhbmQgJ2ZpbGU6JyBsaW5lcyBmb3IgUklTSyBwYWNrYWdlcy4KIwojIFJlYWQtb25s
eTogbm90aGluZyBpcyBwdXNoZWQgb3IgbW9kaWZpZWQgdXBzdHJlYW0uCgpzZXQgLWV1byBwaXBl
ZmFpbAoKSk9CUz0xCldPUktESVI9IiR7VE1QRElSOi0vdG1wfS9vdXJzLWF1ZGl0IgpLRUVQPTAK
U0lOQ0U9MjAyNS0wNi0wMQpMSVNURklMRT0KT05FPQoKIyBycG1ncyBvdXJzIHBlcmlvZHMgKGlu
Y2x1c2l2ZSkKUDFfRlJPTT0yMDI2LTAyLTA3IFAxX1RPPTIwMjYtMDYtMjkKUDJfRlJPTT0yMDI2
LTA3LTI5IFAyX1RPPTIwMjYtMDgtMjEKCnVzYWdlKCkgeyBzZWQgLW4gJzIsL14kL3tzL14jIFx7
MCwxXH0vLztwfScgIiQwIjsgZXhpdCAiJHsxOi0wfSI7IH0KCndoaWxlIGdldG9wdHMgImo6dzpr
czpmOjE6aCIgb3B0OyBkbwogICAgY2FzZSAiJG9wdCIgaW4KICAgICAgICBqKSBKT0JTPSRPUFRB
UkcgOzsKICAgICAgICB3KSBXT1JLRElSPSRPUFRBUkcgOzsKICAgICAgICBrKSBLRUVQPTEgOzsK
ICAgICAgICBzKSBTSU5DRT0kT1BUQVJHIDs7CiAgICAgICAgZikgTElTVEZJTEU9JE9QVEFSRyA7
OwogICAgICAgIDEpIE9ORT0kT1BUQVJHIDs7CiAgICAgICAgaCkgdXNhZ2UgMCA7OwogICAgICAg
ICopIHVzYWdlIDEgOzsKICAgIGVzYWMKZG9uZQpzaGlmdCAkKChPUFRJTkQgLSAxKSkKCm1rZGly
IC1wICIkV09SS0RJUi9yZXBvcyIgIiRXT1JLRElSL3Jlc3VsdHMiCgppbl9wZXJpb2QoKQp7CiAg
ICBsb2NhbCBkPSQxCiAgICBbWyAhICIkZCIgPCAiJFAxX0ZST00iICYmICEgIiRkIiA+ICIkUDFf
VE8iIF1dICYmIHJldHVybiAwCiAgICBbWyAhICIkZCIgPCAiJFAyX0ZST00iICYmICEgIiRkIiA+
ICIkUDJfVE8iIF1dICYmIHJldHVybiAwCiAgICByZXR1cm4gMQp9CgpyZXBvX3VybCgpCnsKICAg
IGxvY2FsIG5hbWU9JDEKICAgIGVjaG8gImdpdDovL2dpdC5hbHRsaW51eC5vcmcvZ2VhcnMvJHtu
YW1lOjA6MX0vJG5hbWUuZ2l0Igp9CgojIGNsYXNzaWZ5IGFyY2hpdmUgc291cmNlIGZyb20gcnVs
ZXMgdGV4dCBvbiBzdGRpbgphcmNoaXZlX3NvdXJjZSgpCnsKICAgIGxvY2FsIHJ1bGVzIHNyYz1u
b25lIGxpbmUgcGF0aCBoYXNfZGlmZj0wCiAgICBydWxlcz0kKGNhdCkKICAgIHdoaWxlIHJlYWQg
LXIgbGluZTsgZG8KICAgICAgICBjYXNlICIkbGluZSIgaW4KICAgICAgICAgICAgdGFyKjoqfHpp
cCo6KikKICAgICAgICAgICAgICAgIHBhdGg9JChwcmludGYgJyVzXG4nICIkbGluZSIgfCBzZWQg
LUUgJ3MvXlthLXowLTkuXSs6W1s6c3BhY2U6XV0qLy87IHMvW1s6c3BhY2U6XV0uKi8vJykKICAg
ICAgICAgICAgICAgIGlmIFtbICIkcGF0aCIgPT0gKjoqIF1dOyB0aGVuCiAgICAgICAgICAgICAg
ICAgICAgWyAiJHNyYyIgPSBub25lIF0gJiYgc3JjPXRhZwogICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgIHNyYz10cmVlCiAgICAgICAgICAgICAgICBmaQogICAgICAgICAg
ICAgICAgOzsKICAgICAgICAgICAgZGlmZio6KikgaGFzX2RpZmY9MSA7OwogICAgICAgIGVzYWMK
ICAgIGRvbmUgPDw8ICIkcnVsZXMiCiAgICBbICIkaGFzX2RpZmYiID0gMSBdICYmIHNyYz0kc3Jj
K2RpZmYKICAgIGVjaG8gIiRzcmMiCn0KCiMgcHJpbnQgc3BlYyBWZXJzaW9uIG9uIEhFQUQgd2l0
aCB0cml2aWFsICVkZWZpbmUvJWdsb2JhbCBleHBhbnNpb24Kc3BlY192ZXJzaW9uKCkKewogICAg
bG9jYWwgZ2l0PSQxIHNwZWMgdGV4dCB2ZXIgbmFtZSB2YWwgaQogICAgc3BlYz0kKGdpdCAtQyAi
JGdpdCIgY2F0LWZpbGUgLXAgSEVBRDouZ2Vhci9ydWxlcyAyPi9kZXYvbnVsbCB8IHNlZCAtbkUg
J3MvXnNwZWM6W1s6c3BhY2U6XV0qKFteWzpzcGFjZTpdXSspLiovXDEvcCcgfCBzZWQgLW4gMXAp
CiAgICBbIC1uICIkc3BlYyIgXSB8fCBzcGVjPSQoZ2l0IC1DICIkZ2l0IiBscy10cmVlIC0tbmFt
ZS1vbmx5IEhFQUQgfCBzZWQgLW4gJy9cLnNwZWMkL3AnIHwgc2VkIC1uIDFwKQogICAgWyAtbiAi
JHNwZWMiIF0gfHwgcmV0dXJuIDAKICAgIHRleHQ9JChnaXQgLUMgIiRnaXQiIGNhdC1maWxlIC1w
ICJIRUFEOiRzcGVjIiAyPi9kZXYvbnVsbCkgfHwgcmV0dXJuIDAKICAgIHZlcj0kKHByaW50ZiAn
JXNcbicgIiR0ZXh0IiB8IHNlZCAtbkUgJ3MvXlZlcnNpb246W1s6c3BhY2U6XV0qKFteWzpzcGFj
ZTpdXSspLiovXDEvcCcgfCBzZWQgLW4gMXApCiAgICBmb3IgaSBpbiAxIDIgMzsgZG8KICAgICAg
ICBbWyAiJHZlciIgPT0gKiUqIF1dIHx8IGJyZWFrCiAgICAgICAgbmFtZT0kKHByaW50ZiAnJXMn
ICIkdmVyIiB8IHNlZCAtbkUgJ3MvLiolXHs/KFtBLVphLXpfXVtBLVphLXowLTlfXSopXH0/Liov
XDEvcCcpCiAgICAgICAgWyAtbiAiJG5hbWUiIF0gfHwgYnJlYWsKICAgICAgICB2YWw9JChwcmlu
dGYgJyVzXG4nICIkdGV4dCIgfCBzZWQgLW5FICJzL14lKGRlZmluZXxnbG9iYWwpW1s6c3BhY2U6
XV0rJG5hbWVbWzpzcGFjZTpdXSsoW15bOnNwYWNlOl1dKykuKi9cMi9wIiB8IHNlZCAtbiAxcCkK
ICAgICAgICBbIC1uICIkdmFsIiBdIHx8IGJyZWFrCiAgICAgICAgdmVyPSQocHJpbnRmICclcycg
IiR2ZXIiIHwgc2VkIC1FICJzLyVcez8kbmFtZVx9Py8kdmFsLyIpCiAgICBkb25lCiAgICBlY2hv
ICIkdmVyIgp9CgojIC5nZWFyL3RhZ3MvPHRhZyBvYmplY3QgaWQ+IC0+ICdvYmplY3QgPGNvbW1p
dD4nOyBsaWdodHdlaWdodCB0YWdzIGxpc3QgdGhlIGNvbW1pdCBpdHNlbGYKZ2Vhcl90YWdfY29t
bWl0KCkKewogICAgaWYgZ2l0IC1DICIkMSIgY2F0LWZpbGUgLWUgIkhFQUQ6LmdlYXIvdGFncy8k
MiIgMj4vZGV2L251bGw7IHRoZW4KICAgICAgICBnaXQgLUMgIiQxIiBjYXQtZmlsZSAtcCAiSEVB
RDouZ2Vhci90YWdzLyQyIiB8IHNlZCAtbiAncy9eb2JqZWN0IC8vcCcgfCBzZWQgLW4gMXAKICAg
IGVsaWYgWyAiJChnaXQgLUMgIiQxIiBjYXQtZmlsZSAtdCAiJDIiIDI+L2Rldi9udWxsKSIgPSBj
b21taXQgXTsgdGhlbgogICAgICAgIGVjaG8gIiQyIgogICAgZmkKfQoKIyBmaW5kIHVwc3RyZWFt
IHRhZyBjb21taXQgZm9yIFZFUlNJT046IC5nZWFyL3RhZ3MvbGlzdCwgdGhlbiByZWZzL3RhZ3MK
dXBzdHJlYW1fdGFnX2NvbW1pdCgpCnsKICAgIGxvY2FsIGdpdD0kMSB2ZXI9JDIgcnVsZXNyZWY9
JDMgc2hhIHQgaWQKICAgIFsgLW4gIiR2ZXIiIF0gfHwgcmV0dXJuIDAKICAgIHJ1bGVzcmVmPSR7
cnVsZXNyZWYvL0B2ZXJzaW9uQC8kdmVyfQogICAgaWYgWyAtbiAiJHJ1bGVzcmVmIiBdOyB0aGVu
CiAgICAgICAgaWQ9JChnaXQgLUMgIiRnaXQiIGNhdC1maWxlIC1wIEhFQUQ6LmdlYXIvdGFncy9s
aXN0IDI+L2Rldi9udWxsIHwgYXdrIC12IHQ9IiRydWxlc3JlZiIgJyQyID09IHQge3ByaW50ICQx
OyBleGl0fScpCiAgICAgICAgWyAtbiAiJGlkIiBdICYmIHNoYT0kKGdlYXJfdGFnX2NvbW1pdCAi
JGdpdCIgIiRpZCIpICYmIFsgLW4gIiRzaGEiIF0gJiYgeyBlY2hvICIkc2hhICRydWxlc3JlZiI7
IHJldHVybiAwOyB9CiAgICBmaQogICAgcmVhZCAtciBpZCB0IDwgPChnaXQgLUMgIiRnaXQiIGNh
dC1maWxlIC1wIEhFQUQ6LmdlYXIvdGFncy9saXN0IDI+L2Rldi9udWxsIHwKICAgICAgICAgIGF3
ayAtdiB2PSIkdmVyIiAneyB0PSQyOyBzdWIoL15bXjAtOV0qLywgIiIsIHQpOyBpZiAodCA9PSB2
KSB7IHByaW50ICQxLCAkMjsgZXhpdCB9IH0nKSB8fCB0cnVlCiAgICBbIC1uICIke2lkOi19IiBd
ICYmIHNoYT0kKGdlYXJfdGFnX2NvbW1pdCAiJGdpdCIgIiRpZCIpICYmIFsgLW4gIiRzaGEiIF0g
JiYgeyBlY2hvICIkc2hhICR0IjsgcmV0dXJuIDA7IH0KICAgIGZvciB0IGluICJ2JHZlciIgIiR2
ZXIiICJyZWxlYXNlLSR2ZXIiICIkcnVsZXNyZWYiOyBkbwogICAgICAgIFsgLW4gIiR0IiBdIHx8
IGNvbnRpbnVlCiAgICAgICAgc2hhPSQoZ2l0IC1DICIkZ2l0IiByZXYtcGFyc2UgLXEgLS12ZXJp
ZnkgInJlZnMvdGFncy8kdF57Y29tbWl0fSIgMj4vZGV2L251bGwpICYmIHsgZWNobyAiJHNoYSAk
dCI7IHJldHVybiAwOyB9CiAgICBkb25lCiAgICByZXR1cm4gMAp9CgojIHJlcGxhY2UgYSBzaGFs
bG93IGNsb25lIHdpdGggYSBmdWxsIG9uZSAoZmV0Y2ggLS11bnNoYWxsb3cgaXMgdW5yZWxpYWJs
ZQojIHdoZW4gdGhlIHNoYWxsb3cgZmlsZSBsaXN0cyBvYmplY3RzIHRoYXQgd2VyZSBub3Qgc2Vu
dCkKZGVlcGVuKCkKewogICAgbG9jYWwgZ2l0PSQxIHVybD0kMgogICAgWyAtZiAiJGdpdC9zaGFs
bG93IiBdIHx8IHJldHVybiAxCiAgICBybSAtcmYgIiRnaXQuZnVsbCIKICAgIGdpdCBjbG9uZSAt
LWJhcmUgLXEgIiR1cmwiICIkZ2l0LmZ1bGwiID4vZGV2L251bGwgMj4mMSB8fCB7IHJtIC1yZiAi
JGdpdC5mdWxsIjsgcmV0dXJuIDE7IH0KICAgIHJtIC1yZiAiJGdpdCIKICAgIG12ICIkZ2l0LmZ1
bGwiICIkZ2l0Igp9CgphdWRpdF9vbmUoKQp7CiAgICBsb2NhbCBuYW1lPSQxIGdpdCB1cmwgb3V0
IGFmZmVjdGVkPTAgbGluZXM9IiIgbSBkIHAxIHAyIGJhc2Ugc3JjIHJpc2s9bm8KICAgIGxvY2Fs
IHN0YXQ9LSBidWlsZHM9LSBmaXJzdD0iIiByZWY9IiIgdmVyPSIiIHRjCiAgICBnaXQ9IiRXT1JL
RElSL3JlcG9zLyRuYW1lLmdpdCIKICAgIG91dD0iJFdPUktESVIvcmVzdWx0cy8kbmFtZS50eHQi
CiAgICB1cmw9JChyZXBvX3VybCAiJG5hbWUiKQoKICAgIGlmIFsgISAtZCAiJGdpdCIgXTsgdGhl
bgogICAgICAgIGxvY2FsIGNvcHQ9KC0tYmFyZSAtcSkKICAgICAgICBbICIkU0lOQ0UiID0gZnVs
bCBdIHx8IGNvcHQrPSgtLXNoYWxsb3ctc2luY2U9IiRTSU5DRSIpCiAgICAgICAgaWYgISBnaXQg
Y2xvbmUgIiR7Y29wdFtAXX0iICIkdXJsIiAiJGdpdCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAg
ICAgICAgICAgIHJtIC1yZiAiJGdpdCIKICAgICAgICAgICAgIyBzaGFsbG93LXNpbmNlIGZhaWxz
IHdoZW4gbm90aGluZyBpcyBuZXdlciB0aGFuIFNJTkNFOiByZXRyeSB3aXRoIGRlcHRoIDEgaGlz
dG9yeQogICAgICAgICAgICBpZiBbICIkU0lOQ0UiID0gZnVsbCBdIHx8ICEgZ2l0IGNsb25lIC0t
YmFyZSAtcSAtLWRlcHRoIDUwICIkdXJsIiAiJGdpdCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAg
ICAgICAgICAgICAgICBybSAtcmYgIiRnaXQiCiAgICAgICAgICAgICAgICBlY2hvICIkbmFtZSB8
IG5vLWdlYXIgfCAtIHwgLSB8IC0gfCAtIiB8IHRlZSAiJG91dCIKICAgICAgICAgICAgICAgIHJl
dHVybiAwCiAgICAgICAgICAgIGZpCiAgICAgICAgZmkKICAgIGZpCiAgICAjIHNoYWxsb3ctc2lu
Y2UgZHJvcHMgcmVmcyB3aXRoIG5vIGNvbW1pdHMgYWZ0ZXIgU0lOQ0U6IHJldHJ5IHdpdGggYSBm
dWxsIGNsb25lCiAgICBpZiAhIGdpdCAtQyAiJGdpdCIgcmV2LXBhcnNlIC1xIC0tdmVyaWZ5IEhF
QUQgPi9kZXYvbnVsbCAmJiBbIC1mICIkZ2l0L3NoYWxsb3ciIF07IHRoZW4KICAgICAgICBkZWVw
ZW4gIiRnaXQiICIkdXJsIiB8fCB0cnVlCiAgICBmaQogICAgaWYgISBnaXQgLUMgIiRnaXQiIHJl
di1wYXJzZSAtcSAtLXZlcmlmeSBIRUFEID4vZGV2L251bGw7IHRoZW4KICAgICAgICBlY2hvICIk
bmFtZSB8IG5vLWhlYWQgKGdlYXJzIEhFQUQgYnJhbmNoIG1pc3NpbmcsIGJ1aWx0IGZyb20gc3Jw
bSkgfCAtIHwgLSB8IC0gfCAtIiB8IHRlZSAiJG91dCIKICAgICAgICByZXR1cm4gMAogICAgZmkK
CiAgICAjIGEgc2hhbGxvdyBib3VuZGFyeSBjb21taXQgbG9zZXMgYWxsIGl0cyBwYXJlbnRzIChh
IG1lcmdlIHRoZXJlIGJlY29tZXMgaW52aXNpYmxlKToKICAgICMgZGVlcGVuIHdoZW4gYSBib3Vu
ZGFyeSBtZXJnZSBjb21taXQgaXMgbmV3ZXIgdGhhbiB0aGUgZmlyc3QgcGVyaW9kIHN0YXJ0CiAg
ICBpZiBbIC1mICIkZ2l0L3NoYWxsb3ciIF07IHRoZW4KICAgICAgICBsb2NhbCBzYgogICAgICAg
IHdoaWxlIHJlYWQgLXIgc2I7IGRvCiAgICAgICAgICAgICMgY29tbWl0IG9iamVjdHMga2VlcCB0
aGVpciBwYXJlbnQgbGluZXMgZXZlbiBhdCB0aGUgc2hhbGxvdyBib3VuZGFyeQogICAgICAgICAg
ICBbICIkKGdpdCAtQyAiJGdpdCIgY2F0LWZpbGUgLXAgIiRzYiIgMj4vZGV2L251bGwgfCBzZWQg
Jy9eJC9xJyB8IGdyZXAgLWMgJ15wYXJlbnQgJykiIC1nZSAyIF0gfHwgY29udGludWUKICAgICAg
ICAgICAgaWYgW1sgISAiJChnaXQgLUMgIiRnaXQiIGxvZyAtMSAtLWZvcm1hdD0lY2QgLS1kYXRl
PXNob3J0ICIkc2IiIDI+L2Rldi9udWxsKSIgPCAiJFAxX0ZST00iIF1dOyB0aGVuCiAgICAgICAg
ICAgICAgICBkZWVwZW4gIiRnaXQiICIkdXJsIiB8fCB0cnVlCiAgICAgICAgICAgICAgICBicmVh
awogICAgICAgICAgICBmaQogICAgICAgIGRvbmUgPCAiJGdpdC9zaGFsbG93IgogICAgZmkKCiAg
ICBsb2NhbCBvdXRwZXI9MAogICAgZm9yIHBhc3MgaW4gMSAyOyBkbwogICAgICAgIGFmZmVjdGVk
PTAgb3V0cGVyPTAgbGluZXM9IiIgZmlyc3Q9IiIgbG9jYWxfY3V0PTAKICAgICAgICB3aGlsZSBy
ZWFkIC1yIG0gZDsgZG8KICAgICAgICAgICAgaWYgISBnaXQgLUMgIiRnaXQiIGNhdC1maWxlIC1l
ICIkbV4xIiAyPi9kZXYvbnVsbCB8fCAhIGdpdCAtQyAiJGdpdCIgY2F0LWZpbGUgLWUgIiRtXjIi
IDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbF9jdXQ9MTsgYnJlYWsKICAg
ICAgICAgICAgZmkKICAgICAgICAgICAgZ2l0IC1DICIkZ2l0IiBkaWZmIC0tcXVpZXQgIiRtXjEi
ICIkbSIgMj4vZGV2L251bGwgfHwgY29udGludWUKICAgICAgICAgICAgZ2l0IC1DICIkZ2l0IiBk
aWZmIC0tcXVpZXQgIiRtXjEiICIkbV4yIiAyPi9kZXYvbnVsbCAmJiBjb250aW51ZQogICAgICAg
ICAgICBiYXNlPSQoZ2l0IC1DICIkZ2l0IiBtZXJnZS1iYXNlICIkbV4xIiAiJG1eMiIgMj4vZGV2
L251bGwpIHx8IGJhc2U9IiIKICAgICAgICAgICAgaWYgWyAteiAiJGJhc2UiIF07IHRoZW4KICAg
ICAgICAgICAgICAgIFsgLWYgIiRnaXQvc2hhbGxvdyIgXSAmJiB7IGxvY2FsX2N1dD0xOyBicmVh
azsgfQogICAgICAgICAgICAgICAgIyB1bnJlbGF0ZWQgaGlzdG9yaWVzOiBvdGhlciBzaWRlIGJy
b3VnaHQgaXRzIHdob2xlIHRyZWUKICAgICAgICAgICAgZWxpZiBnaXQgLUMgIiRnaXQiIGRpZmYg
LS1xdWlldCAiJGJhc2UiICIkbV4yIiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgZmkKICAgICAgICAgICAgaWYgaW5fcGVyaW9kICIkZCI7IHRo
ZW4KICAgICAgICAgICAgICAgIGFmZmVjdGVkPSQoKGFmZmVjdGVkICsgMSkpCiAgICAgICAgICAg
ICAgICBsaW5lcys9IiAgICBvdXJzOiAkKGdpdCAtQyAiJGdpdCIgbG9nIC0xIC0tZm9ybWF0PScl
aCAlY2QgJXMnIC0tZGF0ZT1zaG9ydCAiJG0iKSIkJ1xuJwogICAgICAgICAgICAgICAgZmlyc3Q9
JGQKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgb3V0cGVyPSQoKG91dHBlciArIDEp
KQogICAgICAgICAgICAgICAgbGluZXMrPSIgICAgb3VyczogJChnaXQgLUMgIiRnaXQiIGxvZyAt
MSAtLWZvcm1hdD0nJWggJWNkICVzJyAtLWRhdGU9c2hvcnQgIiRtIikgKG91dCBvZiBwZXJpb2Qp
IiQnXG4nCiAgICAgICAgICAgIGZpCiAgICAgICAgZG9uZSA8IDwoZ2l0IC1DICIkZ2l0IiBsb2cg
LS1tZXJnZXMgLS1maXJzdC1wYXJlbnQgLS1mb3JtYXQ9JyVIICVjZCcgLS1kYXRlPXNob3J0IEhF
QUQpCiAgICAgICAgWyAiJGxvY2FsX2N1dCIgPSAxIF0gJiYgWyAiJHBhc3MiID0gMSBdICYmIGRl
ZXBlbiAiJGdpdCIgIiR1cmwiICYmIGNvbnRpbnVlCiAgICAgICAgYnJlYWsKICAgIGRvbmUKCiAg
ICBsb2NhbCBydWxlcwogICAgcnVsZXM9JChnaXQgLUMgIiRnaXQiIGNhdC1maWxlIC1wIEhFQUQ6
LmdlYXIvcnVsZXMgMj4vZGV2L251bGwgfHwgdHJ1ZSkKICAgIHNyYz0kKHByaW50ZiAnJXNcbicg
IiRydWxlcyIgfCBhcmNoaXZlX3NvdXJjZSkKICAgIHJlZj0kKHByaW50ZiAnJXNcbicgIiRydWxl
cyIgfCBzZWQgLW5FICdzL14odGFyfHppcClbYS16MC05Ll0qOltbOnNwYWNlOl1dKihbXls6c3Bh
Y2U6XTpdKyk6LiovXDIvcCcgfCBzZWQgLW4gMXApCgogICAgbG9jYWwgZmlsZXM9IiIKICAgIGlm
IFsgIiRhZmZlY3RlZCIgLWd0IDAgXSAmJiBbWyAiJHNyYyIgPT0gdHJlZSogfHwgIiRzcmMiID09
ICorZGlmZiBdXTsgdGhlbgogICAgICAgIHJpc2s9eWVzCiAgICAgICAgdmVyPSQoc3BlY192ZXJz
aW9uICIkZ2l0IikKICAgICAgICB0Yz0kKHVwc3RyZWFtX3RhZ19jb21taXQgIiRnaXQiICIkdmVy
IiAiJHJlZiIpCiAgICAgICAgaWYgWyAtbiAiJHRjIiBdICYmIGdpdCAtQyAiJGdpdCIgY2F0LWZp
bGUgLWUgIiR7dGMlJSAqfV57Y29tbWl0fSIgMj4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICAg
c3RhdD0kKGdpdCAtQyAiJGdpdCIgZGlmZiAtLXNob3J0c3RhdCAiJHt0YyUlICp9IiBIRUFEIC0t
IC4gJzohLmdlYXInIHwgc2VkICdzL14gKi8vJykKICAgICAgICAgICAgWyAtbiAiJHN0YXQiIF0g
fHwgc3RhdD0iaWRlbnRpY2FsIgogICAgICAgICAgICBmaWxlcz0kKGdpdCAtQyAiJGdpdCIgZGlm
ZiAtLW5hbWUtc3RhdHVzICIke3RjJSUgKn0iIEhFQUQgLS0gLiAnOiEuZ2VhcicgfCBzZWQgLW4g
JzEsMTBzL14vICAgIGZpbGU6IC9wJykKICAgICAgICAgICAgc3RhdD0idnMgJHt0YyMqIH06ICRz
dGF0IgogICAgICAgIGVsc2UKICAgICAgICAgICAgc3RhdD0ibm8gdXBzdHJlYW0gdGFnIGZvciAn
JHt2ZXI6LT99JyIKICAgICAgICBmaQogICAgICAgICMgc2lzeXBodXMgYnVpbGRzIGFmdGVyIHRo
ZSBmaXJzdCAob2xkZXN0KSBvdXJzLW1lcmdlCiAgICAgICAgYnVpbGRzPSQoZ2l0IC1DICIkZ2l0
IiBmb3ItZWFjaC1yZWYgJ3JlZnMvdGFncy9nYi1zaXN5cGh1cy10YXNrKicgXAogICAgICAgICAg
ICAgICAgICAgICAtLWZvcm1hdD0nJShjcmVhdG9yZGF0ZTpzaG9ydCkgJShyZWZuYW1lOnNob3J0
KScgfAogICAgICAgICAgICAgICAgIGF3ayAtdiBmPSIkZmlyc3QiICckMSA+PSBmJyB8IHNvcnQg
fCB3aGlsZSByZWFkIC1yIGJkIGJ0OyBkbwogICAgICAgICAgICAgICAgICAgICBwcmludGYgJyVz
KCVzKVxuJyAiJChnaXQgLUMgIiRnaXQiIGxvZyAtMSAtLWZvcm1hdD0lcyAiJGJ0IiB8IGN1dCAt
YzEtMzApIiAiJGJkIgogICAgICAgICAgICAgICAgIGRvbmUgfCBhd2sgLUYnKCcgJyFzZWVuWyQx
XSsrJyB8IHRyICdcbicgJyAnKQogICAgICAgIGJ1aWxkcz0ke2J1aWxkczotbm9uZX0KICAgIGZp
CgogICAgewogICAgICAgIGlmIFsgIiRhZmZlY3RlZCIgLWd0IDAgXTsgdGhlbgogICAgICAgICAg
ICBlY2hvICIkbmFtZSB8IHllcyAkYWZmZWN0ZWQkKFsgIiRvdXRwZXIiID0gMCBdIHx8IGVjaG8g
IiAoKyRvdXRwZXIgb3V0IG9mIHBlcmlvZCkiKSB8ICRzcmMgfCAkcmlzayB8ICRzdGF0IHwgJGJ1
aWxkcyIKICAgICAgICBlbGlmIFsgIiRvdXRwZXIiIC1ndCAwIF07IHRoZW4KICAgICAgICAgICAg
ZWNobyAiJG5hbWUgfCBvdXQtb2YtcGVyaW9kICRvdXRwZXIgfCAkc3JjIHwgbm8gfCAtIHwgLSIK
ICAgICAgICBlbHNlCiAgICAgICAgICAgIGVjaG8gIiRuYW1lIHwgbm8gfCAkc3JjIHwgbm8gfCAt
IHwgLSIKICAgICAgICBmaQogICAgICAgIHByaW50ZiAnJXMnICIkbGluZXMiCiAgICAgICAgWyAt
eiAiJGZpbGVzIiBdIHx8IHByaW50ZiAnJXNcbicgIiRmaWxlcyIKICAgIH0gfCB0ZWUgIiRvdXQi
CgogICAgaWYgWyAiJGFmZmVjdGVkIiA9IDAgXSAmJiBbICIkb3V0cGVyIiA9IDAgXSAmJiBbICIk
S0VFUCIgPSAwIF07IHRoZW4KICAgICAgICBybSAtcmYgIiRnaXQiCiAgICBmaQp9CgppZiBbIC1u
ICIkT05FIiBdOyB0aGVuCiAgICBhdWRpdF9vbmUgIiRPTkUiCiAgICBleGl0IDAKZmkKCm5hbWVz
PSgiJEAiKQppZiBbIC1uICIkTElTVEZJTEUiIF07IHRoZW4KICAgIG1hcGZpbGUgLXQgLU8gIiR7
I25hbWVzW0BdfSIgbmFtZXMgPCA8KGlmIFsgIiRMSVNURklMRSIgPSAtIF07IHRoZW4gY2F0OyBl
bHNlIGNhdCAiJExJU1RGSUxFIjsgZmkpCmVsaWYgWyAkeyNuYW1lc1tAXX0gLWVxIDAgXSAmJiBb
ICEgLXQgMCBdOyB0aGVuCiAgICBtYXBmaWxlIC10IG5hbWVzCmZpClsgJHsjbmFtZXNbQF19IC1n
dCAwIF0gfHwgdXNhZ2UgMQoKZWNobyAiTkFNRSB8IGFmZmVjdGVkIHwgYXJjaGl2ZSB8IFJJU0sg
fCBkaWZmLXN0YXQgfCBidWlsZHMtYWZ0ZXIiCnByaW50ZiAnJXNcbicgIiR7bmFtZXNbQF19IiB8
IGdyZXAgLXYgJ15bWzpzcGFjZTpdXSpcKCNcfCRcKScgfAogICAgeGFyZ3MgLXIgLVAgIiRKT0JT
IiAtSXt9ICIkMCIgLXcgIiRXT1JLRElSIiAtcyAiJFNJTkNFIiAkKFsgIiRLRUVQIiA9IDEgXSAm
JiBlY2hvIC1rKSAtMSB7fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>