<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22675</bug_id>
          
          <creation_ts>2008-12-05 01:17:10 -0800</creation_ts>
          <short_desc>wxWidgets bindings don&apos;t have context menu support</short_desc>
          <delta_ts>2008-12-19 19:19:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit wx</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Diggilin">mr.diggilin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101449</commentid>
    <comment_count>0</comment_count>
    <who name="Diggilin">mr.diggilin</who>
    <bug_when>2008-12-05 01:17:10 -0800</bug_when>
    <thetext>wxWidgets bindings don&apos;t respond when a context menu is in order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101450</commentid>
    <comment_count>1</comment_count>
      <attachid>25766</attachid>
    <who name="Diggilin">mr.diggilin</who>
    <bug_when>2008-12-05 01:20:21 -0800</bug_when>
    <thetext>Created attachment 25766
patch to add wx port context menus</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102441</commentid>
    <comment_count>2</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2008-12-13 10:13:29 -0800</bug_when>
    <thetext>When I try this patch, I get an assert in ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String&amp; title, ContextMenu* subMenu). 

Here&apos;s the assert message:

[Debug] 09:57:24: /BUILD/wxPython-src-2.8.8.1/src/common/menucmn.cpp(381): assert &quot;parentMenu != NULL&quot; failed in wxMenuItemBase(): menuitem should have a menu

It&apos;s possible that you built in release mode and thus didn&apos;t see this assert. To build debug, you can run `WebKitTools/Scripts/set-webkit-configuration --wx --debug`.

In any case, I had to give an r- to this patch because an assert like that usually indicates that on at least one platform, the approach you&apos;re trying won&apos;t work. I think what we need to do is mimic the GTK and QT ports here, and have a PlatformMenuItemDescription structure that includes a native structure, but the actual wxMenuItem(s) will be created in the ContextMenu::appendItem call. The ContextMenuItem constructors themselves will just store and return the values passed to them inside the PlatformMenuItemDescription struct.

Thanks for all your work on this!
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102461</commentid>
    <comment_count>3</comment_count>
    <who name="Diggilin">mr.diggilin</who>
    <bug_when>2008-12-13 15:01:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; When I try this patch, I get an assert in
&gt; ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction
&gt; action, const String&amp; title, ContextMenu* subMenu). 
&gt; 
&gt; Here&apos;s the assert message:
&gt; 
&gt; [Debug] 09:57:24: /BUILD/wxPython-src-2.8.8.1/src/common/menucmn.cpp(381):
&gt; assert &quot;parentMenu != NULL&quot; failed in wxMenuItemBase(): menuitem should have a
&gt; menu
&gt; 
&gt; It&apos;s possible that you built in release mode and thus didn&apos;t see this assert.
&gt; To build debug, you can run `WebKitTools/Scripts/set-webkit-configuration --wx
&gt; --debug`.
&gt; 
&gt; In any case, I had to give an r- to this patch because an assert like that
&gt; usually indicates that on at least one platform, the approach you&apos;re trying
&gt; won&apos;t work. I think what we need to do is mimic the GTK and QT ports here, and
&gt; have a PlatformMenuItemDescription structure that includes a native structure,
&gt; but the actual wxMenuItem(s) will be created in the ContextMenu::appendItem
&gt; call. The ContextMenuItem constructors themselves will just store and return
&gt; the values passed to them inside the PlatformMenuItemDescription struct.
&gt; 
&gt; Thanks for all your work on this!
&gt; 

The default constructor for a menu item is NULL, apparently this is a wx bug that has been fixed in later versions:
http://trac.wxwidgets.org/ticket/3425

Request that this be disregarded and patch reconsidered?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102868</commentid>
    <comment_count>4</comment_count>
      <attachid>26117</attachid>
    <who name="Diggilin">mr.diggilin</who>
    <bug_when>2008-12-17 23:35:28 -0800</bug_when>
    <thetext>Created attachment 26117
patch for wx binding&apos;s Context Menu

Fixes a broken select statement in the previous patch
Moves context menu item creation to ContextMenu::appendItem
No longer uses stock wx IDs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103059</commentid>
    <comment_count>5</comment_count>
    <who name="Kevin Ollivier">kevino</who>
    <bug_when>2008-12-19 19:19:27 -0800</bug_when>
    <thetext>Landed in r39416, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25766</attachid>
            <date>2008-12-05 01:20:21 -0800</date>
            <delta_ts>2008-12-17 23:35:28 -0800</delta_ts>
            <desc>patch to add wx port context menus</desc>
            <filename>wxcontextmenupatch.diff</filename>
            <type>text/plain</type>
            <size>23693</size>
            <attacher name="Diggilin">mr.diggilin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V3gu
Y3BwCShyZXZpc2lvbiAzODgzOCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRXeC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlIDxz
dGRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMyArMzksMTMgQEAKIAogdm9p
ZCBDb250ZXh0TWVudUNsaWVudFd4Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBDb250ZXh0TWVudTo6Y2xlYXJJdGVtQWN0aW9ucygpOworICAg
IGRlbGV0ZSB0aGlzOwogfQogCi1QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNs
aWVudFd4OjpnZXRDdXN0b21NZW51RnJvbURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSopCitQbGF0
Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudUNsaWVudFd4OjpnZXRDdXN0b21NZW51RnJv
bURlZmF1bHRJdGVtcyhDb250ZXh0TWVudSogbWVudSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAwOworICAgIHJldHVybiBtZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbigpOwogfQogCiB2b2lkIENvbnRleHRNZW51Q2xpZW50V3g6OmNvbnRleHRNZW51SXRlbVNl
bGVjdGVkKENvbnRleHRNZW51SXRlbSosCkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDM5MDIwKQorKysgV2ViS2l0
L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDA4LTEyLTA0
ICBtaWdnaWxpbiAgPG1yLmRpZ2dpbGluQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBLZXZpbiBPbGxpdmllci4KKworCUFkZCBjb250ZXh0IG1lbnUgc3VwcG9ydCB0byB3eAorCisg
ICAgICAgICogV2ViS2l0U3VwcG9ydC9Db250ZXh0TWVudUNsaWVudFd4LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3g6OmNvbnRleHRNZW51RGVzdHJveWVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q2xpZW50V3g6OmdldEN1c3RvbU1lbnVGcm9tRGVm
YXVsdEl0ZW1zKToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKHd4V2ViVmlldzo6
T25Nb3VzZUV2ZW50cyk6CisgICAgICAgICh3eFdlYlZpZXc6Ok9uQ29udGV4dE1lbnVFdmVudHMp
OgorICAgICAgICAod3hXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMpOgorICAgICAgICAqIFdl
YlZpZXcuaDoKKwogMjAwOC0xMi0wMiAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBXZWJL
aXQvd3gvV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShy
ZXZpc2lvbiAzODgzOCkKKysrIFdlYktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsOSBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAu
aCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRl
ICJDb250ZXh0TWVudUl0ZW0uaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTcyLDYgKzE3NSw4
IEBACiAgICAgRVZUX1BBSU5UKHd4V2ViVmlldzo6T25QYWludCkKICAgICBFVlRfU0laRSh3eFdl
YlZpZXc6Ok9uU2l6ZSkKICAgICBFVlRfTU9VU0VfRVZFTlRTKHd4V2ViVmlldzo6T25Nb3VzZUV2
ZW50cykKKyAgICBFVlRfQ09OVEVYVF9NRU5VKHd4V2ViVmlldzo6T25Db250ZXh0TWVudUV2ZW50
cykKKyAgICBFVlRfTUVOVSh3eElEX0FOWSwgd3hXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMp
CiAgICAgRVZUX0tFWV9ET1dOKHd4V2ViVmlldzo6T25LZXlFdmVudHMpCiAgICAgRVZUX0tFWV9V
UCh3eFdlYlZpZXc6Ok9uS2V5RXZlbnRzKQogICAgIEVWVF9DSEFSKHd4V2ViVmlldzo6T25LZXlF
dmVudHMpCkBAIC01MDksNiArNTE0LDQ5IEBACiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+bW91c2VNb3ZlZCh3a0V2ZW50KTsKIH0KIAordm9pZCB3eFdlYlZpZXc6Ok9uQ29udGV4dE1l
bnVFdmVudHMod3hDb250ZXh0TWVudUV2ZW50JiBldmVudCkKK3sKKyAgICBtX2ltcGwtPnBhZ2Ut
PmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CisgICAgd3hQb2lu
dCBsb2NhbEV2ZW50UG9pbnQgPSBTY3JlZW5Ub0NsaWVudChldmVudC5HZXRQb3NpdGlvbigpKTsK
KworICAgIGlmICghbV9tYWluRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAg
V2ViQ29yZTo6RnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fbWFpbkZyYW1lLT5HZXRGcmFtZSgpOwor
ICAgIGlmICghZm9jdXNlZEZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
Q3JlYXRlIGZha2UgbW91c2UgZXZlbnQgZnJvbSB0aGUgd3hDb250ZXh0TWVudUV2ZW50CisgICAg
d3hNb3VzZUV2ZW50IG1vdXNlRXZlbnQod3hFVlRfUklHSFRfRE9XTik7CisgICAgbW91c2VFdmVu
dC5tX3ggPSBsb2NhbEV2ZW50UG9pbnQueDsKKyAgICBtb3VzZUV2ZW50Lm1feSA9IGxvY2FsRXZl
bnRQb2ludC55OworICAgIFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCB3a0V2ZW50KG1vdXNl
RXZlbnQsIGV2ZW50LkdldFBvc2l0aW9uKCkpOworCisgICAgYm9vbCBoYW5kbGVkRXZlbnQgPSBm
b2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudCh3a0V2ZW50
KTsKKyAgICBpZiAoIWhhbmRsZWRFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29y
ZTo6Q29udGV4dE1lbnUqIGNvcmVNZW51ID0gbV9pbXBsLT5wYWdlLT5jb250ZXh0TWVudUNvbnRy
b2xsZXIoKS0+Y29udGV4dE1lbnUoKTsKKyAgICBpZiAoIWNvcmVNZW51KQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJDb3JlOjpQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51V3ggPSBjb3Jl
TWVudS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIGlmICghbWVudVd4KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBQb3B1cE1lbnUobWVudVd4LCBsb2NhbEV2ZW50UG9pbnQpOworfQorCit2
b2lkIHd4V2ViVmlldzo6T25NZW51U2VsZWN0RXZlbnRzKHd4Q29tbWFuZEV2ZW50JiBldmVudCkK
K3sKKyAgICBXZWJDb3JlOjpDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXZWJDb3JlOjpDb250ZXh0
TWVudTo6aXRlbVdpdGhJZCAoZXZlbnQuR2V0SWQoKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2ltcGwtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5j
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChpdGVtKTsKKyAgICBkZWxldGUgaXRlbTsKK30KKwogYm9v
bCB3eFdlYlZpZXc6OkNhbkNvcHkoKQogewogICAgIGlmIChtX21haW5GcmFtZSkKSW5kZXg6IFdl
YktpdC93eC9XZWJWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuaAkocmV2
aXNpb24gMzg4MzgpCisrKyBXZWJLaXQvd3gvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDggQEAKICAgICB2b2lkIE9uUGFpbnQod3hQYWludEV2ZW50JiBldmVudCk7CiAg
ICAgdm9pZCBPblNpemUod3hTaXplRXZlbnQmIGV2ZW50KTsKICAgICB2b2lkIE9uTW91c2VFdmVu
dHMod3hNb3VzZUV2ZW50JiBldmVudCk7CisgICAgdm9pZCBPbkNvbnRleHRNZW51RXZlbnRzKHd4
Q29udGV4dE1lbnVFdmVudCYgZXZlbnQpOworICAgIHZvaWQgT25NZW51U2VsZWN0RXZlbnRzKHd4
Q29tbWFuZEV2ZW50JiBldmVudCk7CiAgICAgdm9pZCBPbktleUV2ZW50cyh3eEtleUV2ZW50JiBl
dmVudCk7CiAgICAgdm9pZCBPblNldEZvY3VzKHd4Rm9jdXNFdmVudCYgZXZlbnQpOwogICAgIHZv
aWQgT25LaWxsRm9jdXMod3hGb2N1c0V2ZW50JiBldmVudCk7CkluZGV4OiBXZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzkwMjApCisr
KyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDA4
LTEyLTA0ICBtaWdnaWxpbiAgPG1yLmRpZ2dpbGluQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBLZXZpbiBPbGxpdmllci4KKworCUFkZCBjb250ZXh0IG1lbnUgc3VwcG9ydCB0byB3
eAorCisgICAgICAgICogcGxhdGZvcm0vQ29udGV4dE1lbnUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9Db250ZXh0TWVudUl0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybU1lbnVEZXNj
cmlwdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL3d4L0NvbnRleHRNZW51SXRlbVd4LmNwcDog
QWRkZWQuCisgICAgICAgIChjb250ZXh0TWVudUFjdGlvblRvV3hJRCk6CisgICAgICAgIChDb250
ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChDb250ZXh0TWVudUl0ZW06
On5Db250ZXh0TWVudUl0ZW0pOgorICAgICAgICAoQ29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxh
dGZvcm1EZXNjcmlwdGlvbik6CisgICAgICAgIChDb250ZXh0TWVudUl0ZW06OnR5cGUpOgorICAg
ICAgICAoQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAgKENvbnRleHRNZW51SXRl
bTo6YWN0aW9uKToKKyAgICAgICAgKENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAg
ICAgKENvbnRleHRNZW51SXRlbTo6dGl0bGUpOgorICAgICAgICAoQ29udGV4dE1lbnVJdGVtOjpz
ZXRUaXRsZSk6CisgICAgICAgIChDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUpOgorICAgICAg
ICAoQ29udGV4dE1lbnVJdGVtOjpzZXRDaGVja2VkKToKKyAgICAgICAgKENvbnRleHRNZW51SXRl
bTo6c2V0RW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ29udGV4dE1lbnVXeC5jcHA6
IEFkZGVkLgorICAgICAgICAoQ29udGV4dE1lbnU6OmNsZWFySXRlbUFjdGlvbnMpOgorICAgICAg
ICAoQ29udGV4dE1lbnU6Oml0ZW1XaXRoSWQpOgorICAgICAgICAoQ29udGV4dE1lbnU6OkNvbnRl
eHRNZW51KToKKyAgICAgICAgKENvbnRleHRNZW51Ojp+Q29udGV4dE1lbnUpOgorICAgICAgICAo
Q29udGV4dE1lbnU6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnNldFBsYXRm
b3JtRGVzY3JpcHRpb24pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnBsYXRmb3JtRGVzY3JpcHRp
b24pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKToK
KyAgICAgICAgKiBwbGF0Zm9ybS93eC9Mb2NhbGl6ZWRTdHJpbmdzV3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAgICAg
IChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJk
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2lu
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Jl
bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVu
dUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFn
TG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9yZUdy
YW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1BhbmVs
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlw
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1hcldp
dGhTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdGb250TWVu
dSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1l
bnVJdGVtVGFnT3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdX
cml0aW5nRGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1U
YWdUZXh0RGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1U
YWdEZWZhdWx0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z0xlZnRUb1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1JpZ2h0
VG9MZWZ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwOgor
ICAgICAgICAqIHdlYmNvcmUtd3guYmtsOgorCiAyMDA4LTEyLTA0ICBLZXZpbiBXYXR0ZXJzICA8
a2V2aW53YXR0ZXJzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBPbGxp
dmllci4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHJldmlzaW9uIDM4ODM4KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4
IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VsaWYgUExBVEZPUk0oUVQpCiAjaW5j
bHVkZSA8UU1lbnU+CisjZWxpZiBQTEFURk9STShXWCkKKyNpbmNsdWRlICJIYXNoTWFwLmgiCiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjksMTAgKzcxLDE1IEBACiAgICAgICAg
IHZvaWQgc2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbik7CiAK
ICAgICAgICAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gcmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRp
b24oKTsKLQorI2lmIFBMQVRGT1JNKFdYKQorICAgICAgICBzdGF0aWMgdm9pZCBjbGVhckl0ZW1B
Y3Rpb25zKCk7CisgICAgICAgIHN0YXRpYyBDb250ZXh0TWVudUl0ZW0qIGl0ZW1XaXRoSWQoaW50
KTsKKyNlbmRpZgogICAgIHByaXZhdGU6CiAgICAgICAgIEhpdFRlc3RSZXN1bHQgbV9oaXRUZXN0
UmVzdWx0OwotCisjaWYgUExBVEZPUk0oV1gpCisgICAgICAgIHN0YXRpYyBXVEY6Okhhc2hNYXA8
aW50LCBDb250ZXh0TWVudUFjdGlvbj4gc19pdGVtQWN0aW9uczsKKyNlbmRpZgogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAgICAgLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCB0aGUgUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24gdHlwZWRlZgogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
ZW51RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
TWVudURlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDM4ODM4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
CiAjZWxpZiBQTEFURk9STShHVEspCiB0eXBlZGVmIHN0cnVjdCBfR3RrTWVudSBHdGtNZW51Owog
I2VsaWYgUExBVEZPUk0oV1gpCi1jbGFzcyB3eE1lbnU7CisjaW5jbHVkZSA8d3gvbWVudS5oPgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gv
TG9jYWxpemVkU3RyaW5nc1d4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3d4
L0xvY2FsaXplZFN0cmluZ3NXeC5jcHAJKHJldmlzaW9uIDM4ODM4KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS93eC9Mb2NhbGl6ZWRTdHJpbmdzV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxODIg
KzY4LDE4MiBAQAogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRv
dygpIAogeyAKLSAgICByZXR1cm4gU3RyaW5nKCk7IAorICAgIHJldHVybiBTdHJpbmcoIk9wZW4g
TGluayBpbiBOZXcgV2luZG93Iik7IAogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRG93
bmxvYWRMaW5rVG9EaXNrKCkgCiB7IAotICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgcmV0dXJu
IFN0cmluZygiRG93bmxvYWQgTGluayB0byBEaXNrIik7IAogfQogCiBTdHJpbmcgY29udGV4dE1l
bnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCgpIAogeyAKLSAgICByZXR1cm4gU3RyaW5nKCk7
IAorICAgIHJldHVybiBTdHJpbmcoIkNvcHkgTGluayB0byBDbGlwYm9hcmQiKTsgCiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdygpIAogeyAKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7IAorICAgIHJldHVybiBTdHJpbmcoIk9wZW4gSW1hZ2UgaW4gTmV3IFdp
bmRvdyIpOyAKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rp
c2soKSAKIHsgCi0gICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICByZXR1cm4gU3RyaW5nKCJEb3du
bG9hZCBJbWFnZSB0byBEaXNrIik7IAogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29w
eUltYWdlVG9DbGlwYm9hcmQoKSAKIHsgCi0gICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICByZXR1
cm4gU3RyaW5nKCJDb3B5IEltYWdlIHRvIENsaXBib2FyZCIpOyAKIH0KIAogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3V2luZG93KCkgCiB7IAotICAgIHJldHVybiBTdHJp
bmcoKTsgCisgICAgcmV0dXJuIFN0cmluZygiT3BlbiBGcmFtZSBpbiBOZXcgV2luZG93Iik7IAog
fQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ29weSgpIAogewotICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJDb3B5Iik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdHb0JhY2soKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0
cmluZygiR28gQmFjayIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnR29Gb3J3YXJk
KCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIkdvIEZvcndh
cmQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1N0b3AoKSAKIHsKLSAgICByZXR1
cm4gU3RyaW5nKCk7CisJcmV0dXJuIFN0cmluZygiU3RvcCIpOwogfQogCiBTdHJpbmcgY29udGV4
dE1lbnVJdGVtVGFnUmVsb2FkKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVy
biBTdHJpbmcoIlJlbG9hZCIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ3V0KCkg
CiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIkN1dCIpOwogfQog
CiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnUGFzdGUoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgcmV0dXJuIFN0cmluZygiUGFzdGUiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ05vR3Vlc3Nlc0ZvdW5kKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBTdHJpbmcoIk5vIEd1ZXNzZXMgRm91bmQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0lnbm9yZVNwZWxsaW5nKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBTdHJpbmcoIklnbm9yZSBTcGVsbGluZyIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJ
dGVtVGFnTGVhcm5TcGVsbGluZygpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCJMZWFybiBTcGVsbGluZyIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVt
VGFnU2VhcmNoV2ViKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJp
bmcoIlNlYXJjaCBXZWIiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcElu
RGljdGlvbmFyeSgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCJMb29rIFVwIGluIERpY3Rpb25hcnkiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z09wZW5MaW5rKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmco
Ik9wZW4gTGluayIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnSWdub3JlR3JhbW1h
cigpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJJZ25vcmUg
R3JhbW1hciIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdNZW51KCkg
CiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIlNwZWxsaW5nIik7
CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTaG93U3BlbGxpbmdQYW5lbChib29sIHNo
b3cpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJTaG93IFNw
ZWxsaW5nIFBhbmVsIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxs
aW5nKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIkNoZWNr
IFNwZWxsaW5nIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5n
V2hpbGVUeXBpbmcoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygiQ2hlY2sgU3BlbGxpbmcgV2hpbGUgVHlwaW5nIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdDaGVja0dyYW1tYXJXaXRoU3BlbGxpbmcoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5n
KCk7CisgICAgcmV0dXJuIFN0cmluZygiQ2hlY2sgR3JhbW1hciB3aXRoIFNwZWxsaW5nIik7CiB9
CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdGb250TWVudSgpIAogewotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJGb250Iik7CiB9CiAKIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdCb2xkKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBT
dHJpbmcoIkJvbGQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYygpIAog
ewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJJdGFsaWMiKTsKIH0K
IAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1VuZGVybGluZSgpIAogewotICAgIHJldHVybiBT
dHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJVbmRlcmxpbmUiKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ091dGxpbmUoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
cmV0dXJuIFN0cmluZygiT3V0bGluZSIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
V3JpdGluZ0RpcmVjdGlvbk1lbnUoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIFN0cmluZygiV3JpdGluZyBEaXJlY3Rpb24iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25NZW51KCkKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
cmV0dXJuIFN0cmluZygiVGV4dCBEaXJlY3Rpb24iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0RlZmF1bHREaXJlY3Rpb24oKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
cmV0dXJuIFN0cmluZygiRGVmYXVsdCBEaXJlY3Rpb24iKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ0xlZnRUb1JpZ2h0KCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBTdHJpbmcoIkxlZnQgdG8gUmlnaHQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ1JpZ2h0VG9MZWZ0KCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBT
dHJpbmcoIlJpZ2h0IHRvIExlZnQiKTsKIH0KIAogU3RyaW5nIHNlYXJjaE1lbnVOb1JlY2VudFNl
YXJjaGVzVGV4dCgpIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudUl0ZW1X
eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudUl0ZW1X
eC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4L0NvbnRleHRNZW51SXRl
bVd4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK2ludCBjb250ZXh0TWVudUFjdGlvblRvV3hJRChDb250ZXh0TWVudUFj
dGlvbiBhY3Rpb24pCit7CisgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICBjYXNlIENvbnRleHRN
ZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQ6CisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdDb3B5OgorICAgICAgICByZXR1cm4gd3hJRF9DT1BZOworICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnR29CYWNrOgorICAgICAgICByZXR1cm4gd3hJRF9CQUNLV0FSRDsKKyAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZDoKKyAgICAgICAgcmV0dXJuIHd4SURfRk9SV0FSRDsK
KyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1N0b3A6CisgICAgICAgIHJldHVybiB3eElEX1NU
T1A7CisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSZWxvYWQ6CisgICAgICAgIHJldHVybiB3
eElEX1JFRlJFU0g7CisgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdDdXQ6CisgICAgICAgIHJl
dHVybiB3eElEX0NVVDsKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1Bhc3RlOgorICAgICAg
ICByZXR1cm4gd3hJRF9QQVNURTsKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVBERkFjdHVhbFNp
emU6CisgICAgICAgIHJldHVybiB3eElEX1pPT01fMTAwOworICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtUERGWm9vbUluOgorICAgICAgICByZXR1cm4gd3hJRF9aT09NX0lOOworICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtUERGWm9vbU91dDoKKyAgICAgICAgcmV0dXJuIHd4SURfWk9PTV9PVVQ7Cisg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1QREZBdXRvU2l6ZToKKyAgICAgICAgcmV0dXJuIHd4SURf
Wk9PTV9GSVQ7IC8vRklYTUU6IGlzIHRoYXQgdGhlIGNvcnJlY3QgbWVhbmluZyBvZiBhdXRvc2l6
ZT8KKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVBERk5leHRQYWdlOgorICAgICAgICByZXR1cm4g
d3hJRF9GT1JXQVJEOworICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtUERGUHJldmlvdXNQYWdlOgor
ICAgICAgICByZXR1cm4gd3hJRF9CQUNLV0FSRDsKKyAgICBjYXNlIENvbnRleHRNZW51SXRlbVRh
Z0JvbGQ6CisgICAgICAgIHJldHVybiB3eElEX0JPTEQ7CisgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJdGFsaWM6CisgICAgICAgIHJldHVybiB3eElEX0lUQUxJQzsKKyAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1VuZGVybGluZToKKyAgICAgICAgcmV0dXJuIHd4SURfVU5ERVJMSU5FOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiB3eElEX0FOWTsKKyAgICB9Cit9CisKK0NvbnRl
eHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBt
ZW51SXRlbSkKK3sgCisgICAgLy9ub3QgcG9zc2libGUgd2l0aG91dCBhY3Rpb24sIGRvZXNuJ3Qg
c2VlbSB0byBnZXQgdXNlZAorfQorCitDb250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShD
b250ZXh0TWVudSogc3ViTWVudSkKK3sKKyAgICBpZiAoIXN1Yk1lbnUpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBzdWJNZW51V3ggPSBzdWJNZW51
LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpOworICAgIAorICAgIGlmICghc3ViTWVudVd4
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgd3hTdHJpbmcgbWVudVRpdGxlID0gc3ViTWVu
dS0+cGxhdGZvcm1EZXNjcmlwdGlvbigpLT5HZXRUaXRsZSgpOworICAgIAorICAgIG1fcGxhdGZv
cm1EZXNjcmlwdGlvbiA9IG5ldyB3eE1lbnVJdGVtKDAsIHd4SURfQU5ZLCBtZW51VGl0bGUsIHd4
VCgiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3hJVEVN
X05PUk1BTCwgc3ViTWVudVd4KTsKK30KKworQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0
ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlLCBDb250
ZXh0TWVudSogc3ViTWVudSkKK3sKKyAgICB3eEl0ZW1LaW5kIG1lbnVLaW5kOworICAgIG1fYWN0
aW9uID0gYWN0aW9uOworICAgIHd4U3RyaW5nIHRpdGxlV3godGl0bGUpOworICAgIGludCBpZFd4
ID0gY29udGV4dE1lbnVBY3Rpb25Ub1d4SUQoYWN0aW9uKTsKKyAgICAKKyAgICBzd2l0Y2ggKHR5
cGUpIHsKKyAgICBjYXNlIFNlcGFyYXRvclR5cGU6CisgICAgICAgIG1lbnVLaW5kID0gd3hJVEVN
X1NFUEFSQVRPUjsKKyAgICBjYXNlIENoZWNrYWJsZUFjdGlvblR5cGU6CisgICAgICAgIG1lbnVL
aW5kID0gd3hJVEVNX0NIRUNLOworICAgIGRlZmF1bHQ6CisgICAgICAgIG1lbnVLaW5kID0gd3hJ
VEVNX05PUk1BTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIGlmIChzdWJNZW51
KSB7CisgICAgICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IG5ldyB3eE1lbnVJdGVtKDAsIGlk
V3gsIHRpdGxlV3gsIHd4VCgiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lbnVLaW5kLCBzdWJNZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlv
bigpKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgIT0gU2VwYXJhdG9yVHlwZSkgeworICAgICAgICBt
X3BsYXRmb3JtRGVzY3JpcHRpb24gPSBuZXcgd3hNZW51SXRlbSgwLCBpZFd4LCB0aXRsZVd4LCB3
eFQoIiIpLCBtZW51S2luZCk7IAorICAgIH0gZWxzZSB7CisgICAgICAgIG1fcGxhdGZvcm1EZXNj
cmlwdGlvbiA9IG5ldyB3eE1lbnVJdGVtKCk7IAorICAgIH0KK30KKworQ29udGV4dE1lbnVJdGVt
Ojp+Q29udGV4dE1lbnVJdGVtKCkKK3sKKyAgICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uKQor
ICAgICAgICBkZWxldGUgbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworfQorCitQbGF0Zm9ybU1lbnVJ
dGVtRGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlv
bigpCit7CisgICAgUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gbV9w
bGF0Zm9ybURlc2NyaXB0aW9uOworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7CisgICAg
CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOworfQorCitDb250ZXh0TWVudUl0ZW1UeXBlIENvbnRl
eHRNZW51SXRlbTo6dHlwZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlv
bi0+SXNTdWJNZW51KCkpCisgICAgICAgIHJldHVybiBTdWJtZW51VHlwZTsKKyAgICAKKyAgICBz
d2l0Y2ggKG1fcGxhdGZvcm1EZXNjcmlwdGlvbi0+R2V0S2luZCgpKSB7CisgICAgY2FzZSB3eElU
RU1fU0VQQVJBVE9SOiAKKyAgICAgICAgcmV0dXJuIFNlcGFyYXRvclR5cGU7CisgICAgY2FzZSB3
eElURU1fQ0hFQ0s6CisgICAgICAgIHJldHVybiBDaGVja2FibGVBY3Rpb25UeXBlOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBBY3Rpb25UeXBlOworICAgIH0KK30KKwordm9pZCBDb250
ZXh0TWVudUl0ZW06OnNldFR5cGUoQ29udGV4dE1lbnVJdGVtVHlwZSkKK3sKKyAgICAvL2hvcGUg
dGhpcyBpc24ndCB0b28gdXNlZnVsLCB5b3UgY2FuJ3QgY2hhbmdlIHRoZSBtZW51IHR5cGUgYWZ0
ZXIgY3JlYXRpb24KKyAgICAvL2lmIGl0J3MgbmVlZGVkLCBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBw
bGF0Zm9ybURlc2NyaXB0aW9uIGJhc2VkIG9mZiB0aGUgb2xkCit9CisKK0NvbnRleHRNZW51QWN0
aW9uIENvbnRleHRNZW51SXRlbTo6YWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9hY3Rp
b247Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRBY3Rpb24oQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uKQoreworICAgIC8vaW4gdGhlb3J5IHRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZC4g
SWYgaXQgaXMsIHRoZXJlIHdpbGwgYmUgYSBzbWFsbCBwcm9ibGVtCisgICAgLy9hcyB0aGUgd3hJ
RF9YWCBhc3NpZ25lZCB0byB0aGUgbWVudSBjYW4ndCBiZSBjaGFuZ2VkCisgICAgbV9hY3Rpb24g
PSBhY3Rpb247Cit9CisKK1N0cmluZyBDb250ZXh0TWVudUl0ZW06OnRpdGxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5HZXRJdGVtTGFiZWwoKTsKK30KKwor
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCit7Cisg
ICAgd3hTdHJpbmcgdGl0bGVXeCh0aXRsZSk7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5T
ZXRJdGVtTGFiZWwodGl0bGVXeCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJN
ZW51KENvbnRleHRNZW51KiBzdWJNZW51KQoreworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi0+
U2V0U3ViTWVudShzdWJNZW51LT5yZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpKTsKK30KKwor
dm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCBzaG91bGRDaGVjaykKK3sKKyAg
ICBpZiAobV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5Jc0NoZWNrYWJsZSgpKQorICAgICAgICBtX3Bs
YXRmb3JtRGVzY3JpcHRpb24tPkNoZWNrKHNob3VsZENoZWNrKTsKK30KKwordm9pZCBDb250ZXh0
TWVudUl0ZW06OnNldEVuYWJsZWQoYm9vbCBzaG91bGRFbmFibGUpCit7CisgICAgbV9wbGF0Zm9y
bURlc2NyaXB0aW9uLT5FbmFibGUoc2hvdWxkRW5hYmxlKTsKK30KSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vd3gvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL3d4L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAJKHJldmlzaW9uIDM4ODM4KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS93eC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzYsMjcgKzEzNiw2IEBACiBQYXNzUmVmUHRyPEljb24+IEljb246OmNyZWF0ZUljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzKSB7IG5vdEltcGxlbWVudGVkKCk7
IHJldHVybiAwOyB9CiB2b2lkIEljb246OnBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIAotQ29udGV4dE1lbnU6OkNvbnRleHRNZW51
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkgOiBtX2hpdFRlc3RSZXN1bHQocmVzdWx0KSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KLUNvbnRleHRNZW51Ojp+Q29udGV4dE1lbnUoKSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KLXZvaWQgQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0oQ29udGV4dE1lbnVJ
dGVtJikgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIENvbnRleHRNZW51OjpzZXRQbGF0Zm9y
bURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KLQotQ29udGV4dE1lbnVJdGVtOjpDb250ZXh0TWVudUl0ZW0oUGxhdGZvcm1NZW51SXRlbURl
c2NyaXB0aW9uKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLUNvbnRleHRNZW51SXRlbTo6Q29udGV4
dE1lbnVJdGVtKENvbnRleHRNZW51KikgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1Db250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudUl0ZW1UeXBlIHR5cGUsIENvbnRleHRN
ZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgQ29udGV4dE1lbnUqIHN1Yk1l
bnUpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotQ29udGV4dE1lbnVJdGVtOjp+Q29udGV4dE1lbnVJ
dGVtKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1QbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24g
Q29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsgfQotQ29udGV4dE1lbnVJdGVt
VHlwZSBDb250ZXh0TWVudUl0ZW06OnR5cGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBBY3Rpb25UeXBlOyB9Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0VHlwZShDb250ZXh0
TWVudUl0ZW1UeXBlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLUNvbnRleHRNZW51QWN0aW9uIENv
bnRleHRNZW51SXRlbTo6YWN0aW9uKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4g
Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb247IH0KLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRB
Y3Rpb24oQ29udGV4dE1lbnVBY3Rpb24pIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotU3RyaW5nIENv
bnRleHRNZW51SXRlbTo6dGl0bGUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBT
dHJpbmcoKTsgfQotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFRpdGxlKGNvbnN0IFN0cmluZyYp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQotLy9QbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0
TWVudUl0ZW06OnBsYXRmb3JtU3ViTWVudSgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0
dXJuIDA7IH0KLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRTdWJNZW51KENvbnRleHRNZW51Kikg
eyBub3RJbXBsZW1lbnRlZCgpOyB9Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0Q2hlY2tlZChi
b29sKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRFbmFi
bGVkKGJvb2wpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotCiB2b2lkIEVkaXRvcjo6c2hvd0NvbG9y
UGFuZWwoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIHZvaWQgRWRpdG9yOjpzaG93Rm9udFBhbmVs
KCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIEVkaXRvcjo6c2hvd1N0eWxlc1BhbmVsKCkg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L0NvbnRleHRN
ZW51V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gvQ29udGV4dE1lbnVX
eC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL3d4L0NvbnRleHRNZW51V3gu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIkNvbnRleHRNZW51SXRlbS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtTWVudURlc2NyaXB0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCitXVEY6Okhhc2hNYXA8aW50LCBDb250ZXh0TWVudUFjdGlvbj4gQ29udGV4dE1l
bnU6OnNfaXRlbUFjdGlvbnM7CisKK3ZvaWQgQ29udGV4dE1lbnU6OmNsZWFySXRlbUFjdGlvbnMo
KQoreworICAgIENvbnRleHRNZW51OjpzX2l0ZW1BY3Rpb25zLmNsZWFyKCk7Cit9CisKK0NvbnRl
eHRNZW51SXRlbSogQ29udGV4dE1lbnU6Oml0ZW1XaXRoSWQoaW50IGlkKQoreworICAgIHJldHVy
biBuZXcgQ29udGV4dE1lbnVJdGVtKEFjdGlvblR5cGUsIHNfaXRlbUFjdGlvbnMuZ2V0KGlkKSwg
IiIpOworfQorCitDb250ZXh0TWVudTo6Q29udGV4dE1lbnUoY29uc3QgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0KSA6IG1faGl0VGVzdFJlc3VsdChyZXN1bHQpCit7CisgICAgbV9wbGF0Zm9ybURlc2Ny
aXB0aW9uID0gbmV3IHd4TWVudSgwKTsKK30KKworQ29udGV4dE1lbnU6On5Db250ZXh0TWVudSgp
Cit7CisgICAgaWYgKG1fcGxhdGZvcm1EZXNjcmlwdGlvbikKKyAgICAgICAgZGVsZXRlIG1fcGxh
dGZvcm1EZXNjcmlwdGlvbjsKK30KKwordm9pZCBDb250ZXh0TWVudTo6YXBwZW5kSXRlbShDb250
ZXh0TWVudUl0ZW0mIGl0ZW0pCit7CisgICAgaWYgKCFtX3BsYXRmb3JtRGVzY3JpcHRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiBpdGVtRGVz
YyA9IGl0ZW0ucmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKKyAgICBDb250ZXh0TWVudTo6
c19pdGVtQWN0aW9ucy5hZGQoaXRlbURlc2MtPkdldElkKCksIGl0ZW0uYWN0aW9uKCkpOworICAg
IG1fcGxhdGZvcm1EZXNjcmlwdGlvbi0+QXBwZW5kKGl0ZW1EZXNjKTsKK30KKwordm9pZCBDb250
ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlvbihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBN
ZW51KQoreworICAgIGlmICghTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGxh
dGZvcm1EZXNjcmlwdGlvbikKKyAgICAgICAgZGVsZXRlIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsK
KworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IE1lbnU7Cit9CisKK1BsYXRmb3JtTWVudURl
c2NyaXB0aW9uIENvbnRleHRNZW51OjpwbGF0Zm9ybURlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworfQorCitQbGF0Zm9ybU1lbnVEZXNjcmlw
dGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQoreworICAgIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIGRlc2NyaXB0aW9uID0gbV9wbGF0Zm9ybURlc2NyaXB0aW9u
OworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbiA9IDA7CisKKyAgICByZXR1cm4gZGVzY3JpcHRp
b247Cit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgJKHJldmlzaW9uIDM4ODM4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAkod29ya2luZyBjb3B5KQpA
QCAtMjE3LDYgKzIxNyw5IEBACiAjZWxzZQogICAgICAgICBQbGF0Zm9ybU1lbnVJdGVtRGVzY3Jp
cHRpb24gbV9wbGF0Zm9ybURlc2NyaXB0aW9uOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV1gpCisg
ICAgICAgIENvbnRleHRNZW51QWN0aW9uIG1fYWN0aW9uOworI2VuZGlmCiAgICAgfTsKIAogfQpJ
bmRleDogV2ViQ29yZS93ZWJjb3JlLXd4LmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dlYmNv
cmUtd3guYmtsCShyZXZpc2lvbiAzODgzOCkKKysrIFdlYkNvcmUvd2ViY29yZS13eC5ia2wJKHdv
cmtpbmcgY29weSkKQEAgLTkxLDYgKzkxLDggQEAKICAgICAgICAgICAgIHBsYXRmb3JtL3RleHQv
d3gvU3RyaW5nV3guY3BwCiAgICAgICAgICAgICBwbGF0Zm9ybS93eC9TeXN0ZW1UaW1lV3guY3Bw
CiAgICAgICAgICAgICBwbGF0Zm9ybS93eC9XaWRnZXRXeC5jcHAKKyAgICAgICAgICAgIHBsYXRm
b3JtL3d4L0NvbnRleHRNZW51V3guY3BwCisgICAgICAgICAgICBwbGF0Zm9ybS93eC9Db250ZXh0
TWVudUl0ZW1XeC5jcHAKICAgICAgICAgICAgCiAgICAgICAgICAgICA8IS0tIGZpbGVzIGZyb20g
b3RoZXIgcG9ydHMgd2UgY3VycmVudGx5IHJlbHkgb24gLS0+CiAgICAgICAgICAgICBwbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvRm9ybURhdGFTdHJlYW1DdXJsLmNwcAo=
</data>
<flag name="review"
          id="12056"
          type_id="1"
          status="-"
          setter="mr.diggilin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26117</attachid>
            <date>2008-12-17 23:35:28 -0800</date>
            <delta_ts>2008-12-18 19:49:23 -0800</delta_ts>
            <desc>patch for wx binding&apos;s Context Menu</desc>
            <filename>contextmenusupport.diff</filename>
            <type>text/plain</type>
            <size>24405</size>
            <attacher name="Diggilin">mr.diggilin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50V3gu
Y3BwCShyZXZpc2lvbiAzODgzOCkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0NvbnRleHRN
ZW51Q2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnVDbGllbnRXeC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKICNpbmNsdWRlIDxz
dGRpby5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zOCwxMyArMzksMTIgQEAKIAogdm9p
ZCBDb250ZXh0TWVudUNsaWVudFd4Ojpjb250ZXh0TWVudURlc3Ryb3llZCgpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBkZWxldGUgdGhpczsKIH0KIAotUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24gQ29udGV4dE1lbnVDbGllbnRXeDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMo
Q29udGV4dE1lbnUqKQorUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVDbGllbnRX
eDo6Z2V0Q3VzdG9tTWVudUZyb21EZWZhdWx0SXRlbXMoQ29udGV4dE1lbnUqIG1lbnUpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbWVudS0+cmVs
ZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNsaWVudFd4
Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qLApJbmRleDogV2ViS2l0
L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lv
biAzOTM3MSkKKysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAwOC0xMi0xNyAgbWlnZ2lsaW4gIDxtci5kaWdnaWxpbkBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIENvbnRl
eHQgTWVudSBzdXBwb3J0IHRvIHd4IGJpbmRpbmdzLgorCisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9Db250ZXh0TWVudUNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
Q2xpZW50V3g6OmNvbnRleHRNZW51RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
eHRNZW51Q2xpZW50V3g6OmdldEN1c3RvbU1lbnVGcm9tRGVmYXVsdEl0ZW1zKToKKyAgICAgICAg
KiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cyk6CisgICAg
ICAgICh3eFdlYlZpZXc6Ok9uQ29udGV4dE1lbnVFdmVudHMpOgorICAgICAgICAod3hXZWJWaWV3
OjpPbk1lbnVTZWxlY3RFdmVudHMpOgorICAgICAgICAqIFdlYlZpZXcuaDoKKwogMjAwOC0xMi0x
MyAgS2V2aW4gV2F0dGVycyAgPGtldmlud2F0dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgS2V2aW4gT2xsaXZpZXIuCkluZGV4OiBXZWJLaXQvd3gvV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAzODgzOCkKKysrIFdl
YktpdC93eC9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsOSBAQAogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudUl0ZW0uaCIK
KyNpbmNsdWRlICJDb250ZXh0TWVudUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtMTcyLDYgKzE3NSw4IEBACiAgICAgRVZUX1BBSU5UKHd4
V2ViVmlldzo6T25QYWludCkKICAgICBFVlRfU0laRSh3eFdlYlZpZXc6Ok9uU2l6ZSkKICAgICBF
VlRfTU9VU0VfRVZFTlRTKHd4V2ViVmlldzo6T25Nb3VzZUV2ZW50cykKKyAgICBFVlRfQ09OVEVY
VF9NRU5VKHd4V2ViVmlldzo6T25Db250ZXh0TWVudUV2ZW50cykKKyAgICBFVlRfTUVOVSh3eElE
X0FOWSwgd3hXZWJWaWV3OjpPbk1lbnVTZWxlY3RFdmVudHMpCiAgICAgRVZUX0tFWV9ET1dOKHd4
V2ViVmlldzo6T25LZXlFdmVudHMpCiAgICAgRVZUX0tFWV9VUCh3eFdlYlZpZXc6Ok9uS2V5RXZl
bnRzKQogICAgIEVWVF9DSEFSKHd4V2ViVmlldzo6T25LZXlFdmVudHMpCkBAIC01MDksNiArNTE0
LDQ5IEBACiAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VNb3ZlZCh3a0V2ZW50
KTsKIH0KIAordm9pZCB3eFdlYlZpZXc6Ok9uQ29udGV4dE1lbnVFdmVudHMod3hDb250ZXh0TWVu
dUV2ZW50JiBldmVudCkKK3sKKyAgICBtX2ltcGwtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxl
cigpLT5jbGVhckNvbnRleHRNZW51KCk7CisgICAgd3hQb2ludCBsb2NhbEV2ZW50UG9pbnQgPSBT
Y3JlZW5Ub0NsaWVudChldmVudC5HZXRQb3NpdGlvbigpKTsKKworICAgIGlmICghbV9tYWluRnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgV2ViQ29yZTo6RnJhbWUqIGZvY3Vz
ZWRGcmFtZSA9IG1fbWFpbkZyYW1lLT5HZXRGcmFtZSgpOworICAgIGlmICghZm9jdXNlZEZyYW1l
LT52aWV3KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vQ3JlYXRlIFdlYkNvcmUgbW91c2Ug
ZXZlbnQgZnJvbSB0aGUgd3hDb250ZXh0TWVudUV2ZW50CisgICAgd3hNb3VzZUV2ZW50IG1vdXNl
RXZlbnQod3hFVlRfUklHSFRfRE9XTik7CisgICAgbW91c2VFdmVudC5tX3ggPSBsb2NhbEV2ZW50
UG9pbnQueDsKKyAgICBtb3VzZUV2ZW50Lm1feSA9IGxvY2FsRXZlbnRQb2ludC55OworICAgIFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCB3a0V2ZW50KG1vdXNlRXZlbnQsIGV2ZW50LkdldFBv
c2l0aW9uKCkpOworCisgICAgYm9vbCBoYW5kbGVkRXZlbnQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50
SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudCh3a0V2ZW50KTsKKyAgICBpZiAoIWhhbmRs
ZWRFdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6Q29udGV4dE1lbnUqIGNv
cmVNZW51ID0gbV9pbXBsLT5wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y29udGV4dE1l
bnUoKTsKKyAgICBpZiAoIWNvcmVNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3Jl
OjpQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51V3ggPSBjb3JlTWVudS0+cGxhdGZvcm1EZXNj
cmlwdGlvbigpOworICAgIGlmICghbWVudVd4KQorICAgICAgICByZXR1cm47CisKKyAgICBQb3B1
cE1lbnUobWVudVd4LCBsb2NhbEV2ZW50UG9pbnQpOworfQorCit2b2lkIHd4V2ViVmlldzo6T25N
ZW51U2VsZWN0RXZlbnRzKHd4Q29tbWFuZEV2ZW50JiBldmVudCkKK3sKKyAgICBXZWJDb3JlOjpD
b250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXZWJDb3JlOjpDb250ZXh0TWVudTo6aXRlbVdpdGhJZCAo
ZXZlbnQuR2V0SWQoKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2ltcGwtPnBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChpdGVtKTsKKyAgICBkZWxldGUgaXRlbTsKK30KKwogYm9vbCB3eFdlYlZpZXc6OkNhbkNv
cHkoKQogewogICAgIGlmIChtX21haW5GcmFtZSkKSW5kZXg6IFdlYktpdC93eC9XZWJWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYlZpZXcuaAkocmV2aXNpb24gMzg4MzgpCisrKyBX
ZWJLaXQvd3gvV2ViVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAKICAg
ICB2b2lkIE9uUGFpbnQod3hQYWludEV2ZW50JiBldmVudCk7CiAgICAgdm9pZCBPblNpemUod3hT
aXplRXZlbnQmIGV2ZW50KTsKICAgICB2b2lkIE9uTW91c2VFdmVudHMod3hNb3VzZUV2ZW50JiBl
dmVudCk7CisgICAgdm9pZCBPbkNvbnRleHRNZW51RXZlbnRzKHd4Q29udGV4dE1lbnVFdmVudCYg
ZXZlbnQpOworICAgIHZvaWQgT25NZW51U2VsZWN0RXZlbnRzKHd4Q29tbWFuZEV2ZW50JiBldmVu
dCk7CiAgICAgdm9pZCBPbktleUV2ZW50cyh3eEtleUV2ZW50JiBldmVudCk7CiAgICAgdm9pZCBP
blNldEZvY3VzKHd4Rm9jdXNFdmVudCYgZXZlbnQpOwogICAgIHZvaWQgT25LaWxsRm9jdXMod3hG
b2N1c0V2ZW50JiBldmVudCk7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzkzNzEpCisrKyBXZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc1IEBACisyMDA4LTEyLTE3ICBtaWdnaWxpbiAg
PG1yLmRpZ2dpbGluQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXQVJOSU5HOiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQK
KworICAgICAgICBBZGQgQ29udGV4dCBNZW51IHN1cHBvcnQgdG8gd3ggYmluZGluZ3MuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Db250ZXh0TWVudS5oOgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRl
eHRNZW51SXRlbS5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZW51SXRlbURlc2NyaXB0
aW9uOjpQbGF0Zm9ybU1lbnVJdGVtRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3d4
L0NvbnRleHRNZW51SXRlbVd4LmNwcDogQWRkZWQuCisgICAgICAgIChDb250ZXh0TWVudUl0ZW06
OkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChDb250ZXh0TWVudUl0ZW06On5Db250ZXh0TWVu
dUl0ZW0pOgorICAgICAgICAoQ29udGV4dE1lbnVJdGVtOjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbik6CisgICAgICAgIChDb250ZXh0TWVudUl0ZW06OnR5cGUpOgorICAgICAgICAoQ29udGV4
dE1lbnVJdGVtOjpzZXRUeXBlKToKKyAgICAgICAgKENvbnRleHRNZW51SXRlbTo6YWN0aW9uKToK
KyAgICAgICAgKENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKToKKyAgICAgICAgKENvbnRleHRN
ZW51SXRlbTo6dGl0bGUpOgorICAgICAgICAoQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZSk6Cisg
ICAgICAgIChDb250ZXh0TWVudUl0ZW06OnNldFN1Yk1lbnUpOgorICAgICAgICAoQ29udGV4dE1l
bnVJdGVtOjpzZXRDaGVja2VkKToKKyAgICAgICAgKENvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvQ29udGV4dE1lbnVXeC5jcHA6IEFkZGVkLgorICAg
ICAgICAoQ29udGV4dE1lbnU6Oml0ZW1XaXRoSWQpOgorICAgICAgICAoQ29udGV4dE1lbnU6OkNv
bnRleHRNZW51KToKKyAgICAgICAgKENvbnRleHRNZW51Ojp+Q29udGV4dE1lbnUpOgorICAgICAg
ICAoQ29udGV4dE1lbnU6OmFwcGVuZEl0ZW0pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnNldFBs
YXRmb3JtRGVzY3JpcHRpb24pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnBsYXRmb3JtRGVzY3Jp
cHRpb24pOgorICAgICAgICAoQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9Mb2NhbGl6ZWRTdHJpbmdzV3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJbk5ld1dpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ29weUxpbmtUb0NsaXBib2FyZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdPcGVuSW1hZ2VJbk5ld1dpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNr
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJv
YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ09wZW5GcmFtZUluTmV3
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NvcHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRleHRNZW51SXRlbVRhZ0dvRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZXh0TWVudUl0ZW1UYWdTdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRh
Z1JlbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdDdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnUGFzdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Y29udGV4dE1lbnVJdGVtVGFnTm9HdWVzc2VzRm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGV4dE1lbnVJdGVtVGFnTGVhcm5TcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0
TWVudUl0ZW1UYWdTZWFyY2hXZWIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVt
VGFnTG9va1VwSW5EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ09wZW5MaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0lnbm9y
ZUdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnU3BlbGxpbmdN
ZW51KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Nob3dTcGVsbGluZ1Bh
bmVsKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxl
VHlwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0NoZWNrR3JhbW1h
cldpdGhTcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdGb250
TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1UYWdCb2xkKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0l0YWxpYyk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4
dE1lbnVJdGVtVGFnT3V0bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0ZW1U
YWdXcml0aW5nRGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0
ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZXh0TWVudUl0
ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRl
bVRhZ0xlZnRUb1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ1Jp
Z2h0VG9MZWZ0KToKKyAgICAgICAgKiBwbGF0Zm9ybS93eC9UZW1wb3JhcnlMaW5rU3R1YnMuY3Bw
OgorICAgICAgICAqIHdlYmNvcmUtd3guYmtsOgorCiAyMDA4LTEyLTE3ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9Db250
ZXh0TWVudS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuaAko
cmV2aXNpb24gMzg4MzgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5LDEwICs2OSwxMSBAQAogICAgICAgICB2b2lkIHNldFBsYXRmb3JtRGVz
Y3JpcHRpb24oUGxhdGZvcm1NZW51RGVzY3JpcHRpb24pOwogCiAgICAgICAgIFBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uIHJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7Ci0KKyNpZiBQTEFURk9S
TShXWCkKKyAgICAgICAgc3RhdGljIENvbnRleHRNZW51SXRlbSogaXRlbVdpdGhJZChpbnQpOwor
I2VuZGlmCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGl0VGVzdFJlc3VsdCBtX2hpdFRlc3RSZXN1
bHQ7Ci0KICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIC8vIEtlZXAgdGhpcyBpbiBzeW5jIHdp
dGggdGhlIFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIHR5cGVkZWYKICAgICAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBtX3BsYXRmb3JtRGVzY3JpcHRpb247CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL3d4L0xvY2FsaXplZFN0cmluZ3NXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS93eC9Mb2NhbGl6ZWRTdHJpbmdzV3guY3BwCShyZXZpc2lvbiAzODgzOCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vd3gvTG9jYWxpemVkU3RyaW5nc1d4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgsMTgyICs2OCwxODIgQEAKIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5r
SW5OZXdXaW5kb3coKSAKIHsgCi0gICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICByZXR1cm4gU3Ry
aW5nKCJPcGVuIExpbmsgaW4gTmV3IFdpbmRvdyIpOyAKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaygpIAogeyAKLSAgICByZXR1cm4gU3RyaW5nKCk7IAor
ICAgIHJldHVybiBTdHJpbmcoIkRvd25sb2FkIExpbmsgdG8gRGlzayIpOyAKIH0KIAogU3RyaW5n
IGNvbnRleHRNZW51SXRlbVRhZ0NvcHlMaW5rVG9DbGlwYm9hcmQoKSAKIHsgCi0gICAgcmV0dXJu
IFN0cmluZygpOyAKKyAgICByZXR1cm4gU3RyaW5nKCJDb3B5IExpbmsgdG8gQ2xpcGJvYXJkIik7
IAogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnT3BlbkltYWdlSW5OZXdXaW5kb3coKSAK
IHsgCi0gICAgcmV0dXJuIFN0cmluZygpOyAKKyAgICByZXR1cm4gU3RyaW5nKCJPcGVuIEltYWdl
IGluIE5ldyBXaW5kb3ciKTsgCiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdEb3dubG9h
ZEltYWdlVG9EaXNrKCkgCiB7IAotICAgIHJldHVybiBTdHJpbmcoKTsgCisgICAgcmV0dXJuIFN0
cmluZygiRG93bmxvYWQgSW1hZ2UgdG8gRGlzayIpOyAKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51
SXRlbVRhZ0NvcHlJbWFnZVRvQ2xpcGJvYXJkKCkgCiB7IAotICAgIHJldHVybiBTdHJpbmcoKTsg
CisgICAgcmV0dXJuIFN0cmluZygiQ29weSBJbWFnZSB0byBDbGlwYm9hcmQiKTsgCiB9CiAKIFN0
cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPcGVuRnJhbWVJbk5ld1dpbmRvdygpIAogeyAKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7IAorICAgIHJldHVybiBTdHJpbmcoIk9wZW4gRnJhbWUgaW4gTmV3IFdp
bmRvdyIpOyAKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0NvcHkoKSAKIHsKLSAgICBy
ZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygiQ29weSIpOwogfQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnR29CYWNrKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAg
IHJldHVybiBTdHJpbmcoIkdvIEJhY2siKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRh
Z0dvRm9yd2FyZCgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5n
KCJHbyBGb3J3YXJkIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdTdG9wKCkgCiB7
Ci0gICAgcmV0dXJuIFN0cmluZygpOworCXJldHVybiBTdHJpbmcoIlN0b3AiKTsKIH0KIAogU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ1JlbG9hZCgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsK
KyAgICByZXR1cm4gU3RyaW5nKCJSZWxvYWQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRl
bVRhZ0N1dCgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJD
dXQiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1Bhc3RlKCkgCiB7Ci0gICAgcmV0
dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIlBhc3RlIik7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdOb0d1ZXNzZXNGb3VuZCgpIAogewotICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICByZXR1cm4gU3RyaW5nKCJObyBHdWVzc2VzIEZvdW5kIik7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZygpIAogewotICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICByZXR1cm4gU3RyaW5nKCJJZ25vcmUgU3BlbGxpbmciKTsKIH0KIAogU3RyaW5nIGNv
bnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7
CisgICAgcmV0dXJuIFN0cmluZygiTGVhcm4gU3BlbGxpbmciKTsKIH0KIAogU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ1NlYXJjaFdlYigpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCJTZWFyY2ggV2ViIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1U
YWdMb29rVXBJbkRpY3Rpb25hcnkoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0
dXJuIFN0cmluZygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5Iik7CiB9CiAKIFN0cmluZyBjb250ZXh0
TWVudUl0ZW1UYWdPcGVuTGluaygpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1
cm4gU3RyaW5nKCJPcGVuIExpbmsiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0ln
bm9yZUdyYW1tYXIoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygiSWdub3JlIEdyYW1tYXIiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ1NwZWxs
aW5nTWVudSgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJT
cGVsbGluZyIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnU2hvd1NwZWxsaW5nUGFu
ZWwoYm9vbCBzaG93KSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmlu
ZygiU2hvdyBTcGVsbGluZyBQYW5lbCIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFn
Q2hlY2tTcGVsbGluZygpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCJDaGVjayBTcGVsbGluZyIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnQ2hl
Y2tTcGVsbGluZ1doaWxlVHlwaW5nKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJl
dHVybiBTdHJpbmcoIkNoZWNrIFNwZWxsaW5nIFdoaWxlIFR5cGluZyIpOwogfQogCiBTdHJpbmcg
Y29udGV4dE1lbnVJdGVtVGFnQ2hlY2tHcmFtbWFyV2l0aFNwZWxsaW5nKCkgCiB7Ci0gICAgcmV0
dXJuIFN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIkNoZWNrIEdyYW1tYXIgd2l0aCBTcGVs
bGluZyIpOwogfQogCiBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnRm9udE1lbnUoKSAKIHsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygiRm9udCIpOwogfQogCiBTdHJp
bmcgY29udGV4dE1lbnVJdGVtVGFnQm9sZCgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCJCb2xkIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdJ
dGFsaWMoKSAKIHsKLSAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygiSXRh
bGljIik7CiB9CiAKIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmUoKSAKIHsKLSAg
ICByZXR1cm4gU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygiVW5kZXJsaW5lIik7CiB9CiAK
IFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdPdXRsaW5lKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIHJldHVybiBTdHJpbmcoIk91dGxpbmUiKTsKIH0KIAogU3RyaW5nIGNvbnRleHRN
ZW51SXRlbVRhZ1dyaXRpbmdEaXJlY3Rpb25NZW51KCkgCiB7Ci0gICAgcmV0dXJuIFN0cmluZygp
OworICAgIHJldHVybiBTdHJpbmcoIldyaXRpbmcgRGlyZWN0aW9uIik7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdUZXh0RGlyZWN0aW9uTWVudSgpCiB7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIHJldHVybiBTdHJpbmcoIlRleHQgRGlyZWN0aW9uIik7CiB9CiAKIFN0cmluZyBj
b250ZXh0TWVudUl0ZW1UYWdEZWZhdWx0RGlyZWN0aW9uKCkgCiB7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIHJldHVybiBTdHJpbmcoIkRlZmF1bHQgRGlyZWN0aW9uIik7CiB9CiAKIFN0cmlu
ZyBjb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodCgpIAogewotICAgIHJldHVybiBTdHJpbmco
KTsKKyAgICByZXR1cm4gU3RyaW5nKCJMZWZ0IHRvIFJpZ2h0Iik7CiB9CiAKIFN0cmluZyBjb250
ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdCgpIAogewotICAgIHJldHVybiBTdHJpbmcoKTsKKyAg
ICByZXR1cm4gU3RyaW5nKCJSaWdodCB0byBMZWZ0Iik7CiB9CiAKIFN0cmluZyBzZWFyY2hNZW51
Tm9SZWNlbnRTZWFyY2hlc1RleHQoKSAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd3gvQ29udGV4
dE1lbnVJdGVtV3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vd3gvQ29udGV4
dE1lbnVJdGVtV3guY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250
ZXh0TWVudUl0ZW1XeC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDb250ZXh0TWVu
dUl0ZW0uaCIKKyNpbmNsdWRlICJDb250ZXh0TWVudS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTWVu
dURlc2NyaXB0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitDb250ZXh0TWVu
dUl0ZW06OkNvbnRleHRNZW51SXRlbShDb250ZXh0TWVudSogc3ViTWVudSkKK3sKKyAgICBtX3Bs
YXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IFN1Ym1lbnVUeXBlOworICAgIG1fcGxhdGZvcm1EZXNj
cmlwdGlvbi5hY3Rpb24gPSBDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbjsKKyAgICBpZiAoc3Vi
TWVudSkKKyAgICAgICAgc2V0U3ViTWVudShzdWJNZW51KTsKKyAgICBlbHNlCisgICAgICAgIG1f
cGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51ID0gMDsKK30KKworQ29udGV4dE1lbnVJdGVtOjpD
b250ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlv
biBhY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHRpdGxlLCBDb250ZXh0TWVudSogc3ViTWVudSkKK3sKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRp
b24udHlwZSA9IHR5cGU7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmFjdGlvbiA9IGFjdGlv
bjsKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udGl0bGUgPSB0aXRsZTsKKyAgICBpZiAoc3Vi
TWVudSkKKyAgICAgICAgc2V0U3ViTWVudShzdWJNZW51KTsKKyAgICBlbHNlCisgICAgICAgIG1f
cGxhdGZvcm1EZXNjcmlwdGlvbi5zdWJNZW51ID0gMDsKK30KKworQ29udGV4dE1lbnVJdGVtOjp+
Q29udGV4dE1lbnVJdGVtKCkKK3sKK30KKworUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENv
bnRleHRNZW51SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKQoreworICAgIHJldHVy
biBtX3BsYXRmb3JtRGVzY3JpcHRpb247Cit9CisKK0NvbnRleHRNZW51SXRlbVR5cGUgQ29udGV4
dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0
aW9uLnR5cGU7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUeXBlKENvbnRleHRNZW51
SXRlbVR5cGUgdHlwZSkKK3sKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24udHlwZSA9IHR5cGU7
Cit9CisKK0NvbnRleHRNZW51QWN0aW9uIENvbnRleHRNZW51SXRlbTo6YWN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmFjdGlvbjsKK30KKwordm9pZCBD
b250ZXh0TWVudUl0ZW06OnNldEFjdGlvbihDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24pCit7Cisg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLmFjdGlvbiA9IGFjdGlvbjsKK30KKworU3RyaW5nIENv
bnRleHRNZW51SXRlbTo6dGl0bGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3BsYXRmb3JtRGVz
Y3JpcHRpb24udGl0bGU7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQoreworICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi50aXRsZSA9IHRp
dGxlOworfQorCit2b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSog
c3ViTWVudSkKK3sKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24uc3ViTWVudSA9IHN1Yk1lbnUt
PnJlbGVhc2VQbGF0Zm9ybURlc2NyaXB0aW9uKCk7Cit9CisKK3ZvaWQgQ29udGV4dE1lbnVJdGVt
OjpzZXRDaGVja2VkKGJvb2wgc2hvdWxkQ2hlY2spCit7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0
aW9uLmNoZWNrZWQgPSBzaG91bGRDaGVjazsKK30KKwordm9pZCBDb250ZXh0TWVudUl0ZW06OnNl
dEVuYWJsZWQoYm9vbCBzaG91bGRFbmFibGUpCit7CisgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9u
LmVuYWJsZWQgPSBzaG91bGRFbmFibGU7Cit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L1Rl
bXBvcmFyeUxpbmtTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCShyZXZpc2lvbiAzODgzOCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vd3gvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2LDI3ICsx
MzYsNiBAQAogUGFzc1JlZlB0cjxJY29uPiBJY29uOjpjcmVhdGVJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGZpbGVuYW1lcykgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gMDsg
fQogdm9pZCBJY29uOjpwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JikgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CiAKLUNvbnRleHRNZW51OjpDb250ZXh0TWVudShjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQpIDogbV9oaXRUZXN0UmVzdWx0KHJlc3VsdCkgeyBub3RJbXBsZW1l
bnRlZCgpOyB9Ci1Db250ZXh0TWVudTo6fkNvbnRleHRNZW51KCkgeyBub3RJbXBsZW1lbnRlZCgp
OyB9Ci12b2lkIENvbnRleHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYpIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQotdm9pZCBDb250ZXh0TWVudTo6c2V0UGxhdGZvcm1EZXNjcmlwdGlv
bihQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbikgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci0KLUNvbnRl
eHRNZW51SXRlbTo6Q29udGV4dE1lbnVJdGVtKFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbikg
eyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1Db250ZXh0TWVudUl0ZW06OkNvbnRleHRNZW51SXRlbShD
b250ZXh0TWVudSopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQotQ29udGV4dE1lbnVJdGVtOjpDb250
ZXh0TWVudUl0ZW0oQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlLCBDb250ZXh0TWVudUFjdGlvbiBh
Y3Rpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIENvbnRleHRNZW51KiBzdWJNZW51KSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KLUNvbnRleHRNZW51SXRlbTo6fkNvbnRleHRNZW51SXRlbSgpIHsgbm90
SW1wbGVtZW50ZWQoKTsgfQotUGxhdGZvcm1NZW51SXRlbURlc2NyaXB0aW9uIENvbnRleHRNZW51
SXRlbTo6cmVsZWFzZVBsYXRmb3JtRGVzY3JpcHRpb24oKSB7IG5vdEltcGxlbWVudGVkKCk7IHJl
dHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb247IH0KLUNvbnRleHRNZW51SXRlbVR5cGUgQ29udGV4
dE1lbnVJdGVtOjp0eXBlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gQWN0aW9u
VHlwZTsgfQotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldFR5cGUoQ29udGV4dE1lbnVJdGVtVHlw
ZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9Ci1Db250ZXh0TWVudUFjdGlvbiBDb250ZXh0TWVudUl0
ZW06OmFjdGlvbigpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIENvbnRleHRNZW51
SXRlbVRhZ05vQWN0aW9uOyB9Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0QWN0aW9uKENvbnRl
eHRNZW51QWN0aW9uKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KLVN0cmluZyBDb250ZXh0TWVudUl0
ZW06OnRpdGxlKCkgY29uc3QgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1cm4gU3RyaW5nKCk7IH0K
LXZvaWQgQ29udGV4dE1lbnVJdGVtOjpzZXRUaXRsZShjb25zdCBTdHJpbmcmKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KLS8vUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnVJdGVtOjpw
bGF0Zm9ybVN1Yk1lbnUoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiAwOyB9Ci12
b2lkIENvbnRleHRNZW51SXRlbTo6c2V0U3ViTWVudShDb250ZXh0TWVudSopIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQotdm9pZCBDb250ZXh0TWVudUl0ZW06OnNldENoZWNrZWQoYm9vbCkgeyBub3RJ
bXBsZW1lbnRlZCgpOyB9Ci12b2lkIENvbnRleHRNZW51SXRlbTo6c2V0RW5hYmxlZChib29sKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KLQogdm9pZCBFZGl0b3I6OnNob3dDb2xvclBhbmVsKCkgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CiB2b2lkIEVkaXRvcjo6c2hvd0ZvbnRQYW5lbCgpIHsgbm90SW1w
bGVtZW50ZWQoKTsgfQogdm9pZCBFZGl0b3I6OnNob3dTdHlsZXNQYW5lbCgpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3d4L0NvbnRleHRNZW51V3guY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
Q29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCisjaW5jbHVkZSAiQ29udGV4dE1l
bnVJdGVtLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1NZW51RGVzY3JpcHRpb24uaCIKKyNpbmNsdWRl
ICJ3eC9tZW51LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCit0eXBlZGVmIFdURjo6
SGFzaE1hcDxpbnQsIENvbnRleHRNZW51QWN0aW9uPiBJdGVtQWN0aW9uTWFwOworc3RhdGljIEl0
ZW1BY3Rpb25NYXAgc19pdGVtQWN0aW9uczsKKworQ29udGV4dE1lbnVJdGVtKiBDb250ZXh0TWVu
dTo6aXRlbVdpdGhJZChpbnQgaWQpCit7CisgICAgcmV0dXJuIG5ldyBDb250ZXh0TWVudUl0ZW0o
QWN0aW9uVHlwZSwgc19pdGVtQWN0aW9ucy5nZXQoaWQpLCAiIik7Cit9CisKK0NvbnRleHRNZW51
OjpDb250ZXh0TWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpIDogbV9oaXRUZXN0UmVz
dWx0KHJlc3VsdCkKK3sKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24gPSBuZXcgd3hNZW51KDAp
OworfQorCitDb250ZXh0TWVudTo6fkNvbnRleHRNZW51KCkKK3sKKyAgICBpZiAobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKQorICAgICAgICBkZWxldGUgbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworfQor
Cit2b2lkIENvbnRleHRNZW51OjphcHBlbmRJdGVtKENvbnRleHRNZW51SXRlbSYgaXRlbSkKK3sK
KyAgICBpZiAoIW1fcGxhdGZvcm1EZXNjcmlwdGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGNoZWNrT3JFbmFibGVJZk5lZWRlZChpdGVtKTsKKyAgICAgICAgCisgICAgUGxhdGZvcm1N
ZW51SXRlbURlc2NyaXB0aW9uIGl0ZW1EZXNjcmlwdGlvbiA9IGl0ZW0ucmVsZWFzZVBsYXRmb3Jt
RGVzY3JpcHRpb24oKTsgICAgCisgICAgd3hJdGVtS2luZCBtZW51S2luZFd4ID0gKCBpdGVtRGVz
Y3JpcHRpb24udHlwZSA9PSBDaGVja2FibGVBY3Rpb25UeXBlICkgPyB3eElURU1fQ0hFQ0sgOiB3
eElURU1fTk9STUFMOworICAgIHd4U3RyaW5nIHRpdGxlV3goaXRlbURlc2NyaXB0aW9uLnRpdGxl
KTsKKyAgICBpbnQgaWRXeCA9IHd4SURfQU5ZOworICAgIHd4TWVudUl0ZW0gKiBpdGVtV3g7CisK
KyAgICBJdGVtQWN0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzX2l0ZW1BY3Rpb25zLmVu
ZCgpOworICAgIGZvciAoSXRlbUFjdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzX2l0ZW1B
Y3Rpb25zLmJlZ2luKCk7ICBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKGl0LT5zZWNv
bmQgPT0gaXRlbURlc2NyaXB0aW9uLmFjdGlvbikKKyAgICAgICAgICAgIGlkV3ggPSBpdC0+Zmly
c3Q7CisgICAgfQorCisgICAgaWYgKGl0ZW1EZXNjcmlwdGlvbi5zdWJNZW51KSB7CisgICAgICAg
IGl0ZW1XeCA9IG5ldyB3eE1lbnVJdGVtKG1fcGxhdGZvcm1EZXNjcmlwdGlvbiwgaWRXeCwgdGl0
bGVXeCwgd3hFbXB0eVN0cmluZywgd3hJVEVNX05PUk1BTCwgaXRlbURlc2NyaXB0aW9uLnN1Yk1l
bnUpOworICAgIH0gZWxzZSBpZiAoaXRlbURlc2NyaXB0aW9uLnR5cGUgIT0gU2VwYXJhdG9yVHlw
ZSkgeworICAgICAgICBpdGVtV3ggPSBuZXcgd3hNZW51SXRlbShtX3BsYXRmb3JtRGVzY3JpcHRp
b24sIGlkV3gsIHRpdGxlV3gsIHd4VCgiIiksIG1lbnVLaW5kV3gpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGl0ZW1XeCA9IG5ldyB3eE1lbnVJdGVtKG1fcGxhdGZvcm1EZXNjcmlwdGlvbik7Cisg
ICAgfQorCisgICAgc19pdGVtQWN0aW9ucy5hZGQoaXRlbVd4LT5HZXRJZCgpLCBpdGVtLmFjdGlv
bigpKTsKKyAgICAKKyAgICBtX3BsYXRmb3JtRGVzY3JpcHRpb24tPkFwcGVuZChpdGVtV3gpOwor
ICAgIG1fcGxhdGZvcm1EZXNjcmlwdGlvbi0+RW5hYmxlKGl0ZW1XeC0+R2V0SWQoKSwgaXRlbURl
c2NyaXB0aW9uLmVuYWJsZWQpOworICAgIAorICAgIGlmIChtZW51S2luZFd4ID09IHd4SVRFTV9D
SEVDSykKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uLT5DaGVjayhpdGVtV3gtPkdldElk
KCksIGl0ZW1EZXNjcmlwdGlvbi5jaGVja2VkKTsgICAgICAgIAorfQorCit2b2lkIENvbnRleHRN
ZW51OjpzZXRQbGF0Zm9ybURlc2NyaXB0aW9uKFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIE1lbnUp
Cit7CisgICAgaWYgKCFNZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9wbGF0Zm9y
bURlc2NyaXB0aW9uKQorICAgICAgICBkZWxldGUgbV9wbGF0Zm9ybURlc2NyaXB0aW9uOworCisg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gTWVudTsKK30KKworUGxhdGZvcm1NZW51RGVzY3Jp
cHRpb24gQ29udGV4dE1lbnU6OnBsYXRmb3JtRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3BsYXRmb3JtRGVzY3JpcHRpb247Cit9CisKK1BsYXRmb3JtTWVudURlc2NyaXB0aW9u
IENvbnRleHRNZW51OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlwdGlvbigpCit7CisgICAgUGxhdGZv
cm1NZW51RGVzY3JpcHRpb24gZGVzY3JpcHRpb24gPSBtX3BsYXRmb3JtRGVzY3JpcHRpb247Cisg
ICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0gMDsKKworICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
K30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnVJdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9Db250ZXh0TWVudUl0ZW0uaAkocmV2aXNpb24gMzg4MzgpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL0NvbnRleHRNZW51SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzIsNyArMTcyLDIxIEBACiAgICAgICAgIGJvb2wgZW5hYmxlZDsKICAgICB9OwogI2VsaWYgUExB
VEZPUk0oV1gpCi0gICAgdHlwZWRlZiB3eE1lbnVJdGVtKiBQbGF0Zm9ybU1lbnVJdGVtRGVzY3Jp
cHRpb247CisgICAgc3RydWN0IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbiB7CisgICAgICAg
IFBsYXRmb3JtTWVudUl0ZW1EZXNjcmlwdGlvbigpCisgICAgICAgICAgICA6IHR5cGUoQWN0aW9u
VHlwZSksCisgICAgICAgICAgICAgIGFjdGlvbihDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiks
CisgICAgICAgICAgICAgIGNoZWNrZWQoZmFsc2UpLAorICAgICAgICAgICAgICBlbmFibGVkKHRy
dWUpCisgICAgICAgIHt9CisKKyAgICAgICAgQ29udGV4dE1lbnVJdGVtVHlwZSB0eXBlOworICAg
ICAgICBDb250ZXh0TWVudUFjdGlvbiBhY3Rpb247CisgICAgICAgIFN0cmluZyB0aXRsZTsKKyAg
ICAgICAgd3hNZW51ICogc3ViTWVudTsKKyAgICAgICAgYm9vbCBjaGVja2VkOworICAgICAgICBi
b29sIGVuYWJsZWQ7CisgICAgfTsKICNlbHNlCiAgICAgdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybU1l
bnVJdGVtRGVzY3JpcHRpb247CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvd2ViY29yZS13eC5ia2wK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS93ZWJjb3JlLXd4LmJrbAkocmV2aXNpb24gMzg4MzgpCisr
KyBXZWJDb3JlL3dlYmNvcmUtd3guYmtsCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBA
CiAgICAgICAgICAgICBwbGF0Zm9ybS90ZXh0L3d4L1N0cmluZ1d4LmNwcAogICAgICAgICAgICAg
cGxhdGZvcm0vd3gvU3lzdGVtVGltZVd4LmNwcAogICAgICAgICAgICAgcGxhdGZvcm0vd3gvV2lk
Z2V0V3guY3BwCisgICAgICAgICAgICBwbGF0Zm9ybS93eC9Db250ZXh0TWVudVd4LmNwcAorICAg
ICAgICAgICAgcGxhdGZvcm0vd3gvQ29udGV4dE1lbnVJdGVtV3guY3BwCiAgICAgICAgICAgIAog
ICAgICAgICAgICAgPCEtLSBmaWxlcyBmcm9tIG90aGVyIHBvcnRzIHdlIGN1cnJlbnRseSByZWx5
IG9uIC0tPgogICAgICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9jdXJsL0Zvcm1EYXRhU3RyZWFt
Q3VybC5jcHAK
</data>
<flag name="review"
          id="12322"
          type_id="1"
          status="+"
          setter="kevino"
    />
          </attachment>
      

    </bug>

</bugzilla>