<?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>204875</bug_id>
          
          <creation_ts>2019-12-04 23:50:57 -0800</creation_ts>
          <short_desc>Web Inspector: add compiler UNLIKELY hints when checking if developer extras are enabled</short_desc>
          <delta_ts>2019-12-06 15:21:26 -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>Web Inspector</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1595729</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-04 23:50:57 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595732</commentid>
    <comment_count>1</comment_count>
      <attachid>384883</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-05 00:08:22 -0800</bug_when>
    <thetext>Created attachment 384883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595896</commentid>
    <comment_count>2</comment_count>
      <attachid>384883</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2019-12-05 11:13:32 -0800</bug_when>
    <thetext>Comment on attachment 384883
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=384883&amp;action=review

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp:68
&gt; +    if (LIKELY(m_consoleAgent-&gt;developerExtrasEnabled()))

Backwards? Should this be: if (LIKELY(!m_consoleAgent-&gt;developerExtrasEnabled()))

Similar for the rest like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595905</commentid>
    <comment_count>3</comment_count>
      <attachid>384926</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-12-05 11:35:38 -0800</bug_when>
    <thetext>Created attachment 384926
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=384883&amp;action=review

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectConsoleClient.cpp:68
&gt;&gt; +    if (LIKELY(m_consoleAgent-&gt;developerExtrasEnabled()))
&gt; 
&gt; Backwards? Should this be: if (LIKELY(!m_consoleAgent-&gt;developerExtrasEnabled()))
&gt; 
&gt; Similar for the rest like this.

Oops :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596380</commentid>
    <comment_count>4</comment_count>
      <attachid>384926</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-12-06 14:54:26 -0800</bug_when>
    <thetext>Comment on attachment 384926
Patch

r=me, Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596399</commentid>
    <comment_count>5</comment_count>
      <attachid>384926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-06 15:20:38 -0800</bug_when>
    <thetext>Comment on attachment 384926
Patch

Clearing flags on attachment: 384926

Committed r253226: &lt;https://trac.webkit.org/changeset/253226&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596400</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-06 15:20:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596401</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-06 15:21:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/57715465&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384883</attachid>
            <date>2019-12-05 00:08:22 -0800</date>
            <delta_ts>2019-12-05 11:35:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>204875.diff</filename>
            <type>text/plain</type>
            <size>27652</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiYmZmYzQwYWYxLi40YzI4NDE4MTdlYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMTItMDQgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFk
ZCBjb21waWxlciBVTkxJS0VMWSBoaW50cyB3aGVuIGNoZWNraW5nIGlmIGRldmVsb3BlciBleHRy
YXMgYXJlIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGNoZWNrIGZvciB3aGV0aGVyIGRldmVsb3BlciBleHRyYXMgYXJlIGVu
YWJsZWQgZnJvbSB0aGUgYWdlbnQgdG8gdGhlIGNsaWVudCBzbyB0aGF0CisgICAgICAgIHdoZW4g
aW5zcGVjdGluZyBhIHdlYnBhZ2UsIHdlIGRvbid0IGNoZWNrIGZvciBpdCB0d2ljZSwgc2luY2Ug
YEluc3BlY3Rvckluc3RydW1lbnRhdGlvbmAKKyAgICAgICAgYWxyZWFkeSBjaGVja3MgZm9yIGl0
IHRvby4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRldmVsb3BlckV4
dHJhc0VuYWJsZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorCisgICAgICAgICog
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2
ZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNv
dW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpj
b3VudFJlc2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50Ojpwcm9maWxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xl
Q2xpZW50Ojpwcm9maWxlRW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lTG9nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXApOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29yZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToK
KwogMjAxOS0xMi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIFB1dCBtb3JlIGNlbGxzIGludG8gSXNvU3Vic3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50LmNwcAppbmRleCAwMTFjZDcxYmJhNC4uZTBmMWNlODc2NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY1LDYgKzY1LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3MKICAgICBpZiAoSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpsb2dUb1N5c3RlbUNv
bnNvbGUoKSkKICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhB
cmd1bWVudHMoTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIGdsb2JhbE9i
amVjdCwgYXJndW1lbnRzLmNvcHlSZWYoKSk7CiAKKyAgICBpZiAoTElLRUxZKG1fY29uc29sZUFn
ZW50LT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBT
dHJpbmcgbWVzc2FnZTsKICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyht
ZXNzYWdlKTsKICAgICBtX2NvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShtYWtlVW5p
cXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNlOjpDb25zb2xlQVBJLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgV1RGTW92ZShhcmd1bWVudHMpLCBnbG9iYWxPYmplY3QpKTsKQEAgLTc3LDE3
ICs4MCwyMyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhU
eXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUgdHlwZSwgTWVzcwogCiB2b2lkIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudDo6Y291bnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCkKIHsKKyAgICBpZiAoTElLRUxZKG1fY29uc29sZUFnZW50LT5kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnNvbGVBZ2Vu
dC0+Y291bnQoZ2xvYmFsT2JqZWN0LCBsYWJlbCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50Ojpjb3VudFJlc2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWShtX2NvbnNvbGVBZ2VudC0+ZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb25zb2xl
QWdlbnQtPmNvdW50UmVzZXQoZ2xvYmFsT2JqZWN0LCBsYWJlbCk7CiB9CiAKIHZvaWQgSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25z
dCBTdHJpbmcmIHRpdGxlKQogewotICAgIGlmICghbV9jb25zb2xlQWdlbnQtPmVuYWJsZWQoKSkK
KyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2VudC0+ZW5hYmxlZCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVubmFtZWQgcHJvZmlsZXMuIERpc2FsbG93
IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KQEAgLTEwOCw3ICsxMTcsNyBAQCB2b2lkIEpTR2xv
YmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiB0aQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmls
ZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAgICBp
ZiAoIW1fY29uc29sZUFnZW50LT5lbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghbV9jb25zb2xl
QWdlbnQtPmVuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFN0b3AgcHJvZmls
ZXMgaW4gcmV2ZXJzZSBvcmRlci4gSWYgdGhlIHRpdGxlIGlzIGVtcHR5LCB0aGVuIHN0b3AgdGhl
IGxhc3QgcHJvZmlsZS4KQEAgLTE1NSwzNSArMTY0LDY1IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpzdG9wQ29uc29sZVByb2ZpbGUoKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJiB0aXRsZSkKIHsKKyAgICBpZiAoTElLRUxZKG1fY29uc29sZUFnZW50LT5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnNvbGVB
Z2VudC0+dGFrZUhlYXBTbmFwc2hvdCh0aXRsZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50Ojp0aW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0
cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWShtX2NvbnNvbGVBZ2VudC0+ZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb25zb2xlQWdlbnQt
PnN0YXJ0VGltaW5nKGdsb2JhbE9iamVjdCwgbGFiZWwpOwogfQogCiB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6dGltZUxvZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50cykKIHsK
KyAgICBpZiAoTElLRUxZKG1fY29uc29sZUFnZW50LT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkp
KQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnNvbGVBZ2VudC0+bG9nVGltaW5nKGdsb2Jh
bE9iamVjdCwgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWShtX2NvbnNvbGVBZ2VudC0+
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb25z
b2xlQWdlbnQtPnN0b3BUaW1pbmcoZ2xvYmFsT2JqZWN0LCBsYWJlbCk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXAoSlNHbG9iYWxPYmplY3QqLCBSZWY8
U2NyaXB0QXJndW1lbnRzPiYmKQogewotICAgIC8vIEZJWE1FOiBKU0NvbnRleHQgaW5zcGVjdGlv
biBuZWVkcyBhIHRpbWVsaW5lLgorICAgIGlmIChMSUtFTFkobV9jb25zb2xlQWdlbnQtPmRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHdhcm5VbmltcGxl
bWVudGVkKCJjb25zb2xlLnRpbWVTdGFtcCJfcyk7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmKSB7IH0KLXZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNH
bG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKSB7IH0KK3ZvaWQgSlNHbG9iYWxP
YmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJn
dW1lbnRzPiYmKQoreworICAgIGlmIChMSUtFTFkobV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4
dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdhcm5VbmltcGxlbWVudGVk
KCJjb25zb2xlLnJlY29yZCJfcyk7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50OjpyZWNvcmRFbmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmKQor
eworICAgIGlmIChMSUtFTFkobV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQo
KSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnJl
Y29yZEVuZCJfcyk7Cit9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzY3Jl
ZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHsKKyAgICBp
ZiAoTElLRUxZKG1fY29uc29sZUFnZW50LT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQorICAg
ICAgICByZXR1cm47CisKICAgICB3YXJuVW5pbXBsZW1lbnRlZCgiY29uc29sZS5zY3JlZW5zaG90
Il9zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggZTE4Yjg2NTJj
ZDYuLjI2ODE0ZmU3ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTEw
Niw2ICsxMDYsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMo
RXJyb3JTdHJpbmcmKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+bWVzc2FnZXNDbGVh
cmVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7Cit9CisKIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNldCgpCiB7CiAgICAgRXJyb3JTdHJpbmcgaWdub3Jl
ZDsKQEAgLTExNyw5ICsxMjIsNiBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6cmVzZXQo
KQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6
OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKG1lc3NhZ2UtPnR5cGUoKSA9PSBN
ZXNzYWdlVHlwZTo6Q2xlYXIpIHsKICAgICAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKICAgICAg
ICAgY2xlYXJNZXNzYWdlcyhpZ25vcmVkKTsKQEAgLTEzMCw5ICsxMzIsNiBAQCB2b2lkIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShzdGQ6OnVuaXF1ZV9wdHI8Q29u
c29sZU1lc3NhZ2U+CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7
Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgp
LmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQVNTRVJU
KCFsYWJlbC5pc051bGwoKSk7CiAgICAgaWYgKGxhYmVsLmlzTnVsbCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNDgsOSArMTQ3LDYgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0YXJ0
VGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKIAogdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYgYXJn
dW1lbnRzKQogewotICAgIGlmICghbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIEFTU0VSVCghbGFiZWwuaXNOdWxsKCkpOwogICAgIGlmIChsYWJlbC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTczLDkgKzE2OSw2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50Ojpsb2dUaW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBpZiAoIW1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBBU1NFUlQoIWxhYmVsLmlzTnVs
bCgpKTsKICAgICBpZiAobGFiZWwuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIwMCw5
ICsxOTMsNiBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6c3RvcFRpbWluZyhKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7Ci0gICAgaWYg
KCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgaWYgKCFtX2hlYXBBZ2Vu
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTYsOSArMjA2LDYgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSkKIAogdm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIHJlc3VsdCA9IG1fY291bnRzLmFkZChsYWJl
bCwgMSk7CiAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZSArPSAxOwpAQCAtMjMxLDkgKzIxOCw2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50Ojpjb3VudChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0
cmluCiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudFJlc2V0KEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAgICBpZiAo
IW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIGl0ID0gbV9jb3Vu
dHMuZmluZChsYWJlbCk7CiAgICAgaWYgKGl0ID09IG1fY291bnRzLmVuZCgpKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
CkBAIC0yNTYsOSArMjQwLDYgQEAgc3RhdGljIGJvb2wgaXNHcm91cE1lc3NhZ2UoTWVzc2FnZVR5
cGUgdHlwZSkKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCiB7Ci0gICAg
aWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgQVNTRVJUX0FSRyhj
b25zb2xlTWVzc2FnZSwgY29uc29sZU1lc3NhZ2UpOwogCiAgICAgQ29uc29sZU1lc3NhZ2UqIHBy
ZXZpb3VzTWVzc2FnZSA9IG1fY29uc29sZU1lc3NhZ2VzLmlzRW1wdHkoKSA/IG51bGxwdHIgOiBt
X2NvbnNvbGVNZXNzYWdlcy5sYXN0KCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CmluZGV4IDBkMTA2MDk3ZWIyLi5mOGJhMmYyMjFiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5zcGVjdG9ySGVh
cEFnZW50KEluc3BlY3RvckhlYXBBZ2VudCogYWdlbnQpIHsgbV9oZWFwQWdlbnQgPSBhZ2VudDsg
fQogCiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAg
Ym9vbCBkZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCByZXNldCgpOwog
CiAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVz
c2FnZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVjMWE3ZGQwNWZiLi5kYmFlNWYzOWEzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTEyLTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgY29tcGlsZXIgVU5MSUtFTFkg
aGludHMgd2hlbiBjaGVja2luZyBpZiBkZXZlbG9wZXIgZXh0cmFzIGFyZSBlbmFibGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQ4NzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVN0b3BSZWNvcmRpbmdDYW52
YXMpOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVX
aW5kb3dEaXNjYXJkZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdl
VG9Db25zb2xlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmNvbnNvbGVDb3VudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZ0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29s
ZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhc0ltcGwpOiBBZGRlZC4KKworICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5kb3dEaXNjYXJkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAgIFJlbW92ZSB0aGUgcmVk
dW5kYW50IGNoZWNrIGZvciB3aGV0aGVyIGRldmVsb3BlciBleHRyYXMgYXJlIGVuYWJsZWQgc2lu
Y2UgaXQncyBhbHJlYWR5CisgICAgICAgIGNoZWNrZWQgYnkgYEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbmAuCisKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25zb2xlQ2xpZW50OjpyZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZUNvbnNvbGVDbGllbnQ6OnJlY29yZEVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQ2FudmFzQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OmNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzKTogQWRkZWQuCisgICAgICAgIEFkZCBj
aGVja3MgZm9yIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpYCB0byBh
dm9pZCBkb2luZyBleHRyYSB3b3JrIHdoZW4gV2ViCisgICAgICAgIEluc3BlY3RvciBpc24ndCBv
cGVuLgorCiAyMDE5LTEyLTA0ICBMb3VpZSBMaXZvbi1CZW1lbCAgPGxsaXZvbmJlbWVsQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGQgZXhjbHVzaW9uIHJ1bGUgZm9yIHRleHQgbWFuaXB1bGF0aW9u
IFNQSSB0byBleGNsdWRlIGJhc2VkIG9uIGVsZW1lbnQgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggY2I2
ZWQ5ZjZjODQuLmI1NjFkMDE0MTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb2N1bWVudERldGFjaGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpm
cmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgRE9NV2luZG93KiB3aW5kb3cpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAg
IGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoV2Vi
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNv
bGVBZ2VudCgpKQpAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJbXBsKEluc3RydW1lbnRpbmdBCiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogewotICAg
IGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3Bl
ckV4dHJhc0VuYWJsZWQoKSkKKyAgICBpZiAoTElLRUxZKCFpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKEluc3BlY3Rvck5ldHdvcmtBZ2VudCogbmV0d29ya0FnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JOZXR3b3JrQWdlbnQoKSkKQEAgLTYxNSw3ICs2
MTUsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZ0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxv
YWRlciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgp
KQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1l
bnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQpAQCAtNjgwLDcgKzY4MCw3IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURldGFjaGVkRnJvbVBhcmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1p
dExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1l
JiBmcmFtZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBpZiAoIWluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkp
CisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
ICghZnJhbWUucGFnZSgpKQpAQCAtODI4LDcgKzgyOCw3IEBAIHN0YXRpYyBib29sIGlzQ29uc29s
ZUFzc2VydE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUpCiAK
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBzdGQ6OnVuaXF1ZV9wdHI8
Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlm
IChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBNZXNzYWdlU291
cmNlIHNvdXJjZSA9IG1lc3NhZ2UtPnNvdXJjZSgpOwpAQCAtODQ2LDEyICs4NDYsMTggQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3QKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVDb3VudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
SlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAg
aWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChhdXRv
KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQog
ICAgICAgICBjb25zb2xlQWdlbnQtPmNvdW50KHN0YXRlLCBsYWJlbCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlQ291bnRSZXNldEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgSlNDOjpKU0dsb2JhbE9iamVjdCogc3RhdGUs
IGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCisg
ICAgICAgIHJldHVybjsKKwogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmNvdW50
UmVzZXQoc3RhdGUsIGxhYmVsKTsKIH0KQEAgLTg2NCw3ICs4NzAsNyBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6dGFrZUhlYXBTbmFwc2hvdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xl
VGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFt
ZSYgZnJhbWUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwp
CiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCku
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdB
Z2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCkBAIC04NzUsNyAr
ODgxLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHIKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQpAQCAtODg0LDcgKzg5MCw3IEBA
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVUaW1pbmdJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RyCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpsb2dDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBS
ZWY8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRzKQogewotICAgIGlmICgh
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJh
c0VuYWJsZWQoKSkKKyAgICBpZiAoTElLRUxZKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2Vi
Q29uc29sZUFnZW50KCkpCkBAIC04OTMsNyArODk5LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BDb25zb2xlVGltaW5nSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAg
aWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpKQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy53ZWJDb25zb2xlQWdlbnQoKSkKQEAgLTkwNCw3ICs5MTAsNyBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNvbGVUaW1p
bmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7Ci0gICAgaWYgKCFpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkKQEAgLTkzOCw2ICs5NDQsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW4K
ICAgICAgICAgY2FudmFzQWdlbnQtPmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhcyhjb250ZXh0
LCBleGVjLCBvcHRpb25zKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlm
IChhdXRvKiBjYW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ2FudmFz
QWdlbnQoKSkKKyAgICAgICAgY2FudmFzQWdlbnQtPmNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFz
KGNvbnRleHQpOworfQorCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRh
dGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEYXRh
YmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgaWYgKGF1dG8qIGRhdGFiYXNlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRhdGFiYXNlQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA2Njk4NDMx
ZjMxNi4uZGJmODIyMDVkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTI1NCw2ICsyNTQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgc3RhcnRQcm9maWxpbmcoUGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wUHJvZmlsaW5nKFBh
Z2UmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3Rh
dGljIHZvaWQgY29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCogb3B0aW9ucyk7CisgICAg
c3RhdGljIHZvaWQgY29uc29sZVN0b3BSZWNvcmRpbmdDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCYpOwogCiAgICAgc3RhdGljIHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERvY3Vt
ZW50JiwgaW50IGNhbGxiYWNrSWQpOwogICAgIHN0YXRpYyB2b2lkIGRpZENhbmNlbEFuaW1hdGlv
bkZyYW1lKERvY3VtZW50JiwgaW50IGNhbGxiYWNrSWQpOwpAQCAtNDQ5LDYgKzQ1MCw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgc3RhcnRQcm9maWxpbmdJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAg
c3RhdGljIHZvaWQgc3RvcFByb2ZpbGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAgICBzdGF0aWMgdm9pZCBj
b25zb2xlU3RhcnRSZWNvcmRpbmdDYW52YXNJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0JiwgSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNPYmplY3Qq
IG9wdGlvbnMpOworICAgIHN0YXRpYyB2b2lkIGNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogCiAgICAg
c3RhdGljIHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgaW50IGNhbGxiYWNrSWQsIERvY3VtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2Fu
Y2VsQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJ
ZCwgRG9jdW1lbnQmKTsKQEAgLTE1ODIsMTEgKzE1ODQsMTYgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wUHJvZmlsaW5nKFBhZ2UmIHBhZ2UsIEpTQzo6SlNHbG9i
YWxPYmoKIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlU3Rh
cnRSZWNvcmRpbmdDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCwgSlNDOjpK
U0dsb2JhbE9iamVjdCYgZXhlYywgSlNDOjpKU09iamVjdCogb3B0aW9ucykKIHsKLSAgICBGQVNU
X1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0
KGNvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCiAgICAgICAg
IGNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhc0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnRleHQsIGV4ZWMsIG9wdGlvbnMpOwogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmIGNvbnRleHQpCit7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0LmNhbnZhc0Jhc2UoKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpKQorICAgICAgICBjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhc0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnRleHQpOworfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlcXVlc3RBbmltYXRpb25GcmFtZShEb2N1bWVudCYgZG9j
dW1lbnQsIGludCBjYWxsYmFja0lkKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5E
Uyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA3NTY4MjkwOWU4YS4uMWQzOThjNTQ3Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuY3BwCkBAIC01NjgsNiArNTY4LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2Fu
dmFzQWdlbnQ6OmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjCiAgICAgc3RhcnRSZWNvcmRpbmcoKmluc3BlY3RvckNhbnZhcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWF0b3I6OkNvbnNvbGUsIFdURk1vdmUocmVjb3JkaW5n
T3B0aW9ucykpOwogfQogCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpjb25zb2xlU3RvcFJl
Y29yZGluZ0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQoreworICAgIGRp
ZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKGNvbnRleHQsIHRydWUpOworfQorCiAjaWYgRU5B
QkxFKFdFQkdMKQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkRW5hYmxlRXh0ZW5zaW9u
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDI4M2VmZGFkZDA5Li5mZjlhNTMzZTA0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvcmRDYW52YXNB
Y3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKICAgICB2b2lk
IGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBi
b29sIGZvcmNlRGlzcGF0Y2ggPSBmYWxzZSk7CiAgICAgdm9pZCBjb25zb2xlU3RhcnRSZWNvcmRp
bmdDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTT2JqZWN0KiBvcHRpb25zKTsKKyAgICB2b2lkIGNvbnNvbGVTdG9wUmVjb3JkaW5nQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgdm9p
ZCBkaWRFbmFibGVFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgZGlkQ3JlYXRlV2ViR0xQcm9ncmFtKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UmLCBXZWJHTFByb2dyYW0mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBlOWQzNTFiMGM1My4uMzI5OTRh
MzA3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvV2ViQ29u
c29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL1dlYkNv
bnNvbGVBZ2VudC5jcHAKQEAgLTUyLDkgKzUyLDYgQEAgV2ViQ29uc29sZUFnZW50Ojp+V2ViQ29u
c29sZUFnZW50KCkgPSBkZWZhdWx0OwogCiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6ZnJhbWVXaW5k
b3dEaXNjYXJkZWQoRE9NV2luZG93KiB3aW5kb3cpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbV9jb25zb2xl
TWVzc2FnZXMpIHsKICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdCA9IG1lc3NhZ2UtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBpZiAoIWxleGljYWxHbG9i
YWxPYmplY3QpCkBAIC02OSw5ICs2Niw2IEBAIHZvaWQgV2ViQ29uc29sZUFnZW50OjpmcmFtZVdp
bmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKIAogdm9pZCBXZWJDb25zb2xlQWdlbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+
PSA0MDApIHsKICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJGYWlsZWQgdG8g
bG9hZCByZXNvdXJjZTogdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBvZiAiLCBy
ZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCAiICgiLCByZXNwb25zZS5odHRwU3RhdHVzVGV4dCgp
LCAnKScpOwogICAgICAgICBhZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29uc29sZU1l
c3NhZ2U+KE1lc3NhZ2VTb3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VUeXBlOjpMb2csIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIG1lc3NhZ2UsIHJlc3BvbnNlLnVybCgpLnN0cmluZygpLCAwLCAwLCBudWxs
cHRyLCByZXF1ZXN0SWRlbnRpZmllcikpOwpAQCAtODAsOSArNzQsNiBAQCB2b2lkIFdlYkNvbnNv
bGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZp
ZXIsIGNvbnN0CiAKIHZvaWQgV2ViQ29uc29sZUFnZW50OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25l
ZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
LSAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCku
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICAvLyBSZXBv
cnQgZmFpbHVyZXMgb25seS4KICAgICBpZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmNwcAppbmRl
eCA0MTAyM2Q5ODBkYi4uZjEzYTllZDBkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbnNvbGVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bnNvbGVDbGllbnQuY3BwCkBAIC0yNzIsNiArMjcyLDkgQEAgc3RhdGljIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQqIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQoSlNDOjpWTSYgdm0sIEpTQzo6SlNWYWx1
ZQogCiB2b2lkIFBhZ2VDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7
CisgICAgaWYgKExJS0VMWSghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMo
KSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChhdXRvKiB0YXJnZXQgPSBvYmplY3RBcmd1
bWVudEF0KGFyZ3VtZW50cywgMCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjYW52
YXNSZW5kZXJpbmdDb250ZXh0KGxleGljYWxHbG9iYWxPYmplY3QtPnZtKCksIHRhcmdldCkpCiAg
ICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVTdGFydFJlY29yZGlu
Z0NhbnZhcygqY29udGV4dCwgKmxleGljYWxHbG9iYWxPYmplY3QsIG9iamVjdEFyZ3VtZW50QXQo
YXJndW1lbnRzLCAxKSk7CkBAIC0yODAsOSArMjgzLDEyIEBAIHZvaWQgUGFnZUNvbnNvbGVDbGll
bnQ6OnJlY29yZChKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWY8
U2NyCiAKIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnJlY29yZEVuZChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFyZ3VtZW50
cykKIHsKKyAgICBpZiAoTElLRUxZKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kcygpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9IG9iamVj
dEFyZ3VtZW50QXQoYXJndW1lbnRzLCAwKSkgewogICAgICAgICBpZiAoYXV0byogY29udGV4dCA9
IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwgdGFyZ2V0
KSkKLSAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3Jk
aW5nQ2FudmFzRnJhbWUoKmNvbnRleHQsIHRydWUpOworICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhcygqY29udGV4dCk7CiAgICAg
fQogfQogCg==
</data>
<flag name="review"
          id="400713"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384926</attachid>
            <date>2019-12-05 11:35:38 -0800</date>
            <delta_ts>2019-12-06 15:20:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>204875.diff</filename>
            <type>text/plain</type>
            <size>27663</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRiYmZmYzQwYWYxLi40YzI4NDE4MTdlYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTktMTItMDUgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFk
ZCBjb21waWxlciBVTkxJS0VMWSBoaW50cyB3aGVuIGNoZWNraW5nIGlmIGRldmVsb3BlciBleHRy
YXMgYXJlIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vdmUgdGhlIGNoZWNrIGZvciB3aGV0aGVyIGRldmVsb3BlciBleHRyYXMgYXJlIGVu
YWJsZWQgZnJvbSB0aGUgYWdlbnQgdG8gdGhlIGNsaWVudCBzbyB0aGF0CisgICAgICAgIHdoZW4g
aW5zcGVjdGluZyBhIHdlYnBhZ2UsIHdlIGRvbid0IGNoZWNrIGZvciBpdCB0d2ljZSwgc2luY2Ug
YEluc3BlY3Rvckluc3RydW1lbnRhdGlvbmAKKyAgICAgICAgYWxyZWFkeSBjaGVja3MgZm9yIGl0
IHRvby4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRldmVsb3BlckV4
dHJhc0VuYWJsZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdGFydFRpbWluZyk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGltaW5nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb3VudCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnRSZXNldCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UpOgorCisgICAgICAgICog
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHA6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6bWVzc2FnZVdpdGhUeXBlQW5kTGV2
ZWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OmNv
dW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpj
b3VudFJlc2V0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50Ojpwcm9maWxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xl
Q2xpZW50Ojpwcm9maWxlRW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50Ojp0YWtlSGVhcFNuYXBzaG90KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lTG9nKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lU3RhbXApOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29yZCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpzY3JlZW5zaG90KToK
KwogMjAxOS0xMi0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIFB1dCBtb3JlIGNlbGxzIGludG8gSXNvU3Vic3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50LmNwcAppbmRleCAwMTFjZDcxYmJhNC4uZTBmMWNlODc2NjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudC5jcHAKQEAgLTY1LDYgKzY1LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUs
IE1lc3MKICAgICBpZiAoSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpsb2dUb1N5c3RlbUNv
bnNvbGUoKSkKICAgICAgICAgQ29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhB
cmd1bWVudHMoTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2ZWwsIGdsb2JhbE9i
amVjdCwgYXJndW1lbnRzLmNvcHlSZWYoKSk7CiAKKyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVB
Z2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAg
U3RyaW5nIG1lc3NhZ2U7CiAgICAgYXJndW1lbnRzLT5nZXRGaXJzdEFyZ3VtZW50QXNTdHJpbmco
bWVzc2FnZSk7CiAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVu
aXF1ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIFdURk1vdmUoYXJndW1lbnRzKSwgZ2xvYmFsT2JqZWN0KSk7CkBAIC03Nywx
NyArODAsMjMgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6Om1lc3NhZ2VXaXRo
VHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3MKIAogdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6OmNvdW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fY29uc29sZUFn
ZW50LT5jb3VudChnbG9iYWxPYmplY3QsIGxhYmVsKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVj
dENvbnNvbGVDbGllbnQ6OmNvdW50UmVzZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKKyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2VudC0+
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb25z
b2xlQWdlbnQtPmNvdW50UmVzZXQoZ2xvYmFsT2JqZWN0LCBsYWJlbCk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmIHRpdGxlKQogewotICAgIGlmICghbV9jb25zb2xlQWdlbnQtPmVuYWJsZWQo
KSkKKyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2VudC0+ZW5hYmxlZCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgLy8gQWxsb3cgZHVwbGljYXRlIHVubmFtZWQgcHJvZmlsZXMuIERpc2Fs
bG93IGR1cGxpY2F0ZSBuYW1lZCBwcm9maWxlcy4KQEAgLTEwOCw3ICsxMTcsNyBAQCB2b2lkIEpT
R2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiB0aQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cHJv
ZmlsZUVuZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKLSAg
ICBpZiAoIW1fY29uc29sZUFnZW50LT5lbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghbV9jb25z
b2xlQWdlbnQtPmVuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFN0b3AgcHJv
ZmlsZXMgaW4gcmV2ZXJzZSBvcmRlci4gSWYgdGhlIHRpdGxlIGlzIGVtcHR5LCB0aGVuIHN0b3Ag
dGhlIGxhc3QgcHJvZmlsZS4KQEAgLTE1NSwzNSArMTY0LDY1IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3RDb25zb2xlQ2xpZW50OjpzdG9wQ29uc29sZVByb2ZpbGUoKQogCiB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6dGFrZUhlYXBTbmFwc2hvdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKKyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2VudC0+
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9jb25z
b2xlQWdlbnQtPnRha2VIZWFwU25hcHNob3QodGl0bGUpOwogfQogCiB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6dGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTdHJpbmcmIGxhYmVsKQogeworICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5kZXZl
bG9wZXJFeHRyYXNFbmFibGVkKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnNvbGVB
Z2VudC0+c3RhcnRUaW1pbmcoZ2xvYmFsT2JqZWN0LCBsYWJlbCk7CiB9CiAKIHZvaWQgSlNHbG9i
YWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lTG9nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFN0cmluZyYgbGFiZWwsIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYgYXJndW1lbnRz
KQogeworICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5kZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBtX2NvbnNvbGVBZ2VudC0+bG9nVGltaW5n
KGdsb2JhbE9iamVjdCwgbGFiZWwsIFdURk1vdmUoYXJndW1lbnRzKSk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp0aW1lRW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFN0cmluZyYgbGFiZWwpCiB7CisgICAgaWYgKExJS0VMWSghbV9jb25zb2xl
QWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fY29uc29sZUFnZW50LT5zdG9wVGltaW5nKGdsb2JhbE9iamVjdCwgbGFiZWwpOwogfQogCiB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKIHsKLSAgICAvLyBGSVhNRTogSlNDb250ZXh0IGlu
c3BlY3Rpb24gbmVlZHMgYSB0aW1lbGluZS4KKyAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2Vu
dC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgd2Fy
blVuaW1wbGVtZW50ZWQoImNvbnNvbGUudGltZVN0YW1wIl9zKTsKIH0KIAotdm9pZCBKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29yZChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRB
cmd1bWVudHM+JiYpIHsgfQotdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29y
ZEVuZChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpIHsgfQordm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29yZChKU0dsb2JhbE9iamVjdCosIFJlZjxT
Y3JpcHRBcmd1bWVudHM+JiYpCit7CisgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdhcm5Vbmlt
cGxlbWVudGVkKCJjb25zb2xlLnJlY29yZCJfcyk7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1l
bnRzPiYmKQoreworICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpKQorICAgICAgICByZXR1cm47CisKKyAgICB3YXJuVW5pbXBsZW1lbnRlZCgi
Y29uc29sZS5yZWNvcmRFbmQiX3MpOworfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNs
aWVudDo6c2NyZWVuc2hvdChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYp
CiB7CisgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xl
LnNjcmVlbnNob3QiX3MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRl
eCBlMThiODY1MmNkNi4uMjY4MTRmZTc4MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmNwcApAQCAtMTA2LDYgKzEwNiwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y2xl
YXJNZXNzYWdlcyhFcnJvclN0cmluZyYpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5t
ZXNzYWdlc0NsZWFyZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmRldmVs
b3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKTsK
K30KKwogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc2V0KCkKIHsKICAgICBFcnJvclN0
cmluZyBpZ25vcmVkOwpAQCAtMTE3LDkgKzEyMiw2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjpyZXNldCgpCiAKIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9D
b25zb2xlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKIHsKLSAgICBp
ZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAobWVzc2FnZS0+
dHlwZSgpID09IE1lc3NhZ2VUeXBlOjpDbGVhcikgewogICAgICAgICBFcnJvclN0cmluZyBpZ25v
cmVkOwogICAgICAgICBjbGVhck1lc3NhZ2VzKGlnbm9yZWQpOwpAQCAtMTMwLDkgKzEzMiw2IEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKHN0ZDo6dW5p
cXVlX3B0cjxDb25zb2xlTWVzc2FnZT4KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0
YXJ0VGltaW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5n
JiBsYWJlbCkKIHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVu
dmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBBU1NFUlQoIWxhYmVsLmlzTnVsbCgpKTsKICAgICBpZiAobGFiZWwuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE0OCw5ICsxNDcsNiBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVB
Z2VudDo6c3RhcnRUaW1pbmcoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dAogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6bG9nVGltaW5nKEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgUmVmPFNjcmlwdEFyZ3Vt
ZW50cz4mJiBhcmd1bWVudHMpCiB7Ci0gICAgaWYgKCFtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgQVNTRVJUKCFsYWJlbC5pc051bGwoKSk7CiAgICAgaWYgKGxhYmVsLmlz
TnVsbCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNzMsOSArMTY5LDYgQEAgdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmxvZ1RpbWluZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IFMKIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnN0b3BUaW1pbmcoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewot
ICAgIGlmICghbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIEFTU0VSVCgh
bGFiZWwuaXNOdWxsKCkpOwogICAgIGlmIChsYWJlbC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjAwLDkgKzE5Myw2IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpzdG9wVGlt
aW5nKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QKIAogdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSkK
IHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50
KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBpZiAo
IW1faGVhcEFnZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTIxNiw5ICsyMDYsNiBAQCB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6dGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmIHRp
dGxlKQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6Y291bnQoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGlmICghbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gcmVzdWx0ID0gbV9jb3Vu
dHMuYWRkKGxhYmVsLCAxKTsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICBy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IDE7CkBAIC0yMzEsOSArMjE4LDYgQEAgdm9pZCBJbnNw
ZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW4KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvdW50UmVzZXQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIGxhYmVsKQog
ewotICAgIGlmICghbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGF1dG8g
aXQgPSBtX2NvdW50cy5maW5kKGxhYmVsKTsKICAgICBpZiAoaXQgPT0gbV9jb3VudHMuZW5kKCkp
IHsKICAgICAgICAgLy8gRklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxv
Y2FsaXphdGlvbj8KQEAgLTI1Niw5ICsyNDAsNiBAQCBzdGF0aWMgYm9vbCBpc0dyb3VwTWVzc2Fn
ZShNZXNzYWdlVHlwZSB0eXBlKQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29u
c29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2Fn
ZSkKIHsKLSAgICBpZiAoIW1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25t
ZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBB
U1NFUlRfQVJHKGNvbnNvbGVNZXNzYWdlLCBjb25zb2xlTWVzc2FnZSk7CiAKICAgICBDb25zb2xl
TWVzc2FnZSogcHJldmlvdXNNZXNzYWdlID0gbV9jb25zb2xlTWVzc2FnZXMuaXNFbXB0eSgpID8g
bnVsbHB0ciA6IG1fY29uc29sZU1lc3NhZ2VzLmxhc3QoKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKaW5kZXggMGQxMDYwOTdlYjIuLmY4YmEyZjIyMWJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaApAQCAtNzAsNiArNzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJ
bnNwZWN0b3JIZWFwQWdlbnQoSW5zcGVjdG9ySGVhcEFnZW50KiBhZ2VudCkgeyBtX2hlYXBBZ2Vu
dCA9IGFnZW50OyB9CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWQ7IH0KKyAgICBib29sIGRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdDsKICAgICB2b2lk
IHJlc2V0KCk7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoc3RkOjp1bmlxdWVfcHRy
PENvbnNvbGVNZXNzYWdlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMxYTdkZDA1ZmIuLmRiYWU1ZjM5YTNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMTItMDUgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBjb21waWxl
ciBVTkxJS0VMWSBoaW50cyB3aGVuIGNoZWNraW5nIGlmIGRldmVsb3BlciBleHRyYXMgYXJlIGVu
YWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NDg3NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlU3RhcnRSZWNvcmRpbmdDYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlU3RvcFJl
Y29yZGluZ0NhbnZhcyk6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21t
aXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6Y29uc29sZUNvdW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2dDb25zb2xl
VGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnN0b3BDb25zb2xlVGltaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzSW1wbCk6IEFkZGVkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29uc29sZUFnZW50OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgUmVt
b3ZlIHRoZSByZWR1bmRhbnQgY2hlY2sgZm9yIHdoZXRoZXIgZGV2ZWxvcGVyIGV4dHJhcyBhcmUg
ZW5hYmxlZCBzaW5jZSBpdCdzIGFscmVhZHkKKyAgICAgICAgY2hlY2tlZCBieSBgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uYC4KKworICAgICAgICAqIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNvbnNvbGVDbGllbnQ6OnJlY29yZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlQ29uc29sZUNsaWVudDo6cmVjb3JkRW5kKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6Y29uc29sZVN0b3BSZWNvcmRpbmdDYW52YXMpOiBBZGRlZC4KKyAg
ICAgICAgQWRkIGNoZWNrcyBmb3IgYEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRl
bmRzKClgIHRvIGF2b2lkIGRvaW5nIGV4dHJhIHdvcmsgd2hlbiBXZWIKKyAgICAgICAgSW5zcGVj
dG9yIGlzbid0IG9wZW4uCisKIDIwMTktMTItMDQgIExvdWllIExpdm9uLUJlbWVsICA8bGxpdm9u
YmVtZWxAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBleGNsdXNpb24gcnVsZSBmb3IgdGV4dCBt
YW5pcHVsYXRpb24gU1BJIHRvIGV4Y2x1ZGUgYmFzZWQgb24gZWxlbWVudCBjbGFzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cAppbmRleCBjYjZlZDlmNmM4NC4uYjU2MWQwMTQxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0yMjIsNyAr
MjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50RGV0YWNoZWRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBET01XaW5kb3cqIHdpbmRvdykKIHsKLSAgICBpZiAoIWluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFi
bGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMud2ViQ29uc29sZUFnZW50KCkpCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1
bWVudGluZ0EKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCiB7Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50
KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3
b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQpA
QCAtNjE1LDcgKzYxNSw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5p
c2hMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
dExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBpZiAo
IWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0
b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCkBAIC02ODAsNyArNjgwLDcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJgogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgRnJhbWUmIGZyYW1lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewotICAgIGlmICgh
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJh
c0VuYWJsZWQoKSkKKyAgICBpZiAoTElLRUxZKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFmcmFtZS5wYWdlKCkpCkBAIC04MjgsNyArODI4LDcgQEAgc3RhdGljIGJv
b2wgaXNDb25zb2xlQXNzZXJ0TWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSkKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0Nv
bnNvbGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHN0ZDo6
dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4gbWVzc2FnZSkKIHsKLSAgICBpZiAoIWluc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVk
KCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IE1lc3NhZ2VTb3VyY2Ugc291cmNlID0gbWVzc2FnZS0+c291cmNlKCk7CkBAIC04NDYsMTIgKzg0
NiwxOCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29s
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdAogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZUNvdW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKKyAgICBpZiAoTElLRUxZKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmly
b25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29s
ZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+Y291bnQoc3RhdGUsIGxhYmVsKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudFJlc2V0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKKyAgICBpZiAoTElLRUxZKCFpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGF1dG8qIGNvbnNvbGVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVB
Z2VudC0+Y291bnRSZXNldChzdGF0ZSwgbGFiZWwpOwogfQpAQCAtODY0LDcgKzg3MCw3IEBAIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0YWtlSGVhcFNuYXBzaG90SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpz
dGFydENvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIEZyYW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3Ry
aW5nJiBsYWJlbCkKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0Vu
YWJsZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
QEAgLTg3NSw3ICs4ODEsNyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRD
b25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cgogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6c3RhcnRDb25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBj
b25zdCBTdHJpbmcmIGxhYmVsKQogewotICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKKyAgICBpZiAoTElL
RUxZKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIGNvbnNv
bGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViQ29uc29sZUFnZW50KCkpCkBAIC04ODQs
NyArODkwLDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRp
bWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHIKIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmxvZ0NvbnNvbGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJiBhcmd1bWVudHMpCiB7
Ci0gICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKQorICAgIGlmIChMSUtFTFkoIWluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKQEAgLTg5Myw3ICs4OTksNyBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6bG9nQ29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6c3RvcENvbnNv
bGVUaW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lJiBmcmFtZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJl
bCkKIHsKLSAgICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLndlYkNvbnNvbGVBZ2VudCgpKQpAQCAtOTA0LDcgKzkxMCw3IEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9w
Q29uc29sZVRpbWluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgY29uc3QgU3RyaW5nJiBsYWJlbCkKIHsKLSAg
ICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpCisgICAgaWYgKExJS0VMWSghaW5zdHJ1bWVudGluZ0FnZW50cy5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChhdXRvKiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLndlYkNvbnNvbGVBZ2VudCgpKQpAQCAtOTM4LDYgKzk0NCwxMiBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzSW1wbChJbnN0cnVt
ZW50aW5nQWdlbgogICAgICAgICBjYW52YXNBZ2VudC0+Y29uc29sZVN0YXJ0UmVjb3JkaW5nQ2Fu
dmFzKGNvbnRleHQsIGV4ZWMsIG9wdGlvbnMpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6Y29uc29sZVN0b3BSZWNvcmRpbmdDYW52YXNJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgaWYgKGF1dG8qIGNhbnZhc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JDYW52YXNBZ2VudCgpKQorICAgICAgICBjYW52YXNBZ2VudC0+Y29uc29sZVN0b3BSZWNv
cmRpbmdDYW52YXMoY29udGV4dCk7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRPcGVuRGF0YWJhc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBpZiAoYXV0byogZGF0YWJhc2VBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRGF0YWJhc2VBZ2VudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmlu
ZGV4IDY2OTg0MzFmMzE2Li5kYmY4MjIwNWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMjU0LDYgKzI1NCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZyhQYWdlJiwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyB2b2lkIHN0b3BQ
cm9maWxpbmcoUGFnZSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRpdGxl
KTsKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlU3RhcnRSZWNvcmRpbmdDYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTT2JqZWN0KiBvcHRp
b25zKTsKKyAgICBzdGF0aWMgdm9pZCBjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhcyhDYW52YXNS
ZW5kZXJpbmdDb250ZXh0Jik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9u
RnJhbWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJZCk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2Fu
Y2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJZCk7CkBAIC00NDksNiAr
NDUwLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzdGFydFByb2ZpbGluZ0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKTsKICAgICBzdGF0aWMgdm9pZCBzdG9wUHJvZmlsaW5nSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0
YXRpYyB2b2lkIGNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhc0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlND
OjpKU09iamVjdCogb3B0aW9ucyk7CisgICAgc3RhdGljIHZvaWQgY29uc29sZVN0b3BSZWNvcmRp
bmdDYW52YXNJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
Jik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGlu
dCBjYWxsYmFja0lkLCBEb2N1bWVudCYpOwpAQCAtMTU4MiwxMSArMTU4NCwxNiBAQCBpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BQcm9maWxpbmcoUGFnZSYgcGFnZSwg
SlNDOjpKU0dsb2JhbE9iagogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmNvbnNvbGVTdGFydFJlY29yZGluZ0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250
ZXh0LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBleGVjLCBKU0M6OkpTT2JqZWN0KiBvcHRpb25zKQog
ewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckNvbnRleHQoY29udGV4dC5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKICAgICAgICAgY29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgY29udGV4dCwgZXhlYywgb3B0aW9ucyk7CiB9CiAKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVN0b3BSZWNvcmRpbmdDYW52YXMoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQuY2FudmFzQmFzZSgp
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIGNvbnNvbGVTdG9wUmVjb3JkaW5n
Q2FudmFzSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY29udGV4dCk7Cit9CisKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKERv
Y3VtZW50JiBkb2N1bWVudCwgaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwCmluZGV4IDc1NjgyOTA5ZThhLi4x
ZDM5OGM1NDdjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTU2OCw2ICs1NjgsMTEgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6Y29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzKENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGMKICAgICBzdGFydFJlY29yZGluZygqaW5zcGVjdG9yQ2FudmFzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvcjo6Q29uc29sZSwgV1RGTW92
ZShyZWNvcmRpbmdPcHRpb25zKSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNv
bnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQp
Cit7CisgICAgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoY29udGV4dCwgdHJ1ZSk7Cit9
CisKICNpZiBFTkFCTEUoV0VCR0wpCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRFbmFi
bGVFeHRlbnNpb24oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggMjgzZWZkYWRkMDkuLmZmOWE1MzNl
MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
Y29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwg
c3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0p
OwogICAgIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsKICAgICB2b2lkIGNvbnNvbGVT
dGFydFJlY29yZGluZ0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNPYmplY3QqIG9wdGlvbnMpOworICAgIHZvaWQgY29uc29sZVN0b3BS
ZWNvcmRpbmdDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogI2lmIEVOQUJMRShXRUJH
TCkKICAgICB2b2lkIGRpZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
JiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRDcmVhdGVXZWJHTFByb2dyYW0oV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZSYsIFdlYkdMUHJvZ3JhbSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IGU5ZDM1MWIw
YzUzLi4zMjk5NGEzMDdkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtNTIsOSArNTIsNiBAQCBXZWJDb25zb2xlQWdl
bnQ6On5XZWJDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHZvaWQgV2ViQ29uc29sZUFnZW50
OjpmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqIHdpbmRvdykKIHsKLSAgICBpZiAoIW1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBmb3IgKGF1dG8mIG1lc3NhZ2Ug
OiBtX2NvbnNvbGVNZXNzYWdlcykgewogICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0ID0gbWVzc2FnZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgIGlmICgh
bGV4aWNhbEdsb2JhbE9iamVjdCkKQEAgLTY5LDkgKzY2LDYgQEAgdm9pZCBXZWJDb25zb2xlQWdl
bnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyogd2luZG93KQogCiB2b2lkIFdlYkNv
bnNvbGVBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIGlmICghbV9p
bmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChyZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID49IDQwMCkgewogICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmco
IkZhaWxlZCB0byBsb2FkIHJlc291cmNlOiB0aGUgc2VydmVyIHJlc3BvbmRlZCB3aXRoIGEgc3Rh
dHVzIG9mICIsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksICIgKCIsIHJlc3BvbnNlLmh0dHBT
dGF0dXNUZXh0KCksICcpJyk7CiAgICAgICAgIGFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZVR5cGU6Okxv
ZywgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgcmVzcG9uc2UudXJsKCkuc3RyaW5nKCks
IDAsIDAsIG51bGxwdHIsIHJlcXVlc3RJZGVudGlmaWVyKSk7CkBAIC04MCw5ICs3NCw2IEBAIHZv
aWQgV2ViQ29uc29sZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyByZXF1
ZXN0SWRlbnRpZmllciwgY29uc3QKIAogdm9pZCBXZWJDb25zb2xlQWdlbnQ6OmRpZEZhaWxMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIGlmICghbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52
aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQog
ICAgIC8vIFJlcG9ydCBmYWlsdXJlcyBvbmx5LgogICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlv
bigpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuY3BwCmluZGV4IDQxMDIzZDk4MGRiLi5mMTNhOWVkMGQyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uc29sZUNsaWVudC5jcHAKQEAgLTI3Miw2ICsyNzIsOSBAQCBzdGF0aWMgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCogY2FudmFzUmVuZGVyaW5nQ29udGV4dChKU0M6OlZNJiB2bSwg
SlNDOjpKU1ZhbHVlCiAKIHZvaWQgUGFnZUNvbnNvbGVDbGllbnQ6OnJlY29yZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBSZWY8U2NyaXB0QXJndW1lbnRzPiYmIGFy
Z3VtZW50cykKIHsKKyAgICBpZiAoTElLRUxZKCFJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhh
c0Zyb250ZW5kcygpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGF1dG8qIHRhcmdldCA9
IG9iamVjdEFyZ3VtZW50QXQoYXJndW1lbnRzLCAwKSkgewogICAgICAgICBpZiAoYXV0byogY29u
dGV4dCA9IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQobGV4aWNhbEdsb2JhbE9iamVjdC0+dm0oKSwg
dGFyZ2V0KSkKICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29uc29sZVN0
YXJ0UmVjb3JkaW5nQ2FudmFzKCpjb250ZXh0LCAqbGV4aWNhbEdsb2JhbE9iamVjdCwgb2JqZWN0
QXJndW1lbnRBdChhcmd1bWVudHMsIDEpKTsKQEAgLTI4MCw5ICsyODMsMTIgQEAgdm9pZCBQYWdl
Q29uc29sZUNsaWVudDo6cmVjb3JkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QsIFJlZjxTY3IKIAogdm9pZCBQYWdlQ29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZjxTY3JpcHRBcmd1bWVudHM+
JiYgYXJndW1lbnRzKQogeworICAgIGlmIChMSUtFTFkoIUluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6aGFzRnJvbnRlbmRzKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoYXV0byogdGFy
Z2V0ID0gb2JqZWN0QXJndW1lbnRBdChhcmd1bWVudHMsIDApKSB7CiAgICAgICAgIGlmIChhdXRv
KiBjb250ZXh0ID0gY2FudmFzUmVuZGVyaW5nQ29udGV4dChsZXhpY2FsR2xvYmFsT2JqZWN0LT52
bSgpLCB0YXJnZXQpKQotICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqY29udGV4dCwgdHJ1ZSk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFzKCpjb250
ZXh0KTsKICAgICB9CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>