<?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>25470</bug_id>
          
          <creation_ts>2009-04-29 16:34:06 -0700</creation_ts>
          <short_desc>Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler and related callsites</short_desc>
          <delta_ts>2009-04-30 12:05:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119394</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-29 16:34:06 -0700</bug_when>
    <thetext>This is the last unforking patch for InspectorController, I promise. It&apos;s fugly, but it gets the job done.

Basically, in order to allow current Debuggerless and Profilerless Chromium Inspector to compile from ToT, I am extending ENABLE_JAVASCRIPT_DEBUGGER guard to all profiler methods and to IDL.

As a side-effect, I had to change the world to make IDL recognize the guard correctly across platforms.

I wracked my brain trying to come up with a simpler solution, but this is the best I could come up with. I suck.

I consider this change temporary until the big InspectorController redesign starts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119400</commentid>
    <comment_count>1</comment_count>
      <attachid>29898</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-29 16:48:20 -0700</bug_when>
    <thetext>Created attachment 29898
Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler, v1

 JavaScriptCore/ChangeLog                           |    9 +
 .../Configurations/FeatureDefines.xcconfig         |    3 +-
 WebCore/ChangeLog                                  |   18 ++
 WebCore/Configurations/FeatureDefines.xcconfig     |    3 +-
 WebCore/WebCore.vcproj/build-generated-files.sh    |    2 +-
 WebCore/bindings/js/JSConsoleCustom.cpp            |    4 +
 WebCore/bindings/js/JSDOMWindowBase.cpp            |    5 +-
 .../bindings/js/JSInspectorControllerCustom.cpp    |   28 +-
 WebCore/inspector/InspectorController.cpp          |  324 ++++++++++----------
 WebCore/inspector/InspectorController.h            |   82 +++---
 WebCore/inspector/InspectorController.idl          |   32 +-
 WebCore/page/Console.cpp                           |    2 +-
 WebKit/mac/ChangeLog                               |    9 +
 WebKit/mac/Configurations/FeatureDefines.xcconfig  |    3 +-
 WebKitTools/ChangeLog                              |    9 +
 WebKitTools/Scripts/build-webkit                   |    5 +
 16 files changed, 299 insertions(+), 239 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119418</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-04-29 18:56:18 -0700</bug_when>
    <thetext>Why not add ENABLE_JAVASCRIPT_PROFILER?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119471</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-30 09:14:05 -0700</bug_when>
    <thetext>Basically, two reasons:

* They are not mutually exclusive (i.e. you can&apos;t really pick one and not the other). There could be some work done to make that happen, which leads us to ...
* I consider this a temporary change with minimal effect possible, to unfork and clear way for Inspector rework.

I considered renaming JAVASCRIPT_DEBUGGER to be more accurate, like JAVASCRIPT_INSPECTOR, JAVASCRIPT_DEVELOPER_TOOLS or something, but couldn&apos;t come up with a name that didn&apos;t seem vague. Perhaps that&apos;s the route I should with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119490</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-30 11:28:41 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/43072.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119497</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-04-30 12:05:03 -0700</bug_when>
    <thetext>GTK fix landed as http://trac.webkit.org/changeset/43074.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29898</attachid>
            <date>2009-04-29 16:48:20 -0700</date>
            <delta_ts>2009-04-30 09:30:50 -0700</delta_ts>
            <desc>Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler, v1</desc>
            <filename>Extend-the-cover-of-ENABLE_JAVASCRIPT_DEBUGGER-to-profiler-v1.patch</filename>
            <type>text/plain</type>
            <size>35810</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">ZmI4M2JhYTFiNTMzYzczOTVjMmM5Y2M2NmVhYTEzZjA5ZTc4OWY2MgpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGIy
ZDQwNDMuLmU4ODEzZDIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwOS0wNC0yOSAg
RGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yNTQ3MAorICAgICAgICBFeHRlbmQgdGhlIGNvdmVyIG9mIEVOQUJM
RV9KQVZBU0NSSVBUX0RFQlVHR0VSIHRvIHByb2ZpbGVyLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEFkZGVkIEVOQUJMRV9KQVZBU0NSSVBUX0RF
QlVHR0VSIGRlZmluZS4KKwogMjAwOS0wNC0yOSAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdv
bWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnIGIvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKaW5kZXggODlmNjMwYS4uYzlhNTI2NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvSmF2YVNjcmlwdENvcmUv
Q29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTMzLDYgKzMzLDcgQEAg
RU5BQkxFX0RBVEFCQVNFID0gRU5BQkxFX0RBVEFCQVNFOwogRU5BQkxFX0RPTV9TVE9SQUdFID0g
RU5BQkxFX0RPTV9TVE9SQUdFOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05E
QVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CitFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwogRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUyA9IEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlM7CiBFTkFCTEVfU1ZHID0g
RU5BQkxFX1NWRzsKIEVOQUJMRV9TVkdfQU5JTUFUSU9OID0gRU5BQkxFX1NWR19BTklNQVRJT047
CkBAIC00Nyw0ICs0OCw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxFX1dPUktFUlM7CiBFTkFC
TEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1G
RUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQo
RU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxF
XzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFC
QVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJ
T04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdT
KSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFC
TEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VS
UykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjYmQ1ZmVjLi40NDUzYjlmIDEwMDY0
NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDA5LTA0LTI5ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1NDcwCisgICAgICAgIEV4
dGVuZCB0aGUgY292ZXIgb2YgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgdG8gcHJvZmlsZXIu
CisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzogQWRk
ZWQgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIuCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
YnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NvbnNvbGVDdXN0b20uY3BwOiBBZGRlZCBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgZ3Vh
cmQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcDogRGl0dG8uCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcDogRGl0
dG8uCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOiBNb3ZlZCBw
cm9maWxlci9kZWJ1Z2dlciBtZXRob2RzIHVuZGVyCisgICAgICAgICAgICBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikgZmxhZy4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oOiBEaXR0by4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5p
ZGw6IEFkZGVkIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSBndWFyZC4KKyAgICAgICAgKiBw
YWdlL0NvbnNvbGUuY3BwOiBSZXBsYWNlZCBVU0UoSlNDKSB3aXRoIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKSBndWFyZC4KKwogMjAwOS0wNC0yOSAgQW50b255IFNhcmdlbnQgIDxhc2FyZ2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292IGFu
ZCBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcgYi9XZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCmluZGV4IDg5ZjYzMGEuLmM5YTUyNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvV2ViQ29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMzMsNiArMzMsNyBAQCBFTkFCTEVf
REFUQUJBU0UgPSBFTkFCTEVfREFUQUJBU0U7CiBFTkFCTEVfRE9NX1NUT1JBR0UgPSBFTkFCTEVf
RE9NX1NUT1JBR0U7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNF
ID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKK0VOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5B
QkxFX0pBVkFTQ1JJUFRfREVCVUdHRVI7CiBFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05T
ID0gRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUzsKIEVOQUJMRV9TVkcgPSBFTkFCTEVf
U1ZHOwogRU5BQkxFX1NWR19BTklNQVRJT04gPSBFTkFCTEVfU1ZHX0FOSU1BVElPTjsKQEAgLTQ3
LDQgKzQ4LDQgQEAgRU5BQkxFX1dPUktFUlMgPSBFTkFCTEVfV09SS0VSUzsKIEVOQUJMRV9YUEFU
SCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJ
TkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfR0VP
TE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxF
X1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9T
VkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkg
JChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVO
REVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRB
VEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChF
TkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5B
QkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdf
VVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL2J1aWxkLWdlbmVyYXRlZC1maWxlcy5zaCBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
YnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCmluZGV4IDcwNjRhM2IuLmZlMjlhN2MgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCisrKyBi
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovYnVpbGQtZ2VuZXJhdGVkLWZpbGVzLnNoCkBAIC02NSw1
ICs2NSw1IEBAIG1rZGlyIC1wICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMi
CiBjZCAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzIgogCiBleHBvcnQgV2Vi
Q29yZT0iJHtYU1JDUk9PVH0iCi1leHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJB
U0UgRU5BQkxFX0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdfQU5JTUFUSU9OIEVOQUJMRV9T
VkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUIEVO
QUJMRV9TVkdfVVNFIEVOQUJMRV9WSURFTyBFTkFCTEVfV09SS0VSUyBFTkFCTEVfWFBBVEggRU5B
QkxFX1hTTFQiCitleHBvcnQgRkVBVFVSRV9ERUZJTkVTPSJFTkFCTEVfREFUQUJBU0UgRU5BQkxF
X0RPTV9TVE9SQUdFIEVOQUJMRV9JQ09OREFUQUJBU0UgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIgRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUyBFTkFCTEVfU1ZHIEVOQUJMRV9TVkdf
QU5JTUFUSU9OIEVOQUJMRV9TVkdfQVNfSU1BR0UgRU5BQkxFX1NWR19GT05UUyBFTkFCTEVfU1ZH
X0ZPUkVJR05fT0JKRUNUIEVOQUJMRV9TVkdfVVNFIEVOQUJMRV9WSURFTyBFTkFCTEVfV09SS0VS
UyBFTkFCTEVfWFBBVEggRU5BQkxFX1hTTFQiCiBtYWtlIC1mICIkV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlIiAtaiAke05VTUNQVVN9IHx8IGV4aXQgMQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nv
bnNvbGVDdXN0b20uY3BwCmluZGV4IGRkZmU0ZjcuLjRhZTI1YTMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ29uc29sZUN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDggQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCisKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxKU0M6OlByb2ZpbGU+ID4gUHJvZmlsZXNB
cnJheTsKIAogSlNWYWx1ZVB0ciBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4ZWNTdGF0ZSogZXhlYykg
Y29uc3QKQEAgLTQ4LDQgKzUwLDYgQEAgSlNWYWx1ZVB0ciBKU0NvbnNvbGU6OnByb2ZpbGVzKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlz
dCk7CiB9CiAKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAKaW5kZXggZDZlMDA1Ny4uNDE1Njg3NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjE1LDggKzIxNSwxMSBAQCBib29s
IEpTRE9NV2luZG93QmFzZTo6c3VwcG9ydHNQcm9maWxpbmcoKSBjb25zdAogICAgIFBhZ2UqIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgcmV0dXJuIHBhZ2UtPmlu
c3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCk7CisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJy
dXB0U2NyaXB0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNw
ZWN0b3JDb250cm9sbGVyQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0
b3JDb250cm9sbGVyQ3VzdG9tLmNwcAppbmRleCBlZmE4YmNkLi44ODkzN2EzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yQ29udHJvbGxlckN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckNvbnRyb2xsZXJDdXN0b20uY3BwCkBA
IC02OSwxOCArNjksNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUpTVmFsdWVQdHIgSlNJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlcyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JikKLXsKLSAgICBKU0xvY2sgbG9jayhm
YWxzZSk7Ci0gICAgQXJnTGlzdCByZXN1bHQ7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQcm9m
aWxlPiA+JiBwcm9maWxlcyA9IGltcGwoKS0+cHJvZmlsZXMoKTsKLQotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcHJvZmlsZXMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQo
dG9KUyhleGVjLCBwcm9maWxlc1tpXS5nZXQoKSkpOwotCi0gICAgcmV0dXJuIGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIHJlc3VsdCk7Ci19Ci0KIEpTVmFsdWVQdHIgSlNJbnNwZWN0b3JDb250cm9sbGVy
OjpoaWdobGlnaHRET01Ob2RlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpBcmdMaXN0JiBh
cmdzKQogewogICAgIGlmIChhcmdzLnNpemUoKSA8IDEpCkBAIC0zMTcsNiArMzA1LDggQEAgSlNW
YWx1ZVB0ciBKU0luc3BlY3RvckNvbnRyb2xsZXI6OndyYXBDYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEFyZ0xpc3QmIGEKICAgICByZXR1cm4gSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXI6OndyYXAoZXhlYywgYXJncy5hdCgwKSk7CiB9CiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKKwogSlNWYWx1ZVB0ciBKU0luc3BlY3RvckNvbnRyb2xsZXI6OmN1cnJlbnRDYWxs
RnJhbWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JikKIHsKICAgICBKYXZhU2NyaXB0
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBpbXBsKCktPmN1cnJlbnRDYWxsRnJhbWUoKTsKQEAgLTMz
MCw0ICszMjAsMTggQEAgSlNWYWx1ZVB0ciBKU0luc3BlY3RvckNvbnRyb2xsZXI6OmN1cnJlbnRD
YWxsRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXMKICAgICByZXR1cm4gSlNJbnNw
ZWN0ZWRPYmplY3RXcmFwcGVyOjp3cmFwKGdsb2JhbEV4ZWMsIHRvSlMoZXhlYywgY2FsbEZyYW1l
KSk7CiB9CiAKK0pTVmFsdWVQdHIgSlNJbnNwZWN0b3JDb250cm9sbGVyOjpwcm9maWxlcyhKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpBcmdMaXN0JikKK3sKKyAgICBKU0xvY2sgbG9j
ayhmYWxzZSk7CisgICAgQXJnTGlzdCByZXN1bHQ7CisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxQ
cm9maWxlPiA+JiBwcm9maWxlcyA9IGltcGwoKS0+cHJvZmlsZXMoKTsKKworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHJvZmlsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQodG9KUyhleGVjLCBwcm9maWxlc1tpXS5nZXQoKSkpOworCisgICAgcmV0dXJuIGNvbnN0cnVj
dEFycmF5KGV4ZWMsIHJlc3VsdCk7Cit9CisKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGE2OWU0
YzAuLmUyMjU4MmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC0xNzIsMjAgKzE3MiwyMCBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250
cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgICwgbV9wYWdl
KDApCiAgICAgLCBtX3NjcmlwdFN0YXRlKDApCiAgICAgLCBtX3dpbmRvd1Zpc2libGUoZmFsc2Up
CisgICAgLCBtX3Nob3dBZnRlclZpc2libGUoRWxlbWVudHNQYW5lbCkKKyAgICAsIG1fbmV4dElk
ZW50aWZpZXIoLTIpCisgICAgLCBtX2dyb3VwTGV2ZWwoMCkKKyAgICAsIG1fc2VhcmNoaW5nRm9y
Tm9kZShmYWxzZSkKKyAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCiAjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCiAgICAgLCBtX2RlYnVnZ2VyRW5hYmxlZChmYWxzZSkKICAgICAsIG1f
YXR0YWNoRGVidWdnZXJXaGVuU2hvd24oZmFsc2UpCi0jZW5kaWYKICAgICAsIG1fcHJvZmlsZXJF
bmFibGVkKGZhbHNlKQogICAgICwgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZShmYWxz
ZSkKLSAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShFbGVtZW50c1BhbmVsKQotICAgICwgbV9uZXh0
SWRlbnRpZmllcigtMikKLSAgICAsIG1fZ3JvdXBMZXZlbCgwKQotICAgICwgbV9zZWFyY2hpbmdG
b3JOb2RlKGZhbHNlKQogICAgICwgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIo
LTEpCiAgICAgLCBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcigxKQotICAgICwgbV9w
cmV2aW91c01lc3NhZ2UoMCkKICAgICAsIG1fc3RhcnRQcm9maWxpbmcodGhpcywgJkluc3BlY3Rv
ckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZykKKyNlbmRpZgogewogICAg
IEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7
CkBAIC00MzksMTYgKzQzOSw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xlYXJDb25z
b2xlTWVzc2FnZXMoKQogICAgIG1fZ3JvdXBMZXZlbCA9IDA7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCi17Ci0gICAg
aWYgKCFoYXNXZWJJbnNwZWN0b3IoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAic2V0UmVj
b3JkaW5nUHJvZmlsZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlzUHJvZmlsaW5n
KTsKLSAgICBmdW5jdGlvbi5jYWxsKCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3Rh
Y2spCiB7CiAgICAgKyttX2dyb3VwTGV2ZWw7CkBAIC00NjYsMzIgKzQ1Niw2IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvCiAgICAgYWRkQ29uc29sZU1lc3NhZ2UoMCwgbmV3IENvbnNvbGVNZXNz
YWdlKHNvdXJjZSwgRW5kR3JvdXBNZXNzYWdlTGV2ZWwsIFN0cmluZygpLCBsaW5lTnVtYmVyLCBz
b3VyY2VVUkwsIG1fZ3JvdXBMZXZlbCkpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmFkZFByb2ZpbGUoUGFzc1JlZlB0cjxQcm9maWxlPiBwcnBQcm9maWxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgaWYgKCFlbmFibGVkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9maWxlID0gcHJwUHJv
ZmlsZTsKLSAgICBtX3Byb2ZpbGVzLmFwcGVuZChwcm9maWxlKTsKLQotICAgIGlmICh3aW5kb3dW
aXNpYmxlKCkpCi0gICAgICAgIGFkZFNjcmlwdFByb2ZpbGUocHJvZmlsZS5nZXQoKSk7Ci0KLSAg
ICBhZGRQcm9maWxlTWVzc2FnZVRvQ29uc29sZShwcm9maWxlLCBsaW5lTnVtYmVyLCBzb3VyY2VV
UkwpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZFByb2ZpbGVNZXNzYWdlVG9D
b25zb2xlKFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgVVN0cmluZyYgc291cmNlVVJMKQotewotICAgIFJlZlB0cjxQcm9maWxlPiBwcm9m
aWxlID0gcHJwUHJvZmlsZTsKLQotICAgIFVTdHJpbmcgbWVzc2FnZSA9ICJQcm9maWxlIFwid2Vi
a2l0LXByb2ZpbGU6Ly8iOwotICAgIG1lc3NhZ2UgKz0gZW5jb2RlV2l0aFVSTEVzY2FwZVNlcXVl
bmNlcyhwcm9maWxlLT50aXRsZSgpKTsKLSAgICBtZXNzYWdlICs9ICIvIjsKLSAgICBtZXNzYWdl
ICs9IFVTdHJpbmc6OmZyb20ocHJvZmlsZS0+dWlkKCkpOwotICAgIG1lc3NhZ2UgKz0gIlwiIGZp
bmlzaGVkLiI7Ci0gICAgYWRkTWVzc2FnZVRvQ29uc29sZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKLX0KLQogdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjphdHRhY2hXaW5kb3coKQogewogICAgIGlmICghZW5hYmxlZCgp
KQpAQCAtNjYzLDggKzYyNyw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y2xvc2UoKQog
ICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9wVXNlckluaXRp
YXRlZFByb2ZpbGluZygpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIHN0
b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CiAgICAgZGlzYWJsZURlYnVnZ2VyKCk7CiAjZW5k
aWYKICAgICBjbG9zZVdpbmRvdygpOwpAQCAtNjg0LDgxICs2NDgsNiBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsb3NlV2luZG93KCkKICAgICBtX2NsaWVudC0+Y2xvc2VXaW5kb3coKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxp
bmdTb29uKCkKLXsKLSAgICBtX3N0YXJ0UHJvZmlsaW5nLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoVGlt
ZXI8SW5zcGVjdG9yQ29udHJvbGxlcj4qKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIXByb2ZpbGVyRW5hYmxlZCgpKSB7Ci0gICAgICAgIGVuYWJs
ZVByb2ZpbGVyKHRydWUpOwotICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Ci0gICAgfQotCi0gICAgbV9yZWNvcmRpbmdVc2Vy
SW5pdGlhdGVkUHJvZmlsZSA9IHRydWU7Ci0gICAgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2Zp
bGVOdW1iZXIgPSBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcisrOwotCi0gICAgVVN0
cmluZyB0aXRsZSA9IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZTsKLSAgICB0aXRsZSArPSAiLiI7
Ci0gICAgdGl0bGUgKz0gVVN0cmluZzo6ZnJvbShtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmls
ZU51bWJlcik7Ci0KLSAgICBFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRvdyht
X2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKS0+Z2xvYmFsRXhlYygpOwotICAgIFByb2ZpbGVy
Ojpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOwotCi0gICAg
dG9nZ2xlUmVjb3JkQnV0dG9uKHRydWUpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKLXsKLSAgICBpZiAoIWVuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IGZh
bHNlOwotCi0gICAgVVN0cmluZyB0aXRsZSA9ICBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWU7Ci0g
ICAgdGl0bGUgKz0gIi4iOwotICAgIHRpdGxlICs9IFVTdHJpbmc6OmZyb20obV9jdXJyZW50VXNl
ckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOwotCi0gICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0ZSA9
IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSktPmdsb2JhbEV4ZWMo
KTsKLSAgICBSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSA9IFByb2ZpbGVyOjpwcm9maWxlcigpLT5z
dG9wUHJvZmlsaW5nKHNjcmlwdFN0YXRlLCB0aXRsZSk7Ci0gICAgaWYgKHByb2ZpbGUpCi0gICAg
ICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgVVN0cmluZygpKTsKLQotICAgIHRvZ2dsZVJlY29y
ZEJ1dHRvbihmYWxzZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUHJv
ZmlsZXIoYm9vbCBza2lwUmVjb21waWxlKQotewotICAgIGlmIChtX3Byb2ZpbGVyRW5hYmxlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wcm9maWxlckVuYWJsZWQgPSB0cnVlOwotCi0gICAg
aWYgKCFza2lwUmVjb21waWxlKQotICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwotCi0gICAgaWYgKGhhc1dlYkluc3Bl
Y3RvcigpKQotICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJ
bnNwZWN0b3IsICJwcm9maWxlcldhc0VuYWJsZWQiKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaXNhYmxlUHJvZmlsZXIoKQotewotICAgIGlmICghbV9wcm9maWxlckVuYWJsZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvZmlsZXJFbmFibGVkID0gZmFsc2U7Ci0KLSAg
ICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
U29vbigpOwotCi0gICAgaWYgKGhhc1dlYkluc3BlY3RvcigpKQotICAgICAgICBjYWxsU2ltcGxl
RnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJwcm9maWxlcldhc0Rpc2Fi
bGVkIik7Ci19Ci0KLQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9i
amVjdHMoKQogewogICAgIEFTU0VSVChtX3NjcmlwdFN0YXRlKTsKQEAgLTc4NywxNCArNjc2LDYg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKQogICAg
IGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInBvcHVs
YXRlSW50ZXJmYWNlIik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkU2NyaXB0
UHJvZmlsZShQcm9maWxlKiBwcm9maWxlKQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImFkZFByb2ZpbGUiKTsKLSAgICBK
U0xvY2sgbG9jayhmYWxzZSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodG9KUyhtX3Nj
cmlwdFN0YXRlLCBwcm9maWxlKSk7Ci0gICAgZnVuY3Rpb24uY2FsbCgpOwotfQotCiB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnJlc2V0U2NyaXB0T2JqZWN0cygpCiB7CiAgICAgaWYgKCFoYXNX
ZWJJbnNwZWN0b3IoKSkKQEAgLTg1MSw4ICs3MzIsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogICAgICAgICBtX3Rp
bWVzLmNsZWFyKCk7CiAgICAgICAgIG1fY291bnRzLmNsZWFyKCk7CisjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCiAgICAgICAgIG1fcHJvZmlsZXMuY2xlYXIoKTsKLQorI2VuZGlmCiAj
aWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICBtX2RhdGFiYXNlUmVzb3VyY2VzLmNsZWFyKCk7
CiAjZW5kaWYKQEAgLTExNDIsNiArMTAyNCwxMjMgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
Ojptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxl
KFBhc3NSZWZQdHI8UHJvZmlsZT4gcHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgVVN0cmluZyYgc291cmNlVVJMKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSA9IHBycFByb2ZpbGU7CisgICAg
bV9wcm9maWxlcy5hcHBlbmQocHJvZmlsZSk7CisKKyAgICBpZiAod2luZG93VmlzaWJsZSgpKQor
ICAgICAgICBhZGRTY3JpcHRQcm9maWxlKHByb2ZpbGUuZ2V0KCkpOworCisgICAgYWRkUHJvZmls
ZU1lc3NhZ2VUb0NvbnNvbGUocHJvZmlsZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRQcm9maWxlTWVzc2FnZVRvQ29uc29sZShQYXNz
UmVmUHRyPFByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSA9IHBycFBy
b2ZpbGU7CisKKyAgICBVU3RyaW5nIG1lc3NhZ2UgPSAiUHJvZmlsZSBcIndlYmtpdC1wcm9maWxl
Oi8vIjsKKyAgICBtZXNzYWdlICs9IGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXMocHJvZmls
ZS0+dGl0bGUoKSk7CisgICAgbWVzc2FnZSArPSAiLyI7CisgICAgbWVzc2FnZSArPSBVU3RyaW5n
Ojpmcm9tKHByb2ZpbGUtPnVpZCgpKTsKKyAgICBtZXNzYWdlICs9ICJcIiBmaW5pc2hlZC4iOwor
ICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWws
IG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6YWRkU2NyaXB0UHJvZmlsZShQcm9maWxlKiBwcm9maWxlKQoreworICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgImFk
ZFByb2ZpbGUiKTsKKyAgICBKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQodG9KUyhtX3NjcmlwdFN0YXRlLCBwcm9maWxlKSk7CisgICAgZnVuY3Rpb24uY2Fs
bCgpOworfQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmdTb29uKCkKK3sKKyAgICBtX3N0YXJ0UHJvZmlsaW5nLnN0YXJ0T25lU2hvdCgwKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmco
VGltZXI8SW5zcGVjdG9yQ29udHJvbGxlcj4qKQoreworICAgIGlmICghZW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIXByb2ZpbGVyRW5hYmxlZCgpKSB7CisgICAgICAgIGVu
YWJsZVByb2ZpbGVyKHRydWUpOworICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CisgICAgfQorCisgICAgbV9yZWNvcmRpbmdV
c2VySW5pdGlhdGVkUHJvZmlsZSA9IHRydWU7CisgICAgbV9jdXJyZW50VXNlckluaXRpYXRlZFBy
b2ZpbGVOdW1iZXIgPSBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcisrOworCisgICAg
VVN0cmluZyB0aXRsZSA9IFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZTsKKyAgICB0aXRsZSArPSAi
LiI7CisgICAgdGl0bGUgKz0gVVN0cmluZzo6ZnJvbShtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJv
ZmlsZU51bWJlcik7CisKKyAgICBFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gdG9KU0RPTVdpbmRv
dyhtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpKS0+Z2xvYmFsRXhlYygpOworICAgIFByb2Zp
bGVyOjpwcm9maWxlcigpLT5zdGFydFByb2ZpbGluZyhzY3JpcHRTdGF0ZSwgdGl0bGUpOworCisg
ICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHRydWUpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKK3sKKyAgICBpZiAoIWVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9
IGZhbHNlOworCisgICAgVVN0cmluZyB0aXRsZSA9ICBVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWU7
CisgICAgdGl0bGUgKz0gIi4iOworICAgIHRpdGxlICs9IFVTdHJpbmc6OmZyb20obV9jdXJyZW50
VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIpOworCisgICAgRXhlY1N0YXRlKiBzY3JpcHRTdGF0
ZSA9IHRvSlNET01XaW5kb3cobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKSktPmdsb2JhbEV4
ZWMoKTsKKyAgICBSZWZQdHI8UHJvZmlsZT4gcHJvZmlsZSA9IFByb2ZpbGVyOjpwcm9maWxlcigp
LT5zdG9wUHJvZmlsaW5nKHNjcmlwdFN0YXRlLCB0aXRsZSk7CisgICAgaWYgKHByb2ZpbGUpCisg
ICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgVVN0cmluZygpKTsKKworICAgIHRvZ2dsZVJl
Y29yZEJ1dHRvbihmYWxzZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6dG9nZ2xl
UmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpCit7CisgICAgaWYgKCFoYXNXZWJJbnNwZWN0
b3IoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAic2V0UmVjb3JkaW5nUHJvZmlsZSIpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGlzUHJvZmlsaW5nKTsKKyAgICBmdW5jdGlvbi5j
YWxsKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUHJvZmlsZXIoYm9v
bCBza2lwUmVjb21waWxlKQoreworICAgIGlmIChtX3Byb2ZpbGVyRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9wcm9maWxlckVuYWJsZWQgPSB0cnVlOworCisgICAgaWYgKCFza2lw
UmVjb21waWxlKQorICAgICAgICBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOworCisgICAgaWYgKGhhc1dlYkluc3BlY3RvcigpKQor
ICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24obV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3Is
ICJwcm9maWxlcldhc0VuYWJsZWQiKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpk
aXNhYmxlUHJvZmlsZXIoKQoreworICAgIGlmICghbV9wcm9maWxlckVuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fcHJvZmlsZXJFbmFibGVkID0gZmFsc2U7CisKKyAgICBKYXZhU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwor
CisgICAgaWYgKGhhc1dlYkluc3BlY3RvcigpKQorICAgICAgICBjYWxsU2ltcGxlRnVuY3Rpb24o
bV9zY3JpcHRTdGF0ZSwgbV93ZWJJbnNwZWN0b3IsICJwcm9maWxlcldhc0Rpc2FibGVkIik7Cit9
CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXIoKQogewogICAgIGlm
ICghZW5hYmxlZCgpKQpAQCAtMTIzOCw2ICsxMjM3LDQwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6cmVtb3ZlQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlCiB7CiAgICAgSmF2YVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3Bv
aW50KHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKIH0KKworLy8gSmF2YVNjcmlwdERlYnVnTGlzdGVu
ZXIgZnVuY3Rpb25zCisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUGFyc2VTb3VyY2Uo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQoreworICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInBhcnNlZFNj
cmlwdFNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4oc291cmNlLnByb3ZpZGVyKCktPmFzSUQoKSkpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSk7CisgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoSlNDOjpVU3RyaW5nKHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSkpOwor
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5maXJzdExpbmUoKSk7CisgICAgZnVu
Y3Rpb24uY2FsbCgpOworfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZhaWxlZFRvUGFy
c2VTb3VyY2UoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZXJyb3JM
aW5lLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgU2NyaXB0RnVuY3Rpb25D
YWxsIGZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZmFpbGVkVG9QYXJz
ZVNjcmlwdFNvdXJjZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5wcm92
aWRlcigpLT51cmwoKSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpVU3RyaW5n
KHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSkpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KHNvdXJjZS5maXJzdExpbmUoKSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
ZXJyb3JMaW5lKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlcnJvck1lc3NhZ2UpOwor
ICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRQ
YXVzZSgpCit7CisgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5z
cGVjdG9yLCAicGF1c2VkU2NyaXB0Iik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkQ29udGludWUoKQoreworICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBt
X3dlYkluc3BlY3RvciwgInJlc3VtZWRTY3JpcHQiKTsKK30KKwogI2VuZGlmCiAKIHN0YXRpYyBQ
YXRoIHF1YWRUb1BhdGgoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQpAQCAtMTQxOCw0MSArMTQ1MSw0
IEBAIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWluZyhjb25zdCBTdHJpbmcmIHRp
dGxlLCBkb3VibGUmIGVsYXBzZWQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKLQotLy8gSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIgZnVuY3Rp
b25zCi0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkUGFyc2VTb3VyY2UoRXhlY1N0YXRl
KiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlKQotewotICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBm
dW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3BlY3RvciwgInBhcnNlZFNjcmlwdFNvdXJj
ZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
c291cmNlLnByb3ZpZGVyKCktPmFzSUQoKSkpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KHNvdXJjZS5wcm92aWRlcigpLT51cmwoKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
SlNDOjpVU3RyaW5nKHNvdXJjZS5kYXRhKCksIHNvdXJjZS5sZW5ndGgoKSkpOwotICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5maXJzdExpbmUoKSk7Ci0gICAgZnVuY3Rpb24uY2Fs
bCgpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmZhaWxlZFRvUGFyc2VTb3VyY2Uo
RXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBVU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0
aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAiZmFpbGVkVG9QYXJzZVNjcmlwdFNv
dXJjZSIpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJjZS5wcm92aWRlcigpLT51
cmwoKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoSlNDOjpVU3RyaW5nKHNvdXJjZS5k
YXRhKCksIHNvdXJjZS5sZW5ndGgoKSkpOwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNv
dXJjZS5maXJzdExpbmUoKSk7Ci0gICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXJyb3JMaW5l
KTsKLSAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChlcnJvck1lc3NhZ2UpOwotICAgIGZ1bmN0
aW9uLmNhbGwoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRQYXVzZSgpCi17
Ci0gICAgY2FsbFNpbXBsZUZ1bmN0aW9uKG1fc2NyaXB0U3RhdGUsIG1fd2ViSW5zcGVjdG9yLCAi
cGF1c2VkU2NyaXB0Iik7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29udGlu
dWUoKQotewotICAgIGNhbGxTaW1wbGVGdW5jdGlvbihtX3NjcmlwdFN0YXRlLCBtX3dlYkluc3Bl
Y3RvciwgInJlc3VtZWRTY3JpcHQiKTsKLX0KLQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBjMDYxODY1
Li5lNGUxZDk0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0x
NjEsMTUgKzE2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3dQYW5lbChTcGVjaWFsUGFuZWxz
KTsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRl
ZFByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxl
OyB9Ci0gICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmdTb29uKCk7Ci0gICAgdm9p
ZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoVGltZXI8SW5zcGVjdG9yQ29udHJvbGxlcj4q
ID0gMCk7Ci0gICAgdm9pZCBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpOwotCi0gICAgdm9p
ZCBlbmFibGVQcm9maWxlcihib29sIHNraXBSZWNvbXBpbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCBk
aXNhYmxlUHJvZmlsZXIoKTsKLSAgICBib29sIHByb2ZpbGVyRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIGVuYWJsZWQoKSAmJiBtX3Byb2ZpbGVyRW5hYmxlZDsgfQotCiAgICAgYm9vbCB3aW5kb3dW
aXNpYmxlKCk7CiAgICAgdm9pZCBzZXRXaW5kb3dWaXNpYmxlKGJvb2wgdmlzaWJsZSA9IHRydWUs
IGJvb2wgYXR0YWNoZWQgPSBmYWxzZSk7CiAKQEAgLTE3NywxMiArMTY4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWws
IFNjcmlwdENhbGxTdGFjayopOwogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdl
U291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCk7CiAgICAgdm9pZCBjbGVhckNvbnNvbGVN
ZXNzYWdlcygpOwotICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wpOwotCi0gICAgdm9p
ZCBhZGRQcm9maWxlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgSlNDOjpVU3RyaW5nJiBzb3VyY2VVUkwpOwotICAgIHZvaWQgYWRkUHJvZmlsZU1l
c3NhZ2VUb0NvbnNvbGUoUGFzc1JlZlB0cjxKU0M6OlByb2ZpbGU+IHBycFByb2ZpbGUsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKLSAgICB2b2lk
IGFkZFNjcmlwdFByb2ZpbGUoSlNDOjpQcm9maWxlKiBwcm9maWxlKTsKLSAgICBjb25zdCBQcm9m
aWxlc0FycmF5JiBwcm9maWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvZmlsZXM7IH0KIAogICAg
IHZvaWQgYXR0YWNoV2luZG93KCk7CiAgICAgdm9pZCBkZXRhY2hXaW5kb3coKTsKQEAgLTIyOSw3
ICsyMTQsMzUgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0
IHkpIGNvbnN0OwogICAgIHZvaWQgY2xvc2VXaW5kb3coKTsKIAorICAgIHZvaWQgZHJhd05vZGVI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisKKyAgICB2b2lkIGNvdW50KGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
SUQpOworCisgICAgdm9pZCBzdGFydFRpbWluZyhjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBi
b29sIHN0b3BUaW1pbmcoY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlJiBlbGFwc2VkKTsKKwor
ICAgIHZvaWQgc3RhcnRHcm91cChNZXNzYWdlU291cmNlIHNvdXJjZSwgU2NyaXB0Q2FsbFN0YWNr
KiBjYWxsRnJhbWUpOworICAgIHZvaWQgZW5kR3JvdXAoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKworICAgIGNvbnN0
IFN0cmluZyYgcGxhdGZvcm0oKSBjb25zdDsKKwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQorICAgIHZvaWQgYWRkUHJvZmlsZShQYXNzUmVmUHRyPEpTQzo6UHJvZmlsZT4sIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IEpTQzo6VVN0cmluZyYgc291cmNlVVJMKTsKKyAgICB2b2lk
IGFkZFByb2ZpbGVNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8SlNDOjpQcm9maWxlPiBwcnBQ
cm9maWxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBKU0M6OlVTdHJpbmcmIHNvdXJjZVVS
TCk7CisgICAgdm9pZCBhZGRTY3JpcHRQcm9maWxlKEpTQzo6UHJvZmlsZSogcHJvZmlsZSk7Cisg
ICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmlsZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2Zp
bGVzOyB9CisKKyAgICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKSBjb25z
dCB7IHJldHVybiBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlOyB9CisKKyAgICB2b2lk
IHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZ1Nvb24oKTsKKyAgICB2b2lkIHN0YXJ0VXNlcklu
aXRpYXRlZFByb2ZpbGluZyhUaW1lcjxJbnNwZWN0b3JDb250cm9sbGVyPiogPSAwKTsKKyAgICB2
b2lkIHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgdm9pZCB0b2dnbGVSZWNvcmRC
dXR0b24oYm9vbCk7CisKKyAgICB2b2lkIGVuYWJsZVByb2ZpbGVyKGJvb2wgc2tpcFJlY29tcGls
ZSA9IGZhbHNlKTsKKyAgICB2b2lkIGRpc2FibGVQcm9maWxlcigpOworICAgIGJvb2wgcHJvZmls
ZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZW5hYmxlZCgpICYmIG1fcHJvZmlsZXJFbmFibGVk
OyB9CisKICAgICB2b2lkIGVuYWJsZURlYnVnZ2VyKCk7CiAgICAgdm9pZCBkaXNhYmxlRGVidWdn
ZXIoKTsKICAgICBib29sIGRlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdn
ZXJFbmFibGVkOyB9CkBAIC0yNDgsMTkgKzI2MSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGVw
T3ZlclN0YXRlbWVudEluRGVidWdnZXIoKTsKICAgICB2b2lkIHN0ZXBJbnRvU3RhdGVtZW50SW5E
ZWJ1Z2dlcigpOwogICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rpb25JbkRlYnVnZ2VyKCk7Ci0jZW5k
aWYKLQotICAgIHZvaWQgZHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
Ci0gICAgCi0gICAgdm9pZCBjb3VudChjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKTsKLQotICAgIHZvaWQgc3RhcnRUaW1pbmco
Y29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgYm9vbCBzdG9wVGltaW5nKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGRvdWJsZSYgZWxhcHNlZCk7Ci0KLSAgICB2b2lkIHN0YXJ0R3JvdXAoTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIFNjcmlwdENhbGxTdGFjayogY2FsbEZyYW1lKTsKLSAgICB2b2lkIGVuZEdy
b3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCk7CiAKLSAgICBjb25zdCBTdHJpbmcmIHBsYXRmb3JtKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlND
OjpTb3VyY2VDb2RlJik7CisgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoSlND
OjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNl
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CisjZW5kaWYKIAogcHJpdmF0ZToK
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKQEAgLTI3
NywxMiArMjgzLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2hvd1dpbmRvdygpOwogCi0jaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291
cmNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpTb3VyY2VDb2RlJik7Ci0gICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OlNv
dXJjZUNvZGUmLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENv
bnRpbnVlKCk7Ci0jZW5kaWYKIAogICAgIFBhZ2UqIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNw
ZWN0b3JDbGllbnQqIG1fY2xpZW50OwpAQCAtMjkzLDcgKzI5Myw2IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxTdHJpbmc+IG1fa25vd25SZXNvdXJjZXM7CiAgICAgRnJhbWVSZXNvdXJjZXNNYXAg
bV9mcmFtZVJlc291cmNlczsKICAgICBWZWN0b3I8Q29uc29sZU1lc3NhZ2UqPiBtX2NvbnNvbGVN
ZXNzYWdlczsKLSAgICBQcm9maWxlc0FycmF5IG1fcHJvZmlsZXM7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIGRvdWJsZT4gbV90aW1lczsKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fY291
bnRzOwogI2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTMwNSwyMSArMzA0LDIyIEBAIHByaXZhdGU6
CiAgICAgU2NyaXB0T2JqZWN0IG1fd2ViSW5zcGVjdG9yOwogICAgIFNjcmlwdFN0YXRlKiBtX3Nj
cmlwdFN0YXRlOwogICAgIGJvb2wgbV93aW5kb3dWaXNpYmxlOwotI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIGJvb2wgbV9kZWJ1Z2dlckVuYWJsZWQ7Ci0gICAgYm9vbCBtX2F0
dGFjaERlYnVnZ2VyV2hlblNob3duOwotI2VuZGlmCi0gICAgYm9vbCBtX3Byb2ZpbGVyRW5hYmxl
ZDsKLSAgICBib29sIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGU7CiAgICAgU3BlY2lh
bFBhbmVscyBtX3Nob3dBZnRlclZpc2libGU7CiAgICAgbG9uZyBsb25nIG1fbmV4dElkZW50aWZp
ZXI7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0ZWROb2RlOwogICAgIHVuc2lnbmVkIG1f
Z3JvdXBMZXZlbDsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKKyAgICBDb25zb2xlTWVz
c2FnZSogbV9wcmV2aW91c01lc3NhZ2U7CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CisgICAgYm9vbCBtX2RlYnVnZ2VyRW5hYmxlZDsKKyAgICBib29sIG1fYXR0YWNoRGVidWdnZXJX
aGVuU2hvd247CisgICAgYm9vbCBtX3Byb2ZpbGVyRW5hYmxlZDsKKyAgICBib29sIG1fcmVjb3Jk
aW5nVXNlckluaXRpYXRlZFByb2ZpbGU7CiAgICAgaW50IG1fY3VycmVudFVzZXJJbml0aWF0ZWRQ
cm9maWxlTnVtYmVyOwogICAgIHVuc2lnbmVkIG1fbmV4dFVzZXJJbml0aWF0ZWRQcm9maWxlTnVt
YmVyOwotICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKICAgICBUaW1lcjxJ
bnNwZWN0b3JDb250cm9sbGVyPiBtX3N0YXJ0UHJvZmlsaW5nOworICAgIFByb2ZpbGVzQXJyYXkg
bV9wcm9maWxlczsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5pZGwgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmlkbAppbmRleCBmNmFlNmIxLi40NWVmNDM4
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmlkbAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmlkbApAQCAtNDEsMjYg
KzQxLDEwIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0ltcGxlbWVudGF0aW9uRnVuY3Rpb249
YXR0YWNoV2luZG93XSB2b2lkIGF0dGFjaCgpOwogICAgICAgICBbSW1wbGVtZW50YXRpb25GdW5j
dGlvbj1kZXRhY2hXaW5kb3ddIHZvaWQgZGV0YWNoKCk7CiAKLSAgICAgICAgdm9pZCBlbmFibGVE
ZWJ1Z2dlcigpOwotICAgICAgICB2b2lkIGRpc2FibGVEZWJ1Z2dlcigpOwotICAgICAgICB2b2lk
IHBhdXNlSW5EZWJ1Z2dlcigpOwotICAgICAgICB2b2lkIHJlc3VtZURlYnVnZ2VyKCk7Ci0gICAg
ICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnRJbkRlYnVnZ2VyKCk7Ci0gICAgICAgIHZvaWQgc3Rl
cEludG9TdGF0ZW1lbnRJbkRlYnVnZ2VyKCk7Ci0gICAgICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rp
b25JbkRlYnVnZ2VyKCk7Ci0KICAgICAgICAgdm9pZCBjbG9zZVdpbmRvdygpOwogICAgICAgICBb
SW1wbGVtZW50YXRpb25GdW5jdGlvbj1jbGVhckNvbnNvbGVNZXNzYWdlc10gdm9pZCBjbGVhck1l
c3NhZ2VzKCk7Ci0gICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPXN0YXJ0VXNlckluaXRp
YXRlZFByb2ZpbGluZ10gdm9pZCBzdGFydFByb2ZpbGluZygpOwotICAgICAgICBbSW1wbGVtZW50
YXRpb25GdW5jdGlvbj1zdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZ10gdm9pZCBzdG9wUHJvZmls
aW5nKCk7Ci0gICAgICAgIHZvaWQgZW5hYmxlUHJvZmlsZXIoKTsKLSAgICAgICAgdm9pZCBkaXNh
YmxlUHJvZmlsZXIoKTsKICAgICAgICAgW0ltcGxlbWVudGF0aW9uRnVuY3Rpb249dG9nZ2xlU2Vh
cmNoRm9yTm9kZUluUGFnZV0gdm9pZCB0b2dnbGVOb2RlU2VhcmNoKCk7CiAKLSAgICAgICAgYm9v
bGVhbiBkZWJ1Z2dlckVuYWJsZWQoKTsKLSAgICAgICAgYm9vbGVhbiBwYXVzZU9uRXhjZXB0aW9u
cygpOwotCi0gICAgICAgIGJvb2xlYW4gcHJvZmlsZXJFbmFibGVkKCk7CiAgICAgICAgIFtJbXBs
ZW1lbnRhdGlvbkZ1bmN0aW9uPXdpbmRvd1Zpc2libGVdIGJvb2xlYW4gaXNXaW5kb3dWaXNpYmxl
KCk7CiAgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPXNlYXJjaGluZ0Zvck5vZGVJblBh
Z2VdIGJvb2xlYW4gc2VhcmNoaW5nRm9yTm9kZSgpOwogCkBAIC04MSwxMSArNjUsMjcgQEAgbW9k
dWxlIGNvcmUgewogICAgICAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGluIHVuc2ln
bmVkIGxvbmcgaGVpZ2h0KTsKICAgICAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IHdyYXBDYWxsYmFj
ayhpbiBET01PYmplY3QgY2FsbGJhY2spOwogCisjaWYgRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdH
RVIKKyAgICAgICAgdm9pZCBlbmFibGVEZWJ1Z2dlcigpOworICAgICAgICB2b2lkIGRpc2FibGVE
ZWJ1Z2dlcigpOworICAgICAgICB2b2lkIHBhdXNlSW5EZWJ1Z2dlcigpOworICAgICAgICB2b2lk
IHJlc3VtZURlYnVnZ2VyKCk7CisgICAgICAgIHZvaWQgc3RlcE92ZXJTdGF0ZW1lbnRJbkRlYnVn
Z2VyKCk7CisgICAgICAgIHZvaWQgc3RlcEludG9TdGF0ZW1lbnRJbkRlYnVnZ2VyKCk7CisgICAg
ICAgIHZvaWQgc3RlcE91dE9mRnVuY3Rpb25JbkRlYnVnZ2VyKCk7CisgICAgICAgIGJvb2xlYW4g
ZGVidWdnZXJFbmFibGVkKCk7CisgICAgICAgIGJvb2xlYW4gcGF1c2VPbkV4Y2VwdGlvbnMoKTsK
KyAgICAgICAgYm9vbGVhbiBwcm9maWxlckVuYWJsZWQoKTsKKyAgICAgICAgW0ltcGxlbWVudGF0
aW9uRnVuY3Rpb249c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nXSB2b2lkIHN0YXJ0UHJvZmls
aW5nKCk7CisgICAgICAgIFtJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uPXN0b3BVc2VySW5pdGlhdGVk
UHJvZmlsaW5nXSB2b2lkIHN0b3BQcm9maWxpbmcoKTsKKyAgICAgICAgdm9pZCBlbmFibGVQcm9m
aWxlcigpOworICAgICAgICB2b2lkIGRpc2FibGVQcm9maWxlcigpOwogICAgICAgICBbQ3VzdG9t
XSBET01PYmplY3QgY3VycmVudENhbGxGcmFtZSgpOwogICAgICAgICB2b2lkIHNldFBhdXNlT25F
eGNlcHRpb25zKGluIGJvb2xlYW4gcGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgICAgICB2b2lkIGFk
ZEJyZWFrcG9pbnQoaW4gdW5zaWduZWQgbG9uZyBzb3VyY2VJRCwgaW4gdW5zaWduZWQgbG9uZyBs
aW5lTnVtYmVyKTsKICAgICAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGluIHVuc2lnbmVkIGxv
bmcgc291cmNlSUQsIGluIHVuc2lnbmVkIGxvbmcgbGluZU51bWJlcik7CiAKICAgICAgICAgW0N1
c3RvbV0gQXJyYXkgcHJvZmlsZXMoKTsKKyNlbmRpZgogICAgICB9OwogIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcCBiL1dlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAppbmRl
eCA2NzQ2Y2ZhLi5jZjE3ODNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBD
b25zb2xlOjpjb3VudChTY3JpcHRDYWxsU3RhY2sqIGNhbGxTdGFjaykKICAgICBwYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCktPmNvdW50KHRpdGxlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwg
bGFzdENhbGxlci5zb3VyY2VVUkwoKS5zdHJpbmcoKSk7CiB9CiAKLSNpZiBVU0UoSlNDKQorI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCiB2b2lkIENvbnNvbGU6OnByb2ZpbGUoY29u
c3QgSlNDOjpVU3RyaW5nJiB0aXRsZSwgU2NyaXB0Q2FsbFN0YWNrKiBjYWxsU3RhY2spCiB7CmRp
ZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGRjNzI2MWEuLmI3MWNjMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDQtMjkgIERp
bWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjU0NzAKKyAgICAgICAgRXh0ZW5kIHRoZSBjb3ZlciBvZiBFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUiB0byBwcm9maWxlci4KKworICAgICAgICAqIENvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBBZGRlZCBFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUiBkZWZpbmUuCisKIDIwMDktMDQtMjkgIEtldmluIERlY2tlciAgPGtkZWNrZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc29uLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyBiL1dlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggODlmNjMw
YS4uYzlhNTI2NSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZworKysgYi9XZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVE
ZWZpbmVzLnhjY29uZmlnCkBAIC0zMyw2ICszMyw3IEBAIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJM
RV9EQVRBQkFTRTsKIEVOQUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKIEVO
QUJMRV9HRU9MT0NBVElPTiA9IDsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRB
VEFCQVNFOworRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIgPSBFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUjsKIEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMgPSBFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TOwogRU5BQkxFX1NWRyA9IEVOQUJMRV9TVkc7CiBFTkFCTEVfU1ZH
X0FOSU1BVElPTiA9IEVOQUJMRV9TVkdfQU5JTUFUSU9OOwpAQCAtNDcsNCArNDgsNCBAQCBFTkFC
TEVfV09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRI
OwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFC
TEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFU
QUJBU0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVf
WFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxF
X0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxF
X0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1B
R0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAk
KEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJ
REVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVO
QUJMRV9YU0xUKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCBhODQzZmU4Li5lNjk2ZWMwIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMDktMDQtMjkgIERpbWl0cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU0NzAKKyAgICAgICAgRXh0ZW5kIHRo
ZSBjb3ZlciBvZiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiB0byBwcm9maWxlci4KKworICAg
ICAgICAqIFNjcmlwdHMvYnVpbGQtd2Via2l0OiBBZGRlZCBFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUiBkZWZpbmUuCisKIDIwMDktMDQtMjkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAogICAgICAgICBVcGRhdGUgYnVpbGQud2Via2l0Lm9yZyBjb25maWd1cmF0aW9uIGZvciB0aGUg
YWRkaXRpb24gb2YgdGhlIG5ldyBHVEsgYnVpbGRib3QuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
CmluZGV4IDlhOWVlYzYuLjgyZjJmOWEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC00
OSw2ICs0OSw3IEBAIG15ICRkb21TdG9yYWdlU3VwcG9ydCA9IDE7CiBteSAkZ2VvbG9jYXRpb25T
dXBwb3J0ID0gMDsKIG15ICRnbm9tZUtleXJpbmdTdXBwb3J0ID0gMDsKIG15ICRpY29uRGF0YWJh
c2VTdXBwb3J0ID0gMTsKK215ICRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0ID0gMTsKIG15ICRv
ZmZsaW5lV2ViQXBwbGljYXRpb25TdXBwb3J0ID0gMTsKIG15ICRzdmdTdXBwb3J0ID0gMTsKIG15
ICRzdmdBbmltYXRpb25TdXBwb3J0ID0gMTsKQEAgLTgyLDYgKzgzLDcgQEAgVXNhZ2U6ICRwcm9n
cmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdG8gcGFzcyB0byBidWlsZCBzeXN0ZW1dCiAgIC0t
W25vLV1nZW9sb2NhdGlvbiAgICAgICAgICAgICAgICBUb2dnbGUgR2VvbG9jYXRpb24gc3VwcG9y
dCAoZGVmYXVsdDogJGdlb2xvY2F0aW9uU3VwcG9ydCkKICAgLS1bbm8tXWdub21la2V5cmluZyAg
ICAgICAgICAgICAgIFRvZ2dsZSBHTk9NRSBLZXlyaW5nIFN1cHBvcnQgKEdUSysgcG9ydCBvbmx5
KSAoZGVmYXVsdDogJGdub21lS2V5cmluZ1N1cHBvcnQpCiAgIC0tW25vLV1pY29uLWRhdGFiYXNl
ICAgICAgICAgICAgICBUb2dnbGUgSWNvbiBkYXRhYmFzZSBzdXBwb3J0IChkZWZhdWx0OiAkaWNv
bkRhdGFiYXNlU3VwcG9ydCkKKyAgLS1bbm8tXWphdmFzY3JpcHQtZGVidWdnZXIgICAgICAgIFRv
Z2dsZSBKYXZhU2NyaXB0IERlYnVnZ2VyL1Byb2ZpbGVyIHN1cHBvcnQgKGRlZmF1bHQ6ICRqYXZh
U2NyaXB0RGVidWdnZXJTdXBwb3J0KQogICAtLVtuby1db2ZmbGluZS13ZWItYXBwbGljYXRpb25z
ICAgVG9nZ2xlIE9mZmxpbmUgV2ViIEFwcGxpY2F0aW9uIFN1cHBvcnQgKGRlZmF1bHQ6ICRvZmZs
aW5lV2ViQXBwbGljYXRpb25TdXBwb3J0KQogICAtLVtuby1dc3ZnICAgICAgICAgICAgICAgICAg
ICAgICAgVG9nZ2xlIFNWRyBzdXBwb3J0IChkZWZhdWx0OiAkc3ZnU3VwcG9ydCkKICAgLS1bbm8t
XXN2Zy1hbmltYXRpb24gICAgICAgICAgICAgIFRvZ2dsZSBTVkcgYW5pbWF0aW9uIHN1cHBvcnQg
KGRlZmF1bHQ6ICRzdmdBbmltYXRpb25TdXBwb3J0LCBpbXBsaWVzIFNWRyBTdXBwb3J0KQpAQCAt
MTA5LDYgKzExMSw3IEBAIEdldE9wdGlvbnMoCiAgICAgICAgICAgICdnZW9sb2NhdGlvbiEnID0+
IFwkZ2VvbG9jYXRpb25TdXBwb3J0LAogICAgICAgICAgICAnZ25vbWVrZXlyaW5nIScgPT4gXCRn
bm9tZUtleXJpbmdTdXBwb3J0LAogICAgICAgICAgICAnaWNvbi1kYXRhYmFzZSEnID0+IFwkaWNv
bkRhdGFiYXNlU3VwcG9ydCwKKyAgICAgICAgICAgJ2phdmFzY3JpcHQtZGVidWdnZXIhJyA9PiBc
JGphdmFTY3JpcHREZWJ1Z2dlclN1cHBvcnQsCiAgICAgICAgICAgICdvZmZsaW5lLXdlYi1hcHBs
aWNhdGlvbnMhJyA9PiBcJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsCiAgICAgICAgICAg
ICdzdmchJyA9PiBcJHN2Z1N1cHBvcnQsCiAgICAgICAgICAgICdzdmctYW5pbWF0aW9uIScgPT4g
XCRzdmdBbmltYXRpb25TdXBwb3J0LApAQCAtMTc2LDYgKzE3OSw3IEBAIGlmIChpc0d0aygpKSB7
CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkZ2VvbG9jYXRpb25TdXBwb3J0LCAi
Z2VvbG9jYXRpb24iKTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRnbm9tZUtl
eXJpbmdTdXBwb3J0LCAiZ25vbWVrZXlyaW5nIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rv
b2xzRmxhZygkaWNvbkRhdGFiYXNlU3VwcG9ydCwgImljb24tZGF0YWJhc2UiKTsKKyAgICBwdXNo
IEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRqYXZhU2NyaXB0RGVidWdnZXJTdXBwb3J0LCAiamF2
YXNjcmlwdC1kZWJ1Z2dlciIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJG9m
ZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQsICJvZmZsaW5lLXdlYi1hcHBsaWNhdGlvbnMiKTsK
ICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdTdXBwb3J0LCAic3ZnIik7CiAg
ICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgInN2
Zy1hbmltYXRpb24iKTsKQEAgLTIwNiw2ICsyMTAsNyBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgp
KSB7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfRE9NX1NUT1JBR0UiLCAkZG9t
U3RvcmFnZVN1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0dFT0xP
Q0FUSU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9u
KCJFTkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFzZVN1cHBvcnQpOworICAgIHB1c2gg
QG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCAkamF2YVNjcmlw
dERlYnVnZ2VyU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TIiwgJG9mZmxpbmVXZWJBcHBsaWNhdGlvblN1cHBvcnQpOwog
ICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX1NWRyIsICRzdmdTdXBwb3J0KTsKICAg
ICBwdXNoIEBvcHRpb25zLCBvcHRpb24oIkVOQUJMRV9TVkdfQU5JTUFUSU9OIiwgJHN2Z0FuaW1h
dGlvblN1cHBvcnQpOwo=
</data>
<flag name="review"
          id="14977"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>