<?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>52431</bug_id>
          
          <creation_ts>2011-01-14 01:12:27 -0800</creation_ts>
          <short_desc>REGRESSION(r75774): gtk builds were broken (Requested by loislo2 on #webkit).</short_desc>
          <delta_ts>2011-01-14 02:55:24 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          <blocked>52294</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>loislo</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>334166</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 01:12:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/75774 broke the build:
gtk builds were broken (Requested by loislo2 on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334167</commentid>
    <comment_count>1</comment_count>
      <attachid>78905</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-14 01:12:49 -0800</bug_when>
    <thetext>Created attachment 78905
ROLLOUT of r75774

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334173</commentid>
    <comment_count>2</comment_count>
      <attachid>78905</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-01-14 01:22:00 -0800</bug_when>
    <thetext>Comment on attachment 78905
ROLLOUT of r75774

Committed r75776
	M	Source/WebCore/WebCore.pro
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/WebCore.vcproj/WebCore.vcproj
	M	Source/WebCore/WebCore.gypi
	D	Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
	D	Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
	M	Source/WebCore/inspector/CodeGeneratorInspector.pm
	M	Source/WebCore/inspector/InspectorController.cpp
	M	Source/WebCore/inspector/Inspector.idl
	M	Source/WebCore/inspector/InspectorController.h
	M	Source/WebCore/inspector/InspectorInstrumentation.cpp
	M	Source/WebCore/inspector/InspectorDOMAgent.h
	M	Source/WebCore/inspector/InspectorDOMAgent.cpp
	M	Source/WebCore/CMakeLists.txt
	M	Source/WebCore/WebCore.xcodeproj/project.pbxproj
	M	Tools/ChangeLog
	M	Tools/Scripts/webkitpy/common/checkout/scm.py
W: -empty_dir: trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
W: -empty_dir: trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
r75776 = f2e57dc1db8f4223da5078fcd5788a61baeae3f1 (refs/remotes/trunk)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78905</attachid>
            <date>2011-01-14 01:12:49 -0800</date>
            <delta_ts>2011-01-14 01:22:00 -0800</delta_ts>
            <desc>ROLLOUT of r75774</desc>
            <filename>bug-52431-20110114091245.patch</filename>
            <type>text/plain</type>
            <size>56066</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzg1NDAwYWI2MzFiM2U1ZmM5NWI2MTlhNzhmOWNkMDZj
YzY2MzBlZS4uYzA0ZThhM2ZmOWQ3Y2I2NzMwNzAyOWIzZjgxZDdmYTJmYzRmZjgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTExNTIsNyArMTE1Miw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMK
ICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCiAgICAgaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBjODRhM2NmNGI5NmEzZGRlMTUyNzE1Yjg3ZTVhMWQ3NmJlZDIwYTNlLi5lODEy
M2IwMDQyMWU0ODMxNWNkZDJmNjJhNTljMDk4NzJhYjBlZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTcgQEAKKzIwMTEtMDEtMTQgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NTc3NC4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzU3NzQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNDMxCisKKyAgICAgICAgZ3RrIGJ1
aWxkcyB3ZXJlIGJyb2tlbiAoUmVxdWVzdGVkIGJ5IGxvaXNsbzIgb24gI3dlYmtpdCkuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGluc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVTdGlja3lCcmVha3BvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRFdmVudExp
c3RlbmVyQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpyZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyOjpoYXNFdmVudExpc3RlbmVyQnJlYWtwb2ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRYSFJCcmVha3BvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZVhIUkJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aGFzWEhSQnJlYWtwb2ludCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6c2hvdWxkQnJlYWtPbk5vZGVJbnNlcnRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNob3VsZEJyZWFrT25Ob2RlUmVtb3ZhbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlm
aWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGVzY3JpcHRp
b25Gb3JET01FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlk
SW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlk
UmVtb3ZlRE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFz
QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRl
U3VidHJlZUJyZWFrcG9pbnRzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERP
TU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1M
SHR0cFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQpOgorCiAyMDExLTAxLTEyICBJbHlhIFRp
a2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZ
dXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDU3MzIxMzU5YTRhYzU2ZjI2N2Ew
MzBmODhjNTRjYmNlYmZiMzhlOTUuLjU1NDc4NjM3Y2NkNmNjYWIwY2YxMDkyZTk5Mjg4OTEyMjA4
Yzk2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIwMDIsOCArMjAwMiw2IEBACiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5z
cGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oJywKLSAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwJywKLSAgICAgICAgICAg
ICdpbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JDbGllbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMWIyNGRiZmE4ZTBjOGUzY2JmZDM0NWQw
MWU0ZWI5MTNhYjM1ZTFlNS4uODE5ZDU2OTcxY2JlOGEzMGRiN2Y2NjM4YzRlODk2ZGY5ZGE4OTJh
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEwNDMsNyArMTA0Myw2IEBAIFNPVVJDRVMgKz0gXAogICAg
IGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmNwcCBcCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBcCkBAIC0xOTM2LDcgKzE5MzUsNiBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHQuaCBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggXAotICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGZkOTgzZGIyMDhlMDA3
YWUwMWViY2FmNmRiMDZhYmE0NTgzMjViZGUuLjQyMTc5MDgyNzA2MjY0MWYzNDkxODQyZjExNjBm
MDUwY2RhMWRlN2MgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC02NTAxMCwxNCArNjUwMTAsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxG
aWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQ
YXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIKLQkJCQk+
Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXElu
c3BlY3RvckNsaWVudC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDcxMzBhMzg1MjBhNmJm
M2QxYmQwNWUyMjc2MTI1NTQwNzIxNTI4ZTcuLmJjM2QwNGQ0MTY3NGIwM2JjM2E0M2I5ZWFjZmUz
NmUwNmEwZTlhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEyNjYsOCArMTI2Niw2IEBACiAJCTRGNzA3QTlBMTFFRjY3OTQw
MEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY3MDdBOTgxMUVGNjc5NDAwQUNEQTY5IC8q
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggKi87IH07CiAJCTRGQTNCOTBBMTI1Q0QxMjIw
MDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RkEzQjkwODEyNUNEMTIxMDAzMDBCQUQgLyogSW5zcGVjdG9y
U3RhdGUuY3BwICovOyB9OwogCQk0RkEzQjkwQjEyNUNEMTIyMDAzMDBCQUQgLyogSW5zcGVjdG9y
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRG
QTNCOTA5MTI1Q0QxMjIwMDMwMEJBRCAvKiBJbnNwZWN0b3JTdGF0ZS5oICovOyB9OwotCQk0RkMy
ODQyNDEyRERGMjdFMDBCRjQyRTQgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGQzI4NDIyMTJE
REYyN0UwMEJGNDJFNCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oICovOyB9Owot
CQk0RkMyODQyNTEyRERGMjdFMDBCRjQyRTQgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZD
Mjg0MjMxMkRERjI3RTAwQkY0MkU0IC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cCAqLzsgfTsKIAkJNEZEOEQwRjIxMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEOEQwRjAx
MTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuY3BwICovOyB9OwogCQk0RkQ4RDBGMzEx
OUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEZEOEQwRjExMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlw
dEdDRXZlbnQuaCAqLzsgfTsKIAkJNTEwMTg0NjkwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4
NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc2NDUsOCArNzY0Myw2IEBACiAJCTRGNzA3
QTk4MTFFRjY3OTQwMEFDREE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkEzQjkwODEyNUNEMTIxMDAzMDBCQUQg
LyogSW5zcGVjdG9yU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5zcGVjdG9yU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RkEz
QjkwOTEyNUNEMTIyMDAzMDBCQUQgLyogSW5zcGVjdG9yU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNEZDMjg0MjIxMkRERjI3RTAwQkY0MkU0IC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTRGQzI4
NDIzMTJEREYyN0UwMEJGNDJFNCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGRDhEMEYwMTE5
QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFBhZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyOTIxLDggKzEyOTE3LDYgQEAKIAkJCQk3QTU2M0Y5
NTEyREY1QzkxMDBGNDUzNkQgLyogSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMgKi8sCiAJCQkJQjg4
NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5j
cHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJCTRGQzI4NDIyMTJEREYyN0UwMEJGNDJFNCAvKiBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oICovLAotCQkJCTRGQzI4NDIzMTJEREYyN0UwMEJG
NDJFNCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgKi8sCiAJCQkJN0ExRjJC
NTExMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgKi8sCiAJCQkJMUM4MUI5
NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTFDODFCOTU3
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKQEAgLTIyMzI3
LDcgKzIyMzIxLDYgQEAKIAkJCQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzN0RGREIxMkRCQUZCODAwQTZCMjMzIC8qIERPTVVS
TC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzN0UwMDYxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9N
VVJMLmggaW4gSGVhZGVycyAqLywKLQkJCQk0RkMyODQyNDEyRERGMjdFMDBCRjQyRTQgLyogSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUwMTMsNyAr
MjUwMDYsNiBAQAogCQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdERkRBMTJEQkFGQjgwMEE2QjIzMyAvKiBET01VUkwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8qIEpTRE9N
VVJMLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTRGQzI4NDI1MTJEREYyN0UwMEJGNDJFNCAvKiBJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KaW5kZXgg
MzBjYzU2NTM4NTRjZjMwOWNkN2ZlMDk2MjNkNWM0YmNhZjk3ZmI3MC4uYjhhZWEwZTQxNDA1YWE3
YjdhZDk3ZTdmMGI1ZTY3MGVjMTU3NGRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTI1LDExICsyNSw2IEBAICR0eXBl
VHJhbnNmb3JteyJEZWJ1Z2dlciJ9ID0gewogICAgICJoZWFkZXIiID0+ICJJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgiLAogICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJv
bGxlci0+bV9kZWJ1Z2dlckFnZW50IiwKIH07Ci0kdHlwZVRyYW5zZm9ybXsiQnJvd3NlckRlYnVn
Z2VyIn0gPSB7Ci0gICAgImZvcndhcmQiID0+ICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dCIsCi0gICAgImhlYWRlciIgPT4gIkluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgiLAot
ICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1faW5zcGVjdG9yQ29udHJvbGxlci0+bV9icm93c2Vy
RGVidWdnZXJBZ2VudCIsCi19OwogJHR5cGVUcmFuc2Zvcm17IkRhdGFiYXNlIn0gPSB7CiAgICAg
ImZvcndhcmQiID0+ICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50IiwKICAgICAiaGVhZGVyIiA9PiAi
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKaW5kZXggZDNlNjI5NjBlODNkZjQyODQzYmZhYjcyN2JhYjVkZTRiNWY1MGNlOC4uODdi
MzhjMmM1OGZmNmYyNDUwYjc0NmU4NmU5NGFiZjgyNWNmNGEyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTIyMyw5ICsyMjMsNiBAQCBtb2R1bGUgY29yZSB7CiAK
ICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRl
bmQoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBk
aXNhYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwotCi0gICAgICAgIFtkb21haW49SW5z
cGVjdG9yXSB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKGluIE9iamVjdCBicmVha3BvaW50cyk7
Ci0KICAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGRlYnVnZ2VyV2FzRW5h
YmxlZCgpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgZGVidWdnZXJX
YXNEaXNhYmxlZCgpOwogCkBAIC0yNDAsMTIgKzIzNywxNiBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0QnJlYWtwb2ludChpbiBTdHJpbmcgc291cmNl
SUQsIGluIHVuc2lnbmVkIGludCBsaW5lTnVtYmVyLCBpbiBTdHJpbmcgY29uZGl0aW9uLCBpbiBi
b29sZWFuIGVuYWJsZWQsIG91dCBTdHJpbmcgYnJlYWtwb2ludElkLCBvdXQgdW5zaWduZWQgaW50
IGFjdHVhbExpbmVOdW1iZXIpOwogICAgICAgICBbZG9tYWluPURlYnVnZ2VyXSB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoaW4gU3RyaW5nIGJyZWFrcG9pbnRJZCk7CiAKLSAgICAgICAgW2RvbWFpbj1C
cm93c2VyRGVidWdnZXJdIHZvaWQgc2V0RE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4g
bG9uZyB0eXBlKTsKLSAgICAgICAgW2RvbWFpbj1Ccm93c2VyRGVidWdnZXJdIHZvaWQgcmVtb3Zl
RE9NQnJlYWtwb2ludChpbiBsb25nIG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsKLSAgICAgICAgW2Rv
bWFpbj1Ccm93c2VyRGVidWdnZXJdIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoaW4g
U3RyaW5nIGV2ZW50TmFtZSk7Ci0gICAgICAgIFtkb21haW49QnJvd3NlckRlYnVnZ2VyXSB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGluIFN0cmluZyBldmVudE5hbWUpOwotICAg
ICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRYSFJCcmVha3BvaW50KGluIFN0
cmluZyB1cmwpOwotICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCByZW1vdmVY
SFJCcmVha3BvaW50KGluIFN0cmluZyB1cmwpOworICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0g
dm9pZCBzZXRTdGlja3lCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOyAvLyBGSVhN
RTogTW92ZSB0byBuZXdseSBpbnRyb2R1Y2VkIEJyb3dzZXJEZWJ1Z2dlci4KKworICAgICAgICBb
ZG9tYWluPURPTV0gdm9pZCBzZXRET01CcmVha3BvaW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25n
IHR5cGUpOyAvLyBGSVhNRTogTW92ZSB0byBuZXdseSBpbnRyb2R1Y2VkIEJyb3dzZXJEZWJ1Z2dl
ci4KKyAgICAgICAgW2RvbWFpbj1ET01dIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChpbiBsb25n
IG5vZGVJZCwgaW4gbG9uZyB0eXBlKTsgLy8gRklYTUU6IE1vdmUgdG8gbmV3bHkgaW50cm9kdWNl
ZCBCcm93c2VyRGVidWdnZXIuCisKKyAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoaW4gU3RyaW5nIGV2ZW50TmFtZSk7IC8vIEZJWE1FOiBN
b3ZlIHRvIG5ld2x5IGludHJvZHVjZWQgQnJvd3NlckRlYnVnZ2VyLgorICAgICAgICBbZG9tYWlu
PUluc3BlY3Rvcl0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChpbiBTdHJpbmcg
ZXZlbnROYW1lKTsgLy8gRklYTUU6IE1vdmUgdG8gbmV3bHkgaW50cm9kdWNlZCBCcm93c2VyRGVi
dWdnZXIuCisKKyAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgc2V0WEhSQnJlYWtwb2lu
dChpbiBTdHJpbmcgdXJsKTsgLy8gRklYTUU6IE1vdmUgdG8gbmV3bHkgaW50cm9kdWNlZCBCcm93
c2VyRGVidWdnZXIuCisgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHJlbW92ZVhIUkJy
ZWFrcG9pbnQoaW4gU3RyaW5nIHVybCk7IC8vIEZJWE1FOiBNb3ZlIHRvIG5ld2x5IGludHJvZHVj
ZWQgQnJvd3NlckRlYnVnZ2VyLgogCiAgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc3Rl
cE92ZXIoKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBzdGVwSW50bygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMDE5Mjk3MDVk
NmZiZGNhNWQ0YTY4MmU2MjZjZjM3OWVjN2U1MmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQotCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250
cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKLQotbmFt
ZXNwYWNlIHsKLQotZW51bSBET01CcmVha3BvaW50VHlwZSB7Ci0gICAgU3VidHJlZU1vZGlmaWVk
ID0gMCwKLSAgICBBdHRyaWJ1dGVNb2RpZmllZCwKLSAgICBOb2RlUmVtb3ZlZCwKLSAgICBET01C
cmVha3BvaW50VHlwZXNDb3VudAotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRvbU5h
dGl2ZUJyZWFrcG9pbnRUeXBlID0gIkRPTSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZl
bnRMaXN0ZW5lck5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIkV2ZW50TGlzdGVuZXIiOwotc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIlhIUiI7Ci0KLWNv
bnN0IHVpbnQzMl90IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9ICgxIDw8IFN1
YnRyZWVNb2RpZmllZCk7Ci1jb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQg
PSAxNjsKLQotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50OjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyKQotICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCi0gICAgLCBt
X2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlVUkwoZmFsc2UpCi17Ci19Ci0KLUluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoKQotewot
fQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3Mo
KQotewotICAgIG1fYnJlYWtwb2ludHMuY2xlYXIoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpCi17Ci0gICAgbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMuYWRkKGV2ZW50
TmFtZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQotewotICAgIG1f
ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLnJlbW92ZShldmVudE5hbWUpOwotfQotCi12b2lkIElu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUp
Ci17Ci0gICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7Ci0gICAgICAgIHVpbnQzMl90IG1h
c2sgPSBtX2JyZWFrcG9pbnRzLmdldChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2Rl
KG5vZGUpKTsKLSAgICAgICAgdWludDMyX3QgaW5oZXJpdGFibGVUeXBlc01hc2sgPSAobWFzayB8
IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkgJiBpbmhlcml0YWJsZURP
TUJyZWFrcG9pbnRUeXBlc01hc2s7Ci0gICAgICAgIGlmIChpbmhlcml0YWJsZVR5cGVzTWFzaykK
LSAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCBpbmhlcml0YWJsZVR5
cGVzTWFzaywgdHJ1ZSk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1fYnJlYWtw
b2ludHMuc2l6ZSgpKSB7Ci0gICAgICAgIC8vIFJlbW92ZSBzdWJ0cmVlIGJyZWFrcG9pbnRzLgot
ICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKLSAgICAgICAgVmVjdG9yPE5vZGUq
PiBzdGFjaygxLCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKLSAg
ICAgICAgZG8gewotICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YWNrLmxhc3QoKTsKLSAgICAg
ICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5v
ZGUpOwotICAgICAgICAgICAgc3RhY2suYXBwZW5kKEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZp
cnN0Q2hpbGQobm9kZSkpOwotICAgICAgICAgICAgc3RhY2suYXBwZW5kKEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lck5leHRTaWJsaW5nKG5vZGUpKTsKLSAgICAgICAgfSB3aGlsZSAoIXN0YWNrLmlz
RW1wdHkoKSk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCi17Ci0gICAgTm9kZSog
bm9kZSA9IG1fY29udHJvbGxlci0+bV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAg
aWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1aW50MzJfdCByb290Qml0ID0gMSA8
PCB0eXBlOwotICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2ludHMuZ2V0KG5v
ZGUpIHwgcm9vdEJpdCk7Ci0gICAgaWYgKHJvb3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9p
bnRUeXBlc01hc2spIHsKLSAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7Ci0gICAgfQotfQotCi12b2lkIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlk
LCBsb25nIHR5cGUpCi17Ci0gICAgTm9kZSogbm9kZSA9IG1fY29udHJvbGxlci0+bV9kb21BZ2Vu
dC0+bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0eXBlOwotICAgIHVpbnQzMl90IG1hc2sgPSBt
X2JyZWFrcG9pbnRzLmdldChub2RlKSAmIH5yb290Qml0OwotICAgIGlmIChtYXNrKQotICAgICAg
ICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnJl
YWtwb2ludHMucmVtb3ZlKG5vZGUpOwotCi0gICAgaWYgKChyb290Qml0ICYgaW5oZXJpdGFibGVE
T01CcmVha3BvaW50VHlwZXNNYXNrKSAmJiAhKG1hc2sgJiAocm9vdEJpdCA8PCBkb21CcmVha3Bv
aW50RGVyaXZlZFR5cGVTaGlmdCkpKSB7Ci0gICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhjaGlsZCkpCi0gICAgICAgICAgICB1cGRh
dGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIHJvb3RCaXQsIGZhbHNlKTsKLSAgICB9Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKE5v
ZGUqLCBOb2RlKiBwYXJlbnQpCi17Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCA9IG1fY29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwotICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGhhc0JyZWFrcG9pbnQo
cGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2Ny
aXB0aW9uRm9yRE9NRXZlbnQocGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQsIHRydWUsIGV2ZW50RGF0
YS5nZXQoKSk7Ci0gICAgICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlwZSIs
IGRvbU5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKLSAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJlbGVh
c2UoKSk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3
aWxsUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQotewotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2NvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsK
LSAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChoYXNC
cmVha3BvaW50KG5vZGUsIE5vZGVSZW1vdmVkKSkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBk
ZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRh
LmdldCgpKTsKLSAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwg
ZG9tTmF0aXZlQnJlYWtwb2ludFR5cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1By
b2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFz
ZSgpKTsKLSAgICB9IGVsc2UgaWYgKGhhc0JyZWFrcG9pbnQoSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVyUGFyZW50Tm9kZShub2RlKSwgU3VidHJlZU1vZGlmaWVkKSkgewotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFs
c2UsIGV2ZW50RGF0YS5nZXQoKSk7Ci0gICAgICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVh
a3BvaW50VHlwZSIsIGRvbU5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKLSAgICAgICAgZGVidWdnZXJB
Z2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZl
bnREYXRhLnJlbGVhc2UoKSk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQotewotICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2NvbnRyb2xsZXItPm1fZGVi
dWdnZXJBZ2VudC5nZXQoKTsKLSAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChoYXNCcmVha3BvaW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkKSkg
ewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KGVsZW1lbnQs
IEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAgZXZl
bnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZG9tTmF0aXZlQnJlYWtwb2ludFR5
cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2lu
dERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLSAgICB9Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSogdGFyZ2V0LCBsb25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVj
dG9yT2JqZWN0KiBkZXNjcmlwdGlvbikKLXsKLSAgICBBU1NFUlQoaGFzQnJlYWtwb2ludCh0YXJn
ZXQsIGJyZWFrcG9pbnRUeXBlKSk7Ci0KLSAgICBOb2RlKiBicmVha3BvaW50T3duZXIgPSB0YXJn
ZXQ7Ci0gICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtw
b2ludFR5cGVzTWFzaykgewotICAgICAgICAvLyBGb3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0
eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQg
b3ducyBhIGJyZWFrcG9pbnQuCi0gICAgICAgIC8vIFRhcmdldCBub2RlIG1heSBiZSB1bmtub3du
IHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3QuCi0gICAgICAgIGxvbmcg
dGFyZ2V0Tm9kZUlkID0gbV9jb250cm9sbGVyLT5tX2RvbUFnZW50LT5wdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKHRhcmdldCk7Ci0gICAgICAgIEFTU0VSVCh0YXJnZXROb2RlSWQpOwotICAgICAgICBk
ZXNjcmlwdGlvbi0+c2V0TnVtYmVyKCJ0YXJnZXROb2RlSWQiLCB0YXJnZXROb2RlSWQpOwotCi0g
ICAgICAgIC8vIEZpbmQgYnJlYWtwb2ludCBvd25lciBub2RlLgotICAgICAgICBpZiAoIWluc2Vy
dGlvbikKLSAgICAgICAgICAgIGJyZWFrcG9pbnRPd25lciA9IEluc3BlY3RvckRPTUFnZW50Ojpp
bm5lclBhcmVudE5vZGUodGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25lcik7
Ci0gICAgICAgIHdoaWxlICghKG1fYnJlYWtwb2ludHMuZ2V0KGJyZWFrcG9pbnRPd25lcikgJiAo
MSA8PCBicmVha3BvaW50VHlwZSkpKSB7Ci0gICAgICAgICAgICBicmVha3BvaW50T3duZXIgPSBJ
bnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKGJyZWFrcG9pbnRPd25lcik7Ci0gICAg
ICAgICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChicmVha3BvaW50VHlwZSA9PSBTdWJ0cmVlTW9kaWZpZWQpCi0gICAgICAgICAgICBkZXNjcmlw
dGlvbi0+c2V0Qm9vbGVhbigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKLSAgICB9Ci0KLSAgICBs
b25nIGJyZWFrcG9pbnRPd25lck5vZGVJZCA9IG1fY29udHJvbGxlci0+bV9kb21BZ2VudC0+cHVz
aE5vZGVQYXRoVG9Gcm9udGVuZChicmVha3BvaW50T3duZXIpOwotICAgIEFTU0VSVChicmVha3Bv
aW50T3duZXJOb2RlSWQpOwotICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoIm5vZGVJZCIsIGJy
ZWFrcG9pbnRPd25lck5vZGVJZCk7Ci0gICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigidHlwZSIs
IGJyZWFrcG9pbnRUeXBlKTsKLX0KLQotYm9vbCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDo6aGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpCi17Ci0gICAgdWludDMyX3Qg
cm9vdEJpdCA9IDEgPDwgdHlwZTsKLSAgICB1aW50MzJfdCBkZXJpdmVkQml0ID0gcm9vdEJpdCA8
PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAgICByZXR1cm4gbV9icmVha3BvaW50
cy5nZXQobm9kZSkgJiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpOwotfQotCi12b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSogbm9k
ZSwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KQotewotICAgIHVpbnQzMl90IG9sZE1hc2sg
PSBtX2JyZWFrcG9pbnRzLmdldChub2RlKTsKLSAgICB1aW50MzJfdCBkZXJpdmVkTWFzayA9IHJv
b3RNYXNrIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIHVpbnQzMl90IG5l
d01hc2sgPSBzZXQgPyBvbGRNYXNrIHwgZGVyaXZlZE1hc2sgOiBvbGRNYXNrICYgfmRlcml2ZWRN
YXNrOwotICAgIGlmIChuZXdNYXNrKQotICAgICAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBu
ZXdNYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwot
Ci0gICAgdWludDMyX3QgbmV3Um9vdE1hc2sgPSByb290TWFzayAmIH5uZXdNYXNrOwotICAgIGlm
ICghbmV3Um9vdE1hc2spCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoTm9kZSogY2hpbGQg
PSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQg
PSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhjaGlsZCkpCi0gICAgICAgIHVw
ZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgbmV3Um9vdE1hc2ssIHNldCk7Ci19Ci0KLXZv
aWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVl
ZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwg
Ym9vbCBzeW5jaHJvbm91cykKLXsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dl
ckFnZW50ID0gbV9jb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7Ci0gICAgaWYgKCFk
ZWJ1Z2dlckFnZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgZnVsbEV2ZW50TmFt
ZSA9IFN0cmluZzo6Zm9ybWF0KCIlczolcyIsIGNhdGVnb3J5VHlwZS51dGY4KCkuZGF0YSgpLCBl
dmVudE5hbWUudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKCFtX2V2ZW50TGlzdGVuZXJCcmVha3Bv
aW50cy5jb250YWlucyhmdWxsRXZlbnROYW1lKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBldmVudExpc3Rl
bmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpOwotICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVu
dE5hbWUiLCBmdWxsRXZlbnROYW1lKTsKLSAgICBpZiAoc3luY2hyb25vdXMpCi0gICAgICAgIGRl
YnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5
cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwotICAgIGVsc2UKLSAgICAgICAgZGVidWdnZXJBZ2Vu
dC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChOYXRpdmVCcmVha3BvaW50RGVidWdnZXJF
dmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwotfQotCi12b2lkIEluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsKQotewot
ICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICBtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1w
dHlVUkwgPSB0cnVlOwotICAgIGVsc2UKLSAgICAgICAgbV9YSFJCcmVha3BvaW50cy5hZGQodXJs
KTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIHVybCkKLXsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAg
ICAgICAgbV9oYXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMID0gZmFsc2U7Ci0gICAgZWxzZQot
ICAgICAgICBtX1hIUkJyZWFrcG9pbnRzLnJlbW92ZSh1cmwpOwotfQotCi12b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsKQotewotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBt
X2NvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKLSAgICBpZiAoIWRlYnVnZ2VyQWdl
bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBicmVha3BvaW50VVJMOwotICAgIGlm
IChtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlVUkwpCi0gICAgICAgIGJyZWFrcG9pbnRVUkwg
PSAiIjsKLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChIYXNoU2V0PFN0cmluZz46Oml0ZXJhdG9y
IGl0ID0gbV9YSFJCcmVha3BvaW50cy5iZWdpbigpOyBpdCAhPSBtX1hIUkJyZWFrcG9pbnRzLmVu
ZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5zKCppdCkpIHsKLSAgICAg
ICAgICAgICAgICBicmVha3BvaW50VVJMID0gKml0OwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFicmVha3BvaW50VVJM
LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGV2ZW50RGF0YS0+
c2V0U3RyaW5nKCJicmVha3BvaW50VHlwZSIsIHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKLSAg
ICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVSTCIsIGJyZWFrcG9pbnRVUkwpOwot
ICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIGRlYnVnZ2VyQWdlbnQt
PmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0
YS5yZWxlYXNlKCkpOwotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojpj
bGVhckZvclBhZ2VOYXZpZ2F0aW9uKCkKLXsKLSAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50
cy5jbGVhcigpOwotICAgIG1fWEhSQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX2hhc1hIUkJy
ZWFrcG9pbnRXaXRoRW1wdHlVUkwgPSBmYWxzZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGE1
YjdmM2UwNGYwNTljZjNjMTdiNmZiZTA5NjI4YTg2NWY3NTJlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnRfaAotI2RlZmluZSBJbnNwZWN0
b3JCcm93c2VyRGVidWdnZXJBZ2VudF9oCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBFbGVtZW50OwotY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLWNsYXNzIEluc3BlY3Rv
ck9iamVjdDsKLWNsYXNzIE5vZGU7Ci0KLWNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50IDogcHVibGljIE5vbmNvcHlhYmxlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KGNvbnRyb2xsZXIpKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpOwotCi0gICAgLy8gQnJvd3NlckRl
YnVnZ2VyIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKLSAgICB2b2lkIHNldFhIUkJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyQnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdm9pZCBzZXRET01CcmVha3BvaW50
KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOwotICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChs
b25nIG5vZGVJZCwgbG9uZyB0eXBlKTsKLQotICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
biBBUEkKLSAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUqLCBOb2RlKiBwYXJlbnQpOwot
ICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2RlKik7Ci0gICAgdm9pZCB3aWxsUmVtb3ZlRE9N
Tm9kZShOb2RlKik7Ci0gICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKLSAgICB2b2lk
IHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKLSAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJl
cXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiBjYXRlZ29yeVR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1l
LCBib29sIHN5bmNocm9ub3VzKTsKLQotICAgIHZvaWQgY2xlYXJGb3JQYWdlTmF2aWdhdGlvbigp
OwotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3JD
b250cm9sbGVyKik7Ci0KLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFy
Z2V0LCBsb25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0
KiBkZXNjcmlwdGlvbik7Ci0gICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSos
IHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCk7Ci0gICAgYm9vbCBoYXNCcmVha3BvaW50KE5v
ZGUqLCBsb25nIHR5cGUpOwotICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7Ci0KLSAgICBJbnNw
ZWN0b3JDb250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Ci0gICAgSGFzaE1hcDxOb2RlKiwgdWludDMy
X3Q+IG1fYnJlYWtwb2ludHM7Ci0gICAgSGFzaFNldDxTdHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnRzOwotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX1hIUkJyZWFrcG9pbnRzOwotICAgIGJv
b2wgbV9oYXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJM
RShJTlNQRUNUT1IpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCmluZGV4IDgzNmQ2M2QzYzgwYTk0YTNjNjBmZWE2ZTI5YjYzNWI0MjZlOTBhNTQu
LjIwZGE3MzFhMzBjMGRmZDkzMGQyZTc1YjExNmI3NzgzYWQzOGNhZTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTU4LDcgKzU4
LDYgQEAKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2Ny
aXB0SG9zdC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckRPTUFnZW50LmgiCkBAIC0xNDgsNiArMTQ3LDcgQEAgSW5zcGVjdG9yQ29udHJvbGxl
cjo6SW5zcGVjdG9yQ29udHJvbGxlcihQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQqIGNsaWVu
dCkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRIb3N0KEluamVjdGVkU2NyaXB0SG9zdDo6Y3JlYXRl
KHRoaXMpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9hdHRhY2hE
ZWJ1Z2dlcldoZW5TaG93bihmYWxzZSkKKyAgICAsIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0
eVVSTChmYWxzZSkKICAgICAsIG1fcHJvZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxlckFnZW50
OjpjcmVhdGUodGhpcykpCiAjZW5kaWYKIHsKQEAgLTE3Nyw3ICsxNzcsNiBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQoKQogCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgbV9kZWJ1Z2dlckFnZW50LmNsZWFyKCk7Ci0gICAgbV9i
cm93c2VyRGVidWdnZXJBZ2VudC5jbGVhcigpOwogI2VuZGlmCiAgICAgQVNTRVJUKG1faW5zcGVj
dGVkUGFnZSk7CiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gMDsKQEAgLTcyNiw4ICs3MjUsNiBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICAgICAgaWYgKG1fZGVi
dWdnZXJBZ2VudCkgewogICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5jbGVhckZvclBhZ2VO
YXZpZ2F0aW9uKCk7Ci0gICAgICAgICAgICBpZiAobV9icm93c2VyRGVidWdnZXJBZ2VudCkKLSAg
ICAgICAgICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5jbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKCk7CiAgICAgICAgICAgICByZXN0b3JlU3RpY2t5QnJlYWtwb2ludHMoKTsKICAgICAgICAg
fQogI2VuZGlmCkBAIC0xMTgyLDcgKzExNzksNiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKQogICAgIEFTU0VSVChtX2lu
c3BlY3RlZFBhZ2UpOwogCiAgICAgbV9kZWJ1Z2dlckFnZW50ID0gSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y3JlYXRlKHRoaXMsIG1fZnJvbnRlbmQuZ2V0KCkpOwotICAgIG1fYnJvd3NlckRlYnVn
Z2VyQWdlbnQgPSBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6Y3JlYXRlKHRoaXMpOwog
ICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50cygpOwogCiAgICAgbV9mcm9udGVuZC0+ZGVidWdn
ZXJXYXNFbmFibGVkKCk7CkBAIC0xMjE1LDcgKzEyMTEsNiBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmRpc2FibGVEZWJ1Z2dlcihib29sIGFsd2F5cykKICAgICBBU1NFUlQobV9pbnNwZWN0
ZWRQYWdlKTsKIAogICAgIG1fZGVidWdnZXJBZ2VudC5jbGVhcigpOwotICAgIG1fYnJvd3NlckRl
YnVnZ2VyQWdlbnQuY2xlYXIoKTsKIAogICAgIG1fYXR0YWNoRGVidWdnZXJXaGVuU2hvd24gPSBm
YWxzZTsKIApAQCAtMTIzNiw2ICsxMjMxLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
c2V0U3RpY2t5QnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrCiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZVN0aWNreUJyZWFrcG9pbnRzKCkKIHsK
KyAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1fWEhSQnJlYWtw
b2ludHMuY2xlYXIoKTsKKyAgICBtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlVUkwgPSBmYWxz
ZTsKKwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFsbEJyZWFrcG9pbnRzID0gbV9zdGF0
ZS0+Z2V0T2JqZWN0KEluc3BlY3RvclN0YXRlOjpzdGlja3lCcmVha3BvaW50cyk7CiAgICAgS1VS
TCB1cmwgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCk7CiAg
ICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwpAQCAtMTI2NCwxNCArMTI2MywxMyBA
QCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVTdGlja3lCcmVha3BvaW50KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicgogICAgIGlmICghY29uZGl0aW9uKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyQnJlYWtwb2ludFR5cGUgJiYg
bV9icm93c2VyRGVidWdnZXJBZ2VudCkgeworICAgIGlmICh0eXBlID09IGV2ZW50TGlzdGVuZXJC
cmVha3BvaW50VHlwZSkgewogICAgICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIFN0cmluZyBldmVudE5hbWU7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5n
ZXRTdHJpbmcoImV2ZW50TmFtZSIsICZldmVudE5hbWUpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5zZXRFdmVudExpc3RlbmVyQnJlYWtwb2lu
dChldmVudE5hbWUpOwotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBqYXZhU2NyaXB0QnJlYWtwb2lu
dFR5cGUgJiYgbV9kZWJ1Z2dlckFnZW50KSB7CisgICAgICAgIGlmIChjb25kaXRpb24tPmdldFN0
cmluZygiZXZlbnROYW1lIiwgJmV2ZW50TmFtZSkpCisgICAgICAgICAgICBzZXRFdmVudExpc3Rl
bmVyQnJlYWtwb2ludChldmVudE5hbWUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSBqYXZhU2Ny
aXB0QnJlYWtwb2ludFR5cGUpIHsKICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKCFj
b25kaXRpb24tPmdldFN0cmluZygidXJsIiwgJnVybCkpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMjgxLDE2ICsxMjc5LDYzIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZVN0
aWNreUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyCiAgICAgICAgIFN0
cmluZyBqYXZhU2NyaXB0Q29uZGl0aW9uOwogICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3Ry
aW5nKCJjb25kaXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikpCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2V0U3RpY2t5QnJlYWtwb2ludCh1cmwsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRpdGlvbiwgZW5h
YmxlZCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBlICYmIG1fYnJv
d3NlckRlYnVnZ2VyQWdlbnQpIHsKKyAgICAgICAgaWYgKG1fZGVidWdnZXJBZ2VudCkKKyAgICAg
ICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2V0U3RpY2t5QnJlYWtwb2ludCh1cmwsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRpdGlvbiwgZW5hYmxlZCk7
CisgICAgfSBlbHNlIGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBlKSB7CiAgICAgICAgIGlm
ICghZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RyaW5nIHVybDsKLSAg
ICAgICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygidXJsIiwgJnVybCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQtPnNldFhIUkJyZWFrcG9p
bnQodXJsKTsKKyAgICAgICAgaWYgKGNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1cmwiLCAmdXJsKSkK
KyAgICAgICAgICAgIHNldFhIUkJyZWFrcG9pbnQodXJsKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpCit7CisgICAgbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHMuYWRkKGV2ZW50
TmFtZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlRXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgbV9ldmVudExpc3Rl
bmVyQnJlYWtwb2ludHMucmVtb3ZlKGV2ZW50TmFtZSk7Cit9CisKK2Jvb2wgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aGFzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBldmVudE5h
bWUpCit7CisgICAgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLmNvbnRhaW5zKGV2
ZW50TmFtZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0WEhSQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkKKyAgICAgICAg
bV9oYXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMID0gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAg
IG1fWEhSQnJlYWtwb2ludHMuYWRkKHVybCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVtb3ZlWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJs
LmlzRW1wdHkoKSkKKyAgICAgICAgbV9oYXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMID0gZmFs
c2U7CisgICAgZWxzZQorICAgICAgICBtX1hIUkJyZWFrcG9pbnRzLnJlbW92ZSh1cmwpOworfQor
Citib29sIEluc3BlY3RvckNvbnRyb2xsZXI6Omhhc1hIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5n
JiB1cmwsIFN0cmluZyogYnJlYWtwb2ludFVSTCkKK3sKKyAgICBpZiAobV9oYXNYSFJCcmVha3Bv
aW50V2l0aEVtcHR5VVJMKSB7CisgICAgICAgICpicmVha3BvaW50VVJMID0gIiI7CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KKyAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6aXRlcmF0b3Ig
aXQgPSBtX1hIUkJyZWFrcG9pbnRzLmJlZ2luKCk7IGl0ICE9IG1fWEhSQnJlYWtwb2ludHMuZW5k
KCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHVybC5jb250YWlucygqaXQpKSB7CisgICAgICAgICAg
ICAqYnJlYWtwb2ludFVSTCA9ICppdDsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KKwogI2VuZGlmCiAKIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hPbkluamVjdGVkU2NyaXB0KGxvbmcgaW5qZWN0ZWRTY3Jp
cHRJZCwgY29uc3QgU3RyaW5nJiBtZXRob2ROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywg
UmVmUHRyPEluc3BlY3RvclZhbHVlPiogcmVzdWx0LCBib29sKiBoYWRFeGNlcHRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAzYmFm
NTc1ZWQ1Y2M0Y2ZiYTBiYTFlOTQ2ZTExY2E2NjVjOWU4ZGQ4Li5mZWYyYTZkMzcwZDNkZmM4M2Vm
MzRlMzUzODA2OTI1YzM5MDgyMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgSW5qZWN0ZWRTY3Jp
cHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdEhvc3Q7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNs
YXNzIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOwotY2xhc3MgSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDU1NB
Z2VudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwpAQCAtMjM1LDYgKzIzNCwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIHZvaWQgc2V0U3RpY2t5QnJlYWtwb2ludHMo
UGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKTsKKyAgICB2b2lkIHNldEV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsKKyAgICB2b2lk
IHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKTsK
KyAgICBib29sIGhhc0V2ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgZXZlbnRO
YW1lKTsKKyAgICB2b2lkIHNldFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgYm9vbCBo
YXNYSFJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGJyZWFrcG9pbnRVUkwp
OwogI2VuZGlmCiAKICAgICB2b2lkIHNldEluamVjdGVkU2NyaXB0U291cmNlKGNvbnN0IFN0cmlu
ZyYgc291cmNlKTsKQEAgLTI2MSw3ICsyNjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kOwogICAgIGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBmcmllbmQgY2xhc3MgSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQ7CiAgICAgZnJpZW5kIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKICAg
ICBmcmllbmQgY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwogCkBAIC0zNjgsNyArMzcyLDEwIEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgYm9vbCBtX2F0
dGFjaERlYnVnZ2VyV2hlblNob3duOwogICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
PiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50PiBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50OworCisgICAgSGFzaFNldDxTdHJpbmc+IG1fZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRzOworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX1hIUkJyZWFrcG9p
bnRzOworICAgIGJvb2wgbV9oYXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMOwogCiAgICAgT3du
UHRyPEluc3BlY3RvclByb2ZpbGVyQWdlbnQ+IG1fcHJvZmlsZXJBZ2VudDsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTlh
ZTMwZGE3Yjk1YzQ5ZWY2Y2YzZDFlZDg1YzExNDQ4MDlhODdjMi4uNWQ4ZjQwODg4OGEwZGNmODRk
YmJiOTc3YWExOGQ2NjAxNTQ2NDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yMDQsNiArMjA0LDE2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5NYXRjaFBsYWluVGV4dEpvYigpIHsgfQogfTsKIAorZW51bSBET01CcmVha3BvaW50
VHlwZSB7CisgICAgU3VidHJlZU1vZGlmaWVkID0gMCwKKyAgICBBdHRyaWJ1dGVNb2RpZmllZCwK
KyAgICBOb2RlUmVtb3ZlZCwKKyAgICBET01CcmVha3BvaW50VHlwZXNDb3VudAorfTsKKworY29u
c3QgdWludDMyX3QgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrID0gKDEgPDwgU3Vi
dHJlZU1vZGlmaWVkKTsKK2NvbnN0IGludCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCA9
IDE2OworCiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChJbnNwZWN0
b3JGcm9udGVuZCogZnJvbnRlbmQpCkBAIC0zOTQsNiArNDA0LDcgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKICAgICByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwog
ICAgIG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY2xlYXIoKTsKICAgICBtX2luc3BlY3RlZE5vZGVzLmNs
ZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JE
T01BZ2VudDo6bm9kZUZvcklkKGxvbmcgaWQpCkBAIC03NTgsNiArNzY5LDEwMSBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZWFyY2hDYW5jZWxlZCgpCiAgICAgbV9zZWFyY2hSZXN1bHRzLmNs
ZWFyKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQobG9u
ZyBub2RlSWQsIGxvbmcgdHlwZSkKK3sKKyAgICBOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJ
ZCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICB1aW50MzJfdCByb290
Qml0ID0gMSA8PCB0eXBlOworICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fYnJlYWtwb2lu
dHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCk7CisgICAgaWYgKHJvb3RCaXQgJiBpbmhlcml0YWJsZURP
TUJyZWFrcG9pbnRUeXBlc01hc2spIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVy
Rmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkp
CisgICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIHJvb3RCaXQsIHRy
dWUpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlRE9NQnJlYWtw
b2ludChsb25nIG5vZGVJZCwgbG9uZyB0eXBlKQoreworICAgIE5vZGUqIG5vZGUgPSBub2RlRm9y
SWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQz
Ml90IHJvb3RCaXQgPSAxIDw8IHR5cGU7CisgICAgdWludDMyX3QgbWFzayA9IG1fYnJlYWtwb2lu
dHMuZ2V0KG5vZGUpICYgfnJvb3RCaXQ7CisgICAgaWYgKG1hc2spCisgICAgICAgIG1fYnJlYWtw
b2ludHMuc2V0KG5vZGUsIG1hc2spOworICAgIGVsc2UKKyAgICAgICAgbV9icmVha3BvaW50cy5y
ZW1vdmUobm9kZSk7CisKKyAgICBpZiAoKHJvb3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9p
bnRUeXBlc01hc2spICYmICEobWFzayAmIChyb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVk
VHlwZVNoaWZ0KSkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGlubmVyRmlyc3RDaGls
ZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gaW5uZXJOZXh0U2libGluZyhjaGlsZCkpCisgICAgICAg
ICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIHJvb3RCaXQsIGZhbHNlKTsKKyAg
ICB9Cit9CisKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6OnNob3VsZEJyZWFrT25Ob2RlSW5zZXJ0
aW9uKE5vZGUqLCBOb2RlKiBwYXJlbnQsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRh
aWxzKQoreworICAgIGlmIChoYXNCcmVha3BvaW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkg
eworICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVk
LCB0cnVlLCBkZXRhaWxzKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6c2hvdWxkQnJlYWtPbk5vZGVS
ZW1vdmFsKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXRhaWxzKQor
eworICAgIGlmIChoYXNCcmVha3BvaW50KG5vZGUsIE5vZGVSZW1vdmVkKSkgeworICAgICAgICBk
ZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZGV0YWlscyk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoaGFzQnJlYWtwb2ludChpbm5l
clBhcmVudE5vZGUobm9kZSksIFN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgZGVzY3JpcHRp
b25Gb3JET01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQsIGZhbHNlLCBkZXRhaWxzKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBJ
bnNwZWN0b3JET01BZ2VudDo6c2hvdWxkQnJlYWtPbkF0dHJpYnV0ZU1vZGlmaWNhdGlvbihFbGVt
ZW50KiBlbGVtZW50LCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGV0YWlscykKK3sKKyAg
ICBpZiAoaGFzQnJlYWtwb2ludChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsKKyAgICAg
ICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFs
c2UsIGRldGFpbHMpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50
KE5vZGUqIHRhcmdldCwgbG9uZyBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBkZXNjcmlwdGlvbikKK3sKKyAgICBBU1NFUlQoaGFzQnJl
YWtwb2ludCh0YXJnZXQsIGJyZWFrcG9pbnRUeXBlKSk7CisKKyAgICBOb2RlKiBicmVha3BvaW50
T3duZXIgPSB0YXJnZXQ7CisgICAgaWYgKCgxIDw8IGJyZWFrcG9pbnRUeXBlKSAmIGluaGVyaXRh
YmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgeworICAgICAgICAvLyBGb3IgaW5oZXJpdGFibGUg
YnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlzIHRoZSBzYW1lIGFzIHRo
ZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCisgICAgICAgIC8vIFRhcmdldCBub2RlIG1h
eSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3QuCisg
ICAgICAgIGxvbmcgdGFyZ2V0Tm9kZUlkID0gcHVzaE5vZGVQYXRoVG9Gcm9udGVuZCh0YXJnZXQp
OworICAgICAgICBBU1NFUlQodGFyZ2V0Tm9kZUlkKTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnNl
dE51bWJlcigidGFyZ2V0Tm9kZUlkIiwgdGFyZ2V0Tm9kZUlkKTsKKworICAgICAgICAvLyBGaW5k
IGJyZWFrcG9pbnQgb3duZXIgbm9kZS4KKyAgICAgICAgaWYgKCFpbnNlcnRpb24pCisgICAgICAg
ICAgICBicmVha3BvaW50T3duZXIgPSBpbm5lclBhcmVudE5vZGUodGFyZ2V0KTsKKyAgICAgICAg
QVNTRVJUKGJyZWFrcG9pbnRPd25lcik7CisgICAgICAgIHdoaWxlICghKG1fYnJlYWtwb2ludHMu
Z2V0KGJyZWFrcG9pbnRPd25lcikgJiAoMSA8PCBicmVha3BvaW50VHlwZSkpKSB7CisgICAgICAg
ICAgICBicmVha3BvaW50T3duZXIgPSBpbm5lclBhcmVudE5vZGUoYnJlYWtwb2ludE93bmVyKTsK
KyAgICAgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGJyZWFrcG9pbnRUeXBlID09IFN1YnRyZWVNb2RpZmllZCkKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uLT5zZXRCb29sZWFuKCJpbnNlcnRpb24iLCBpbnNlcnRpb24pOworICAgIH0KKwor
ICAgIGxvbmcgYnJlYWtwb2ludE93bmVyTm9kZUlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdl
dChicmVha3BvaW50T3duZXIpOworICAgIEFTU0VSVChicmVha3BvaW50T3duZXJOb2RlSWQpOwor
ICAgIGRlc2NyaXB0aW9uLT5zZXROdW1iZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRPd25lck5vZGVJ
ZCk7CisgICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigidHlwZSIsIGJyZWFrcG9pbnRUeXBlKTsK
K30KKwogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVu
dCogZG9jdW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCBkb2N1bWVudC0+dXJs
KCkuaXNOdWxsKCkpCkBAIC05NjQsNiArMTA3MCwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKGlzV2hpdGVzcGFjZShub2Rl
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fYnJlYWtwb2ludHMuc2l6ZSgpKSB7Cisg
ICAgICAgIHVpbnQzMl90IG1hc2sgPSBtX2JyZWFrcG9pbnRzLmdldChpbm5lclBhcmVudE5vZGUo
bm9kZSkpOworICAgICAgICB1aW50MzJfdCBpbmhlcml0YWJsZVR5cGVzTWFzayA9IChtYXNrIHwg
KG1hc2sgPj4gZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpKSAmIGluaGVyaXRhYmxlRE9N
QnJlYWtwb2ludFR5cGVzTWFzazsKKyAgICAgICAgaWYgKGluaGVyaXRhYmxlVHlwZXNNYXNrKQor
ICAgICAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIGluaGVyaXRhYmxlVHlw
ZXNNYXNrLCB0cnVlKTsKKyAgICB9CisKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhp
c3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4KICAgICB1bmJpbmQobm9kZSwgJm1f
ZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAKQEAgLTk5MCw2ICsxMTAzLDIxIEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICBpZiAoaXNXaGl0
ZXNwYWNlKG5vZGUpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9icmVha3BvaW50cy5z
aXplKCkpIHsKKyAgICAgICAgLy8gUmVtb3ZlIHN1YnRyZWUgYnJlYWtwb2ludHMuCisgICAgICAg
IG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNr
KDEsIGlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBzdGFjay5sYXN0KCk7CisgICAgICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7
CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAgICAgIHN0YWNrLmFw
cGVuZChpbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICAgICAgc3RhY2suYXBwZW5kKGlu
bmVyTmV4dFNpYmxpbmcobm9kZSkpOworICAgICAgICB9IHdoaWxlICghc3RhY2suaXNFbXB0eSgp
KTsKKyAgICB9CisKICAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2Rl
KCk7CiAgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50
KTsKICAgICAvLyBJZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVu
dC4KQEAgLTEwMjksNiArMTE1NywzMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpjaGFyYWN0
ZXJEYXRhTW9kaWZpZWQoQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKICAgICBtX2Zyb250
ZW5kLT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoaWQsIGNoYXJhY3RlckRhdGEtPmRhdGEoKSk7CiB9
CiAKK2Jvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgbG9u
ZyB0eXBlKQoreworICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7CisgICAgdWludDMy
X3QgZGVyaXZlZEJpdCA9IHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7
CisgICAgcmV0dXJuIG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgKHJvb3RCaXQgfCBkZXJpdmVk
Qml0KTsKK30KKwordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKE5vZGUqIG5vZGUsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKK3sKKyAgICB1aW50
MzJfdCBvbGRNYXNrID0gbV9icmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgdWludDMyX3QgZGVy
aXZlZE1hc2sgPSByb290TWFzayA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKKyAg
ICB1aW50MzJfdCBuZXdNYXNrID0gc2V0ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNrIDogb2xkTWFz
ayAmIH5kZXJpdmVkTWFzazsKKyAgICBpZiAobmV3TWFzaykKKyAgICAgICAgbV9icmVha3BvaW50
cy5zZXQobm9kZSwgbmV3TWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2JyZWFrcG9pbnRzLnJl
bW92ZShub2RlKTsKKworICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9vdE1hc2sgJiB+bmV3
TWFzazsKKyAgICBpZiAoIW5ld1Jvb3RNYXNrKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KE5vZGUqIGNoaWxkID0gaW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBpbm5l
ck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNo
aWxkLCBuZXdSb290TWFzaywgc2V0KTsKK30KKwogTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5v
ZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICAvLyBUaGUgcGF0aCBpcyBvZiBm
b3JtICIxLEhUTUwsMixCT0RZLDEsRElWIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCA5ZWE2OTBjNGQ3M2E4Yjk4MDJiMTkzYWI3MGVlY2FmN2Y5
MjM5YWNhLi4zNjYyN2Y1N2Q5N2MyMzRkODYzYjU4ZTEyMzZkY2I2MTQ3NTAzZmQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMTQ0LDE0ICsx
NDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgU3RyaW5nIGRvY3VtZW50VVJM
U3RyaW5nKERvY3VtZW50KiBkb2N1bWVudCkgY29uc3Q7CiAKLSAgICAgICAgLy8gV2UgcmVwcmVz
ZW50IGVtYmVkZGVkIGRvbXMgYXMgYSBwYXJ0IG9mIHRoZSBzYW1lIGhpZXJhcmNoeS4gSGVuY2Ug
d2UgdHJlYXQgY2hpbGRyZW4gb2YgZnJhbWUgb3duZXJzIGRpZmZlcmVudGx5LgotICAgICAgICAv
LyBXZSBhbHNvIHNraXAgd2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGNvbmRpdGlvbmFsbHkuIEZvbGxv
d2luZyBtZXRob2RzIGVuY2Fwc3VsYXRlIHRoZXNlIHNwZWNpZmljcy4KLSAgICAgICAgc3RhdGlj
IE5vZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKik7Ci0gICAgICAgIHN0YXRpYyBOb2RlKiBpbm5l
ck5leHRTaWJsaW5nKE5vZGUqKTsKLSAgICAgICAgc3RhdGljIE5vZGUqIGlubmVyUHJldmlvdXNT
aWJsaW5nKE5vZGUqKTsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGlubmVyQ2hpbGROb2RlQ291
bnQoTm9kZSopOwotICAgICAgICBzdGF0aWMgTm9kZSogaW5uZXJQYXJlbnROb2RlKE5vZGUqKTsK
LSAgICAgICAgc3RhdGljIGJvb2wgaXNXaGl0ZXNwYWNlKE5vZGUqKTsKKyAgICAgICAgdm9pZCBz
ZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpOworICAgICAgICB2b2lkIHJl
bW92ZURPTUJyZWFrcG9pbnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2b2lkIHN0YXJ0TGlzdGVuaW5nRnJhbWVEb2N1bWVudChOb2RlKiBmcmFtZU93
bmVyTm9kZSk7CkBAIC0xNzYsNiArMTcwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxk
cmVuKE5vZGUqIGNvbnRhaW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwog
ICAgICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JFdmVudExp
c3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIG5vZGUpOwogCisgICAg
ICAgIC8vIFdlIHJlcHJlc2VudCBlbWJlZGRlZCBkb21zIGFzIGEgcGFydCBvZiB0aGUgc2FtZSBo
aWVyYXJjaHkuIEhlbmNlIHdlIHRyZWF0IGNoaWxkcmVuIG9mIGZyYW1lIG93bmVycyBkaWZmZXJl
bnRseS4KKyAgICAgICAgLy8gV2UgYWxzbyBza2lwIHdoaXRlc3BhY2UgdGV4dCBub2RlcyBjb25k
aXRpb25hbGx5LiBGb2xsb3dpbmcgbWV0aG9kcyBlbmNhcHN1bGF0ZSB0aGVzZSBzcGVjaWZpY3Mu
CisgICAgICAgIE5vZGUqIGlubmVyRmlyc3RDaGlsZChOb2RlKiBub2RlKTsKKyAgICAgICAgTm9k
ZSogaW5uZXJOZXh0U2libGluZyhOb2RlKiBub2RlKTsKKyAgICAgICAgTm9kZSogaW5uZXJQcmV2
aW91c1NpYmxpbmcoTm9kZSogbm9kZSk7CisgICAgICAgIHVuc2lnbmVkIGlubmVyQ2hpbGROb2Rl
Q291bnQoTm9kZSogbm9kZSk7CisgICAgICAgIE5vZGUqIGlubmVyUGFyZW50Tm9kZShOb2RlKiBu
b2RlKTsKKyAgICAgICAgYm9vbCBpc1doaXRlc3BhY2UoTm9kZSogbm9kZSk7CisKICAgICAgICAg
RG9jdW1lbnQqIG1haW5GcmFtZURvY3VtZW50KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBvbk1h
dGNoSm9ic1RpbWVyKFRpbWVyPEluc3BlY3RvckRPTUFnZW50PiopOwpAQCAtMjAwLDYgKzIwMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVGltZXI8SW5zcGVjdG9yRE9NQWdlbnQ+
IG1fbWF0Y2hKb2JzVGltZXI7CiAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gbV9zZWFy
Y2hSZXN1bHRzOwogICAgICAgICBWZWN0b3I8bG9uZz4gbV9pbnNwZWN0ZWROb2RlczsKKyAgICAg
ICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fYnJlYWtwb2ludHM7CiAgICAgfTsKIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IDFmMTk5ZWNmNmNkZGI1ZWQ3NmY3MDU0OTJkNmU1MGU1NjY4YTUz
YTIuLjkzOTVkZDVkNzYzODYxYWUzMWMxOGNiYjM4MDg0ODI5ZjAxMTZhMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudENv
bnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCIKLSNp
bmNsdWRlICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKQEAgLTQ5LDYgKzQ4LDEwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRvbU5hdGl2ZUJyZWFr
cG9pbnRUeXBlID0gIkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZlbnRMaXN0ZW5l
ck5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIkV2ZW50TGlzdGVuZXIiOworc3RhdGljIGNvbnN0IGNo
YXIqIGNvbnN0IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIlhIUiI7CisKIHN0YXRpYyBjb25z
dCBjaGFyKiBjb25zdCBsaXN0ZW5lckV2ZW50Q2F0ZWdvcnlUeXBlID0gImxpc3RlbmVyIjsKIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBpbnN0cnVtZW50YXRpb25FdmVudENhdGVnb3J5VHlwZSA9
ICJpbnN0cnVtZW50YXRpb24iOwogCkBAIC03OCw4ICs4MSwxNyBAQCBzdGF0aWMgYm9vbCBldmVu
dEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRE9NV2luZG93KiB3
aW5kb3csCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIE5vZGUqIG5vZGUs
IE5vZGUqIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBp
ZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV9icm93c2VyRGVidWdnZXJBZ2VudC5nZXQoKSkKLSAgICAg
ICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPndpbGxJbnNlcnRET01Ob2RlKG5vZGUsIHBhcmVudCk7
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNv
bnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQp
CisgICAgICAgIHJldHVybjsKKyAgICBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNw
ZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpOworICAgIGlmICghZG9tQWdlbnQpCisg
ICAgICAgIHJldHVybjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIGlmIChkb21BZ2VudC0+c2hvdWxkQnJlYWtP
bk5vZGVJbnNlcnRpb24obm9kZSwgcGFyZW50LCBldmVudERhdGEpKSB7CisgICAgICAgIGV2ZW50
RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlwZSIsIGRvbU5hdGl2ZUJyZWFrcG9pbnRUeXBl
KTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKKyAgICB9CiAjZW5kaWYKIH0KIApAQCAtODcs
MjYgKzk5LDI3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01O
b2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0CiB7CiAgICAgaWYgKEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0
KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRJbnNlcnRET01Ob2RlKG5vZGUpOwotI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudCogYnJvd3NlckRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2Jyb3dz
ZXJEZWJ1Z2dlckFnZW50LmdldCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJBZ2VudC0+ZGlk
SW5zZXJ0RE9NTm9kZShub2RlKTsKLSNlbmRpZgogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIE5vZGUqIG5vZGUpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0gICAgaWYgKEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVi
dWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fYnJvd3NlckRlYnVnZ2VyQWdlbnQu
Z2V0KCkpCi0gICAgICAgIGJyb3dzZXJEZWJ1Z2dlckFnZW50LT53aWxsUmVtb3ZlRE9NTm9kZShu
b2RlKTsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVj
dG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOworICAgIGlmICghZGVidWdnZXJB
Z2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9
IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkb21BZ2Vu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0
YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgaWYgKGRvbUFnZW50LT5zaG91bGRC
cmVha09uTm9kZVJlbW92YWwobm9kZSwgZXZlbnREYXRhKSkgeworICAgICAgICBldmVudERhdGEt
PnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRpdmVCcmVha3BvaW50VHlwZSk7Cisg
ICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdn
ZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CisgICAgfQogI2VuZGlmCiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBOb2RlKiBub2RlKQogewotI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCog
YnJvd3NlckRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2Jyb3dzZXJEZWJ1
Z2dlckFnZW50LmdldCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJBZ2VudC0+ZGlkUmVtb3Zl
RE9NTm9kZShub2RlKTsKLSNlbmRpZgogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdl
bnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQogICAgICAgICBkb21B
Z2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKIH0KQEAgLTExNCw4ICsxMjcsMTcgQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3QKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciwgRWxlbWVudCogZWxlbWVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFn
ZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9icm93c2VyRGVidWdnZXJBZ2VudC5nZXQoKSkK
LSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVsZW1lbnQp
OworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JD
b250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50
KQorICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5z
cGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQor
ICAgICAgICByZXR1cm47CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBpZiAoZG9tQWdlbnQtPnNob3VsZEJyZWFr
T25BdHRyaWJ1dGVNb2RpZmljYXRpb24oZWxlbWVudCwgZXZlbnREYXRhKSkgeworICAgICAgICBl
dmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRpdmVCcmVha3BvaW50
VHlwZSk7CisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3Bv
aW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CisgICAgfQogI2VuZGlmCiB9CiAKQEAg
LTEzNCw4ICsxNTYsMTkgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3Rl
ckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW4KIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHVybCkKIHsKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9i
cm93c2VyRGVidWdnZXJBZ2VudC5nZXQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQt
PndpbGxTZW5kWE1MSHR0cFJlcXVlc3QodXJsKTsKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50Lmdl
dCgpOworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3Ry
aW5nIGJyZWFrcG9pbnRVUkw7CisgICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNYSFJC
cmVha3BvaW50KHVybCwgJmJyZWFrcG9pbnRVUkwpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlwZSIsIHhock5hdGl2
ZUJyZWFrcG9pbnRUeXBlKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFVS
TCIsIGJyZWFrcG9pbnRVUkwpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwp
OworICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdn
ZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CiAjZW5kaWYKIH0KIApAQCAtNTEzLDggKzU0NiwxOSBA
QCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmQoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2
ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cykKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1
Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9icm93c2VyRGVidWdnZXJBZ2VudC5n
ZXQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKGNhdGVnb3J5VHlwZSwgZXZlbnROYW1lLCBzeW5jaHJvbm91cyk7CisgICAgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1f
ZGVidWdnZXJBZ2VudC5nZXQoKTsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJl
dHVybjsKKyAgICBTdHJpbmcgZnVsbEV2ZW50TmFtZSA9IFN0cmluZzo6Zm9ybWF0KCIlczolcyIs
IGNhdGVnb3J5VHlwZS51dGY4KCkuZGF0YSgpLCBldmVudE5hbWUudXRmOCgpLmRhdGEoKSk7Cisg
ICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNFdmVudExpc3RlbmVyQnJlYWtwb2ludChm
dWxsRXZlbnROYW1lKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZXZlbnREYXRh
LT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZXZlbnRMaXN0ZW5lck5hdGl2ZUJyZWFrcG9p
bnRUeXBlKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygiZXZlbnROYW1lIiwgZnVsbEV2ZW50
TmFtZSk7CisgICAgaWYgKHN5bmNocm9ub3VzKQorICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEpOwor
ICAgIGVsc2UKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRl
bWVudChOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGFiZjBhN2IyYzA4ZTcwZDZhOTc5NTI0MzE5YTQyN2FiYzMwN2FmNmMuLjY0ZGY5YTA4MmZh
NjVlZjI2NzcwNjRiMDAyMDk3OWU2M2QzNDFjZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0xNCAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjc1Nzc0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC83NTc3NAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTI0MzEKKworICAgICAgICBndGsgYnVpbGRzIHdlcmUgYnJva2VuIChSZXF1ZXN0
ZWQgYnkgbG9pc2xvMiBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weToKKwogMjAxMS0wMS0xNCAgRGF2aWQgTGV2aW4gIDxsZXZp
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamku
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKaW5kZXgg
Yzg3MWY4Y2VmM2IxOGExMDVkZTMwYjBiMzkyNjk4MDlmM2MzZTk5Ny4uZDVkMjlmNTg3M2NlZTY2
ZTBiZTNmODJmZmU3MDg0YWUzMTk1NTA1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weQpAQCAtNzQ5LDggKzc0OSw2IEBAIGNsYXNzIEdpdChTQ00p
OgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0
aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFy
eSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZl
cmVudCBlbmNvZGluZ3MuIiIiCi0gICAgICAgIGlmIGNoYW5nZWRfZmlsZXMgPT0gTm9uZToKLSAg
ICAgICAgICAgIGNoYW5nZWRfZmlsZXMgPSBbXQogICAgICAgICByZXR1cm4gc2VsZi5ydW4oWydn
aXQnLCAnZGlmZicsICctLWJpbmFyeScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIs
ICItTSIsIHNlbGYubWVyZ2VfYmFzZShnaXRfY29tbWl0KSwgIi0tIl0gKyBjaGFuZ2VkX2ZpbGVz
LCBkZWNvZGVfb3V0cHV0PUZhbHNlLCBjd2Q9c2VsZi5jaGVja291dF9yb290KQogCiAgICAgZGVm
IF9ydW5fZ2l0X3N2bl9maW5kX3JldihzZWxmLCBhcmcpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>