<?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>140982</bug_id>
          
          <creation_ts>2015-01-27 20:12:03 -0800</creation_ts>
          <short_desc>Add API::{FrameInfo, NavigationAction, NavigationResponse} types</short_desc>
          <delta_ts>2015-01-28 19:05:45 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064785</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-27 20:12:03 -0800</bug_when>
    <thetext>Add API::{FrameInfo, NavigationAction, NavigationResponse} types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064786</commentid>
    <comment_count>1</comment_count>
      <attachid>245512</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-27 20:12:23 -0800</bug_when>
    <thetext>Created attachment 245512
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064787</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-27 20:14:49 -0800</bug_when>
    <thetext>Attachment 245512 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:115:  The parameter name &quot;frameInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:122:  The parameter name &quot;frameInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:173:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:271:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:329:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064861</commentid>
    <comment_count>3</comment_count>
      <attachid>245529</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-28 03:11:47 -0800</bug_when>
    <thetext>Created attachment 245529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064862</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 03:12:53 -0800</bug_when>
    <thetext>Attachment 245529 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:115:  The parameter name &quot;frameInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKNavigationAction.mm:122:  The parameter name &quot;frameInfo&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:153:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm:173:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:271:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/NavigationState.mm:329:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064980</commentid>
    <comment_count>5</comment_count>
      <attachid>245529</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-28 11:58:30 -0800</bug_when>
    <thetext>Comment on attachment 245529
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIFrameInfo.h:45
&gt; +    FrameInfo(const WebKit::WebFrameProxy&amp;);

I would mark this as explicit.

&gt; Source/WebKit2/UIProcess/API/APIFrameInfo.h:47
&gt; +    ~FrameInfo()

I would mark this as virtual. I&apos;m actually not sure if you need it at all.

&gt; Source/WebKit2/UIProcess/API/APINavigationAction.h:54
&gt; +    ~NavigationAction()

Same comment as the FrameInfo destructor.

&gt; Source/WebKit2/UIProcess/API/APINavigationResponse.h:52
&gt; +    ~NavigationResponse()

Same comment as the FrameInfo destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065129</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-01-28 19:05:45 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/179328</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245512</attachid>
            <date>2015-01-27 20:12:23 -0800</date>
            <delta_ts>2015-01-28 03:11:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140982-20150127201228.patch</filename>
            <type>text/plain</type>
            <size>50061</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDc3ZTYyN2I4YmRiNTI4
NjgzMTdhOTNjOTc1OWNjMGZhZTFkZDgxYy4uZGJjZDE5N2I1ZDc0NGQ2OWRkOGYwNDU0NzZjNjEw
ZmY2NjRmM2ZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTAxLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEk6OntG
cmFtZUluZm8sIE5hdmlnYXRpb25BY3Rpb24sIE5hdmlnYXRpb25SZXNwb25zZX0gdHlwZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDk4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQysrIEFQ
SSBvYmplY3RzIGZvciBXS3tGcmFtZUluZm8sIE5hdmlnYXRpb25BY3Rpb24sIE5hdmlnYXRpb25S
ZXNwb25zZX0KKyAgICAgICAgdG8gd3JhcCBhcm91bmQsIGFzIGEgc3RlcCB0b3dhcmRzIG1vdmlu
ZyBNb2Rlcm4gQVBJIGxvZ2ljIGRvd24gaW50byBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRnJhbWVJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25SZXNwb25zZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIEFQSTo6RnJhbWVJbmZvLCBBUEk6Ok5h
dmlnYXRpb25BY3Rpb24sIGFuZCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW06CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mb0ludGVybmFsLmg6CisgICAgICAgIE1ha2UgV0tGcmFtZUlu
Zm8gYSBXS09iamVjdCwgd3JhcHBpbmcgYSBBUEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgTWFr
ZSBXS05hdmlnYXRpb25BY3Rpb24gYSBXS09iamVjdCwgd3JhcHBpbmcgYSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVz
cG9uc2VJbnRlcm5hbC5oOgorICAgICAgICBNYWtlIFdLTmF2aWdhdGlvblJlc3BvbnNlIGEgV0tP
YmplY3QsIHdyYXBwaW5nIGEgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICBB
ZG9wdCBBUEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgQWRvcHQgQVBJ
OjpGcmFtZUluZm8sIGFuZCByZW9yZ2FuaXplIHRoZSBjb2RlIHNsaWdodGx5LgorICAgICAgICBB
ZG9wdCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
QWRvcHQgQVBJOjpGcmFtZUluZm8uCisgICAgICAgIEFkb3B0IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlLgorCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICBBZG9wdCBB
UEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
OgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxl
cnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2
YVNjcmlwdFByb21wdCk6CisgICAgICAgIEFkb3B0IEFQSTo6RnJhbWVJbmZvLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTI3ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE1vcmUgYnVpbGQgZml4
ZXMgZm9yIG5ld2VyIGNsYW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5k
ZXggYzVkZmQzNDYyMjc3M2VmNmQyY2RlNGJmYmFkZTgxOTNhMjRjODhjZi4uNTE3MTQ2MmI3MGRi
ODRmZmMyMmI1YzFmZWUwN2VhNDM5ZDQ2NjE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgICAgICBEb3dubG9hZCwK
ICAgICAgICAgRm9ybVN1Ym1pc3Npb25MaXN0ZW5lciwKICAgICAgICAgRnJhbWUsCisgICAgICAg
IEZyYW1lSW5mbywKICAgICAgICAgRnJhbWVQb2xpY3lMaXN0ZW5lciwKICAgICAgICAgRnVsbFNj
cmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0aW9uTWFuYWdlciwKQEAgLTEyMSw3ICsxMjIs
OSBAQCBwdWJsaWM6CiAgICAgICAgIEtleVZhbHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIE1l
ZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBOYXZpZ2F0aW9uLAorICAgICAgICBOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0YSwKKyAgICAgICAgTmF2aWdhdGlvblJlc3Bv
bnNlLAogICAgICAgICBOb3RpZmljYXRpb24sCiAgICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIs
CiAgICAgICAgIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggODFmNjg5Mjk2MDE5NTM3YTkzNTRiZjAxMzlk
N2Y2ZDMwZWQzYjMzNC4uNTM1ZTRmMTY0YmZiN2NmODlhMThiZmM2MTY2MTk1Y2Q2Y2Q5ZDY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC0zMyw2ICszMyw3
IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91cEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Nvbm5l
Y3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tOU0RpY3Rp
b25hcnkuaCIKQEAgLTQxLDggKzQyLDEwIEBACiAjaW1wb3J0ICJXS05TVVJMLmgiCiAjaW1wb3J0
ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxSZXF1
ZXN0LmgiCisjaW1wb3J0ICJXS05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05hdmlnYXRpb25JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tOYXZpZ2F0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tQcm9jZXNzUG9vbEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxl
ckludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgpAQCAtMTM2LDE0
ICsxMzksMjYgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlw
ZSkKICAgICAgICAgd3JhcHBlciA9IFtfV0tGcmFtZUhhbmRsZSBhbGxvY107CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBUeXBlOjpGcmFtZUluZm86CisgICAgICAgIHdyYXBwZXIgPSBbV0tG
cmFtZUluZm8gYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdh
dGlvbjoKICAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbkFjdGlvbjoKKyAgICAgICAgd3JhcHBl
ciA9IFtXS05hdmlnYXRpb25BY3Rpb24gYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNh
c2UgVHlwZTo6TmF2aWdhdGlvbkRhdGE6CiAgICAgICAgIHdyYXBwZXIgPSBbV0tOYXZpZ2F0aW9u
RGF0YSBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9u
UmVzcG9uc2U6CisgICAgICAgIHdyYXBwZXIgPSBbV0tOYXZpZ2F0aW9uUmVzcG9uc2UgYWxsb2Nd
OworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6UGFnZUdyb3VwOgogICAgICAgICB3
cmFwcGVyID0gW1dLQnJvd3NpbmdDb250ZXh0R3JvdXAgYWxsb2NdOwogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NDc4OWZjZDZkMjNmMzVjNjAzNjg3YTdlMjI3ZjQ1OWI3ZTIwZWM3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCkBA
IC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQVBJRnJhbWVJbmZvLmgiCisKKyNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisKK25hbWVz
cGFjZSBBUEkgeworCisvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qg
b2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgorRnJhbWVJbmZvOjpGcmFtZUluZm8oY29u
c3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSkKKyAgICA6IG1faXNNYWluRnJhbWUoZnJh
bWUuaXNNYWluRnJhbWUoKSkKKyAgICAsIG1fcmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QoZnJhbWUudXJsKCkpKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0NDE0MzM2Mjlj
MmU0M2MyNzhiOTlkYmVlNzczNjcwMWRlNjM2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEFQSUZyYW1lSW5mb19oCisjZGVmaW5lIEFQSUZyYW1lSW5mb19o
CisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZyYW1lUHJveHk7Cit9CisK
K25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBGcmFtZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0
SW1wbDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
RnJhbWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZyYW1lSW5mbyhmcmFtZSkpOworICAg
IH0KKworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKTsKKworICAg
IH5GcmFtZUluZm8oKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzTWFpbkZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9pc01haW5GcmFtZTsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorCitwcml2YXRl
OgorICAgIGJvb2wgbV9pc01haW5GcmFtZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9yZXF1ZXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBBUElGcmFt
ZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25BY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI3ZGYyMzU3NDlkZjlkNjBjZTk2Y2YzN2ZiZDRhNmQ5
OTUxOGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQVBJTmF2aWdhdGlvbkFjdGlvbl9oCisjZGVmaW5lIEFQSU5hdmlnYXRpb25BY3Rpb25faAor
CisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVVJMLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBGcmFtZUluZm87CisKK2NsYXNz
IE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6
Ok5hdmlnYXRpb25BY3Rpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb25B
Y3Rpb24+IGNyZWF0ZShjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5m
byogdGFyZ2V0RnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IE5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJj
ZUZyYW1lLCB0YXJnZXRGcmFtZSwgcmVxdWVzdCwgb3JpZ2luYWxVUkwpKTsKKyAgICB9CisKKyAg
ICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJh
bWVJbmZvKiB0YXJnZXRGcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdpbmFsVVJMKQorICAgICAgICA6IG1fc291cmNl
RnJhbWUoc291cmNlRnJhbWUpCisgICAgICAgICwgbV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkK
KyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgLCBtX29yaWdpbmFsVVJMKG9y
aWdpbmFsVVJMKQorICAgICAgICAsIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEobmF2aWdhdGlvbkFj
dGlvbkRhdGEpCisgICAgeworICAgIH0KKworICAgIH5OYXZpZ2F0aW9uQWN0aW9uKCkKKyAgICB7
CisgICAgfQorCisgICAgRnJhbWVJbmZvKiBzb3VyY2VGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlRnJhbWUuZ2V0KCk7IH0KKyAgICBGcmFtZUluZm8qIHRhcmdldEZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXRGcmFtZS5nZXQoKTsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAg
Y29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
YWxVUkw7IH0KKworICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQor
ICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVy
biBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVyczsgfQorICAgIFdlYktpdDo6V2ViTW91
c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb3VzZUJ1dHRvbjsgfQorICAgIGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlOyB9CisgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0OyB9CisKK3ByaXZhdGU6Cisg
ICAgUmVmUHRyPEZyYW1lSW5mbz4gbV9zb3VyY2VGcmFtZTsKKyAgICBSZWZQdHI8RnJhbWVJbmZv
PiBtX3RhcmdldEZyYW1lOworCisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVz
dDsKKyAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5hbFVSTDsKKworICAgIFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEFQSQorCisjZW5kaWYgLy8gQVBJTmF2aWdhdGlvbkFjdGlvbl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25SZXNwb25zZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uUmVzcG9uc2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45MmM5ZjY2ZGJhOTA3MWIyMWJmMTViMzRkYWU3YTI2Mjg2ZGEzM2QwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uUmVzcG9u
c2UuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBUElOYXZpZ2F0aW9u
UmVzcG9uc2VfaAorI2RlZmluZSBBUElOYXZpZ2F0aW9uUmVzcG9uc2VfaAorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2Ns
YXNzIEZyYW1lSW5mbzsKKworY2xhc3MgTmF2aWdhdGlvblJlc3BvbnNlIGZpbmFsIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb25SZXNwb25zZT4gY3JlYXRlKEFQSTo6RnJhbWVJbmZv
JiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBjYW5TaG93TUlNRVR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOYXZpZ2F0aW9uUmVzcG9uc2Uo
ZnJhbWUsIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUpKTsKKyAgICB9CisKKyAg
ICBOYXZpZ2F0aW9uUmVzcG9uc2UoQVBJOjpGcmFtZUluZm8mIGZyYW1lLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBib29sIGNhblNob3dNSU1FVHlwZSkKKyAgICAgICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgICAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAsIG1fcmVzcG9uc2Uo
cmVzcG9uc2UpCisgICAgICAgICwgbV9jYW5TaG93TUlNRVR5cGUoY2FuU2hvd01JTUVUeXBlKQor
ICAgIHsKKyAgICB9CisKKyAgICB+TmF2aWdhdGlvblJlc3BvbnNlKCkKKyAgICB7CisgICAgfQor
CisgICAgRnJhbWVJbmZvJiBmcmFtZSgpIHsgcmV0dXJuIG1fZnJhbWUuZ2V0KCk7IH0KKworICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdDsgfQorICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZTsgfQorCisgICAgYm9vbCBjYW5TaG93TUlN
RVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhblNob3dNSU1FVHlwZTsgfQorCitwcml2YXRlOgor
ICAgIFJlZjxGcmFtZUluZm8+IG1fZnJhbWU7CisKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbV9yZXF1ZXN0OworICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsK
KyAgICBib29sIG1fY2FuU2hvd01JTUVUeXBlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisK
KyNlbmRpZiAvLyBBUElOYXZpZ2F0aW9uUmVzcG9uc2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KaW5kZXggNDY0Mjk1MTg0NTIzZmEx
NWY1MDk0MmZhNGZhZTEwMjA4MzIyOGE0NC4uZjkxOGM5YTY2OTdhZGE3OTc5M2Y4OWE4Yjg2ZDlk
MjFjNzEzYWI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRnJhbWVJbmZvLm1tCkBAIC0yOCwzNCArMjgsMjggQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVE
CiAKLSNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
K0BpbXBsZW1lbnRhdGlvbiBXS0ZyYW1lSW5mbwogCi1AaW1wbGVtZW50YXRpb24gV0tGcmFtZUlu
Zm8gewotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IF9yZXF1ZXN0OwotfQotCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhXZWJGcmFtZVByb3h5OihXZWJLaXQ6OldlYkZyYW1lUHJveHkmKXdl
YkZyYW1lUHJveHkKKy0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgX21haW5GcmFtZSA9IHdlYkZyYW1l
UHJveHkuaXNNYWluRnJhbWUoKTsKKyAgICBfZnJhbWVJbmZvLT5+RnJhbWVJbmZvKCk7CiAKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1l
LCBub3QganVzdCB0aGUgVVJMLgotICAgIF9yZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp3ZWJGcmFtZVByb3h5LnVybCgpXV07Ci0KLSAg
ICByZXR1cm4gc2VsZjsKKyAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
JUA6ICVwOyBpc01haW5GcmFtZSA9ICVzOyByZXF1ZXN0ID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xh
c3Moc2VsZi5jbGFzcyksIHNlbGYsIF9tYWluRnJhbWUgPyAiWUVTIiA6ICJOTyIsIF9yZXF1ZXN0
LmdldCgpXTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVw
OyBpc01haW5GcmFtZSA9ICVzOyByZXF1ZXN0ID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2Vs
Zi5jbGFzcyksIHNlbGYsIHNlbGYuaXNNYWluRnJhbWUgPyAiWUVTIiA6ICJOTyIsIHNlbGYucmVx
dWVzdF07Cit9CisKKy0gKEJPT0wpaXNNYWluRnJhbWUKK3sKKyAgICByZXR1cm4gX2ZyYW1lSW5m
by0+aXNNYWluRnJhbWUoKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAg
IHJldHVybiBfcmVxdWVzdC5nZXQoKTsKKyAgICByZXR1cm4gX2ZyYW1lSW5mby0+cmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkBAIC02Myw2ICs1NywxMyBAQAogICAgIHJldHVy
biBbc2VsZiByZXRhaW5dOwogfQogCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4g
Kl9mcmFtZUluZm87Cit9CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvSW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm9JbnRlcm5hbC5oCmluZGV4IGFh
NzkwN2E3OWE1Yzk2YmQzOTFjM2JhZGNjMzc1YWIyNDc0ZTEwMWIuLjM4MmVhOTEwYjBiZTdhNWFh
Mzk5MmJlNjczMWEyZjc0MTIyYTEwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm9JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm9JbnRlcm5hbC5oCkBAIC0yNywxNCArMjcs
MjQgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3Mg
V2ViRnJhbWVQcm94eTsKLX0KKyNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgorI2ltcG9ydCAiV0tP
YmplY3QuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBXS0ZyYW1lSW5mbyAqd3JhcHBl
cihBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKQoreworICAgIEFTU0VSVChbZnJhbWVJbmZvLndy
YXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS0ZyYW1lSW5mbyBjbGFzc11dKTsKIAotQGludGVyZmFj
ZSBXS0ZyYW1lSW5mbyAoKQorICAgIHJldHVybiAoV0tGcmFtZUluZm8gKilmcmFtZUluZm8ud3Jh
cHBlcigpOworfQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJGcmFtZVByb3h5OihXZWJL
aXQ6OldlYkZyYW1lUHJveHkmKXdlYkZyYW1lUHJveHk7Cit9CiAKK0BpbnRlcmZhY2UgV0tGcmFt
ZUluZm8gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxB
UEk6OkZyYW1lSW5mbz4gX2ZyYW1lSW5mbzsKK30KIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
Lm1tCmluZGV4IGM5NWQxNjJjODRmMGIwN2U1MmFlYmY0ZDJmMDk2M2JjMzQzZWY1MWIuLjZiYjU3
ZDE0Y2E3YmIzYmFiZjJhZTFkNzU4YzAzYjBiM2ZkMWJjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCkBA
IC0yOSwxNiArMjksMTAgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0ICJOYXZpZ2F0
aW9uQWN0aW9uRGF0YS5oIgorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gV0tOYXZpZ2F0aW9uQWN0aW9u
IHsKLSAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9zb3VyY2VGcmFtZTsKLSAgICBSZXRhaW5Q
dHI8V0tGcmFtZUluZm8+IF90YXJnZXRGcmFtZTsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0
PiBfcmVxdWVzdDsKLSAgICBSZXRhaW5QdHI8TlNVUkw+IF9vcmlnaW5hbFVSTDsKLSAgICBCT09M
IF91c2VySW5pdGlhdGVkOwotICAgIEJPT0wgX2NhbkhhbmRsZVJlcXVlc3Q7Ci19CitAaW1wbGVt
ZW50YXRpb24gV0tOYXZpZ2F0aW9uQWN0aW9uCiAKIHN0YXRpYyBXS05hdmlnYXRpb25UeXBlIHRv
V0tOYXZpZ2F0aW9uVHlwZShXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSkK
IHsKQEAgLTEwMyw4MiArOTcsNzcgQEAgc3RhdGljIE5TSW50ZWdlciB0b05TQnV0dG9uTnVtYmVy
KFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKQogfQogI2VuZGlmCiAK
LS0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhOYXZpZ2F0aW9uQWN0aW9uRGF0YTooY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYpbmF2aWdhdGlvbkFjdGlvbkRhdGEKKy0gKHZvaWQp
ZGVhbGxvYwogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1
cm4gbmlsOwotCi0gICAgX25hdmlnYXRpb25UeXBlID0gdG9XS05hdmlnYXRpb25UeXBlKG5hdmln
YXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKTsKLQotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBfbW9kaWZpZXJGbGFncyA9IHRvTlNFdmVudE1vZGlmaWVyRmxhZ3MobmF2aWdhdGlvbkFjdGlv
bkRhdGEubW9kaWZpZXJzKTsKLSAgICBfYnV0dG9uTnVtYmVyID0gdG9OU0J1dHRvbk51bWJlcihu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbik7Ci0jZW5kaWYKLQotICAgIF91c2VySW5p
dGlhdGVkID0gbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNQcm9jZXNzaW5nVXNlckdlc3R1cmU7Ci0g
ICAgX2NhbkhhbmRsZVJlcXVlc3QgPSBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5kbGVSZXF1
ZXN0OworICAgIF9uYXZpZ2F0aW9uQWN0aW9uLT5+TmF2aWdhdGlvbkFjdGlvbigpOwogCi0gICAg
cmV0dXJuIHNlbGY7CisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChOU1N0cmluZyAqKWRl
c2NyaXB0aW9uCiB7CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVA
OiAlcDsgbmF2aWdhdGlvblR5cGUgPSAlbGQ7IHJlcXVlc3QgPSAlQDsgc291cmNlRnJhbWUgPSAl
QDsgdGFyZ2V0RnJhbWUgPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2Vs
ZiwKLSAgICAgICAgKGxvbmcpX25hdmlnYXRpb25UeXBlLCBfcmVxdWVzdC5nZXQoKSwgX3NvdXJj
ZUZyYW1lLmdldCgpLCBfdGFyZ2V0RnJhbWUuZ2V0KCldOworICAgICAgICAobG9uZylzZWxmLm5h
dmlnYXRpb25UeXBlLCBzZWxmLnJlcXVlc3QsIHNlbGYuc291cmNlRnJhbWUsIHNlbGYudGFyZ2V0
RnJhbWVdOwogfQogCiAtIChXS0ZyYW1lSW5mbyAqKXNvdXJjZUZyYW1lCiB7Ci0gICAgcmV0dXJu
IF9zb3VyY2VGcmFtZS5nZXQoKTsKLX0KLQotLSAodm9pZClzZXRTb3VyY2VGcmFtZTooV0tGcmFt
ZUluZm8gKilzb3VyY2VGcmFtZQotewotICAgIF9zb3VyY2VGcmFtZSA9IGFkb3B0TlMoW3NvdXJj
ZUZyYW1lIGNvcHldKTsKKyAgICBpZiAoQVBJOjpGcmFtZUluZm8qIGZyYW1lSW5mbyA9IF9uYXZp
Z2F0aW9uQWN0aW9uLT5zb3VyY2VGcmFtZSgpKQorICAgICAgICByZXR1cm4gd3JhcHBlcigqZnJh
bWVJbmZvKTsKKyAgICByZXR1cm4gbmlsOwogfQogCiAtIChXS0ZyYW1lSW5mbyAqKXRhcmdldEZy
YW1lCiB7Ci0gICAgcmV0dXJuIF90YXJnZXRGcmFtZS5nZXQoKTsKKyAgICBpZiAoQVBJOjpGcmFt
ZUluZm8qIGZyYW1lSW5mbyA9IF9uYXZpZ2F0aW9uQWN0aW9uLT50YXJnZXRGcmFtZSgpKQorICAg
ICAgICByZXR1cm4gd3JhcHBlcigqZnJhbWVJbmZvKTsKKyAgICByZXR1cm4gbmlsOwogfQogCi0t
ICh2b2lkKXNldFRhcmdldEZyYW1lOihXS0ZyYW1lSW5mbyAqKXRhcmdldEZyYW1lCistIChXS05h
dmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlCiB7Ci0gICAgX3RhcmdldEZyYW1lID0gYWRvcHRO
UyhbdGFyZ2V0RnJhbWUgY29weV0pOworICAgIHJldHVybiB0b1dLTmF2aWdhdGlvblR5cGUoX25h
dmlnYXRpb25BY3Rpb24tPm5hdmlnYXRpb25UeXBlKCkpOwogfQogCiAtIChOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9yZXF1ZXN0LmdldCgpOworICAgIHJldHVybiBfbmF2
aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpEb05vdFVwZGF0
ZUhUVFBCb2R5KTsKIH0KIAotLSAodm9pZClzZXRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0CistIChOU0V2ZW50TW9kaWZpZXJGbGFncyltb2RpZmllckZsYWdzCiB7Ci0gICAgX3JlcXVl
c3QgPSBhZG9wdE5TKFtyZXF1ZXN0IGNvcHldKTsKKyAgICByZXR1cm4gdG9OU0V2ZW50TW9kaWZp
ZXJGbGFncyhfbmF2aWdhdGlvbkFjdGlvbi0+bW9kaWZpZXJzKCkpOwogfQogCi0tICh2b2lkKV9z
ZXRPcmlnaW5hbFVSTDooTlNVUkwgKilvcmlnaW5hbFVSTAorLSAoTlNJbnRlZ2VyKWJ1dHRvbk51
bWJlcgogewotICAgIF9vcmlnaW5hbFVSTCA9IGFkb3B0TlMoW29yaWdpbmFsVVJMIGNvcHldKTsK
KyAgICByZXR1cm4gdG9OU0J1dHRvbk51bWJlcihfbmF2aWdhdGlvbkFjdGlvbi0+bW91c2VCdXR0
b24oKSk7CiB9CiAKLS0gKE5TVVJMICopX29yaWdpbmFsVVJMCisjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKLSAgICByZXR1cm4gX29yaWdpbmFsVVJMLmdldCgpOworICAgIHJldHVybiAqX25hdmlnYXRp
b25BY3Rpb247CiB9CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFjdGlv
biAoV0tQcml2YXRlKQogCistIChOU1VSTCAqKV9vcmlnaW5hbFVSTAoreworICAgIHJldHVybiBf
bmF2aWdhdGlvbkFjdGlvbi0+b3JpZ2luYWxVUkwoKTsKK30KKwogLSAoQk9PTClfaXNVc2VySW5p
dGlhdGVkCiB7Ci0gICAgcmV0dXJuIF91c2VySW5pdGlhdGVkOworICAgIHJldHVybiBfbmF2aWdh
dGlvbkFjdGlvbi0+aXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKTsKIH0KIAogLSAoQk9PTClfY2Fu
SGFuZGxlUmVxdWVzdAogewotICAgIHJldHVybiBfY2FuSGFuZGxlUmVxdWVzdDsKKyAgICByZXR1
cm4gX25hdmlnYXRpb25BY3Rpb24tPmNhbkhhbmRsZVJlcXVlc3QoKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25B
Y3Rpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05h
dmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oCmluZGV4IDQzOWIyZmI2ZGI0NGRhNDQzYmFmNGRjNGJh
YjI0ZjZiYTBmMjlmNjAuLmE5NTlkNWQ5Y2NlY2I3NjUwMjVjZTllMzEwZTM0NjBlZWEyOWM0ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkFjdGlvbkludGVybmFsLmgKQEAgLTI3LDIzICsyNywyNCBAQAogCiAj
aWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
CisjaW1wb3J0ICJBUElOYXZpZ2F0aW9uQWN0aW9uLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgog
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLXN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTsKLX0KLQot
QGludGVyZmFjZSBXS05hdmlnYXRpb25BY3Rpb24gKCkKLQotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWR3cml0ZSwgY29weSkgV0tGcmFtZUluZm8gKnNvdXJjZUZyYW1lOwotQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWR3cml0ZSwgY29weSkgV0tGcmFtZUluZm8gKnRhcmdldEZyYW1lOworbmFt
ZXNwYWNlIEFQSSB7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGNvcHkpIE5T
VVJMUmVxdWVzdCAqcmVxdWVzdDsKK2lubGluZSBXS05hdmlnYXRpb25BY3Rpb24gKndyYXBwZXIo
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQoreworICAgIEFTU0VSVChb
bmF2aWdhdGlvbkFjdGlvbi53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbV0tOYXZpZ2F0aW9uQWN0
aW9uIGNsYXNzXV0pOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBjb3B5LCBz
ZXR0ZXI9X3NldE9yaWdpbmFsVVJMOikgTlNVUkwgKl9vcmlnaW5hbFVSTDsKKyAgICByZXR1cm4g
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24ud3JhcHBlcigpOworfQogCi0t
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTmF2aWdhdGlvbkFjdGlvbkRhdGE6KGNvbnN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmKW5hdmlnYXRpb25BY3Rpb25EYXRhOworfQogCitAaW50
ZXJmYWNlIFdLTmF2aWdhdGlvbkFjdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAg
QVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gX25hdmlnYXRpb25BY3Rp
b247Cit9CiBAZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0KaW5kZXggNGZlOTdlZjZk
OGRjODJjOTI1NDBhZjk4NzA1MjNjOGI1Njg0M2NhMC4uMDI4OTcxMGUzMzg3MDc0ZGY3NDFiZmMx
MzAwNzUzYTc4YWE3ZGJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLm1tCkBAIC0yOCwzMSArMjgsNDIg
QEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bXBvcnQgIldLRnJhbWVJbmZvLmgiCisjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAK
LUBpbXBsZW1lbnRhdGlvbiBXS05hdmlnYXRpb25SZXNwb25zZSB7Ci0gICAgUmV0YWluUHRyPE5T
VVJMUmVzcG9uc2U+IF9yZXNwb25zZTsKK0BpbXBsZW1lbnRhdGlvbiBXS05hdmlnYXRpb25SZXNw
b25zZQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfbmF2aWdhdGlvblJlc3BvbnNlLT5+TmF2
aWdhdGlvblJlc3BvbnNlKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKIC0gKE5TU3Ry
aW5nICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8JUA6ICVwOyByZXNwb25zZSA9ICVAPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xh
c3MpLCBzZWxmLCBfcmVzcG9uc2UuZ2V0KCldOworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIjwlQDogJXA7IHJlc3BvbnNlID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
c2VsZi5jbGFzcyksIHNlbGYsIHNlbGYucmVzcG9uc2VdOwogfQogCiAtIChCT09MKWlzRm9yTWFp
bkZyYW1lCiB7Ci0gICAgcmV0dXJuIFtfZnJhbWUgaXNNYWluRnJhbWVdOworICAgIHJldHVybiBf
bmF2aWdhdGlvblJlc3BvbnNlLT5mcmFtZSgpLmlzTWFpbkZyYW1lKCk7CiB9CiAKIC0gKE5TVVJM
UmVzcG9uc2UgKilyZXNwb25zZQogewotICAgIHJldHVybiBfcmVzcG9uc2UuZ2V0KCk7CisgICAg
cmV0dXJuIF9uYXZpZ2F0aW9uUmVzcG9uc2UtPnJlc3BvbnNlKCkubnNVUkxSZXNwb25zZSgpOwog
fQogCi0tICh2b2lkKXNldFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKKy0gKEJP
T0wpY2FuU2hvd01JTUVUeXBlCit7CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9uUmVzcG9uc2UtPmNh
blNob3dNSU1FVHlwZSgpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICBfcmVzcG9u
c2UgPSBhZG9wdE5TKFtyZXNwb25zZSBjb3B5XSk7CisgICAgcmV0dXJuICpfbmF2aWdhdGlvblJl
c3BvbnNlOwogfQogCiBAZW5kCkBAIC02MSwxMiArNzIsMTIgQEAKIAogLSAoV0tGcmFtZUluZm8g
KilfZnJhbWUKIHsKLSAgICByZXR1cm4gX2ZyYW1lLmdldCgpOworICAgIHJldHVybiB3cmFwcGVy
KF9uYXZpZ2F0aW9uUmVzcG9uc2UtPmZyYW1lKCkpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilf
cmVxdWVzdAogewotICAgIHJldHVybiBfcmVxdWVzdC5nZXQoKTsKKyAgICByZXR1cm4gX25hdmln
YXRpb25SZXNwb25zZS0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpEb05vdFVwZGF0
ZUhUVFBCb2R5KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlSW50ZXJuYWwuaApp
bmRleCAwZThkM2E4NDdmNjZhYTc5M2MxMzEyMWYyODkyZDZmZTcyYjI5NzJhLi4yZjY5NjQ1Y2Vh
YTc3OGQ5NTU3OTlmOTkxN2RmYTEzNzFmMTlhNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNl
SW50ZXJuYWwuaApAQCAtMjcsMTcgKzI3LDI0IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0j
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0ICJBUElOYXZpZ2F0aW9uUmVzcG9uc2Uu
aCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCiAKLUBpbnRlcmZhY2UgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKCkgewotQHBhY2thZ2UKLSAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IF9mcmFtZTsKLSAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBfcmVxdWVzdDsKK25hbWVzcGFjZSBBUEkgeworCitp
bmxpbmUgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKndyYXBwZXIoQVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2UmIG5hdmlnYXRpb25SZXNwb25zZSkKK3sKKyAgICBBU1NFUlQoW25hdmlnYXRpb25SZXNwb25z
ZS53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbV0tOYXZpZ2F0aW9uUmVzcG9uc2UgY2xhc3NdXSk7
CisKKyAgICByZXR1cm4gKFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNl
LndyYXBwZXIoKTsKIH0KIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgY29weSkg
TlNVUkxSZXNwb25zZSAqcmVzcG9uc2U7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRl
KSBCT09MIGNhblNob3dNSU1FVHlwZTsKK30KIAorQGludGVyZmFjZSBXS05hdmlnYXRpb25SZXNw
b25zZSAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQ
STo6TmF2aWdhdGlvblJlc3BvbnNlPiBfbmF2aWdhdGlvblJlc3BvbnNlOworfQogQGVuZAogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tCmluZGV4IDU5M2YzNjY1MmM0NzRkNDY3ZjVm
MTU3NWVlMjUwZDMwYTIyNDFkOTQuLjgwYWJkZDQxNjI2ODJjMzM3ODcyMmVkYjc3YjE2NzExM2Q3
MjU0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
c2VyQ29udGVudENvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VzZXJDb250ZW50Q29udHJvbGxlci5tbQpAQCAtODYsNyArODYsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKICAgICB7Ci0gICAgICAg
IFJldGFpblB0cjxXS0ZyYW1lSW5mbz4gZnJhbWVJbmZvID0gYWRvcHROUyhbW1dLRnJhbWVJbmZv
IGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lUHJveHk6ZnJhbWVdKTsKKyAgICAgICAgUmV0YWluUHRy
PFdLRnJhbWVJbmZvPiBmcmFtZUluZm8gPSB3cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
ZnJhbWUpKTsKIAogICAgICAgICBSZXRhaW5QdHI8SlNDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRO
UyhbW0pTQ29udGV4dCBhbGxvY10gaW5pdF0pOwogICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlUmVm
ID0gc2VyaWFsaXplZFNjcmlwdFZhbHVlLmRlc2VyaWFsaXplKFtjb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KaW5kZXggMzRmNDA5ZTUzZDZkNmI4NmVkYWUzZjYzZWI5NTIzMzg5YTEw
ZjkxMi4uNmE3YTE0NDkxNjZhY2Q5YzRjNTU5ZTdjYjUxODE3NTNiNGQ2ZDIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC0y
OCw3ICsyOCw5IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0ICJBUElGcmFtZUlu
Zm8uaCIKICNpbXBvcnQgIkFQSU5hdmlnYXRpb25EYXRhLmgiCisjaW1wb3J0ICJBUElOYXZpZ2F0
aW9uUmVzcG9uc2UuaCIKICNpbXBvcnQgIkFQSVN0cmluZy5oIgogI2ltcG9ydCAiQVBJVVJMLmgi
CiAjaW1wb3J0ICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKQEAgLTIyNCw5ICsy
MjYsOSBAQCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6flBvbGljeUNsaWVudCgpCiAK
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSogZGVzdGluYXRpb25GcmFt
ZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJG
cmFtZVByb3h5KiBzb3VyY2VGcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
UmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewotICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zVVJMUmVxdWVzdCA9
IGFkb3B0TlMod3JhcHBlcigqQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdCkubGVha1Jl
ZigpKSk7Ci0KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFu
ZGxlcikgeworICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBh
ZG9wdE5TKHdyYXBwZXIoKkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYo
KSkpOworCiAgICAgICAgIGlmICghZGVzdGluYXRpb25GcmFtZSkgewogICAgICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjUxLDI0ICsyNTMsMjIgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJQYWdlUHJveHkKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gYWRvcHROUyhbW1dL
TmF2aWdhdGlvbkFjdGlvbiBhbGxvY10gX2luaXRXaXRoTmF2aWdhdGlvbkFjdGlvbkRhdGE6bmF2
aWdhdGlvbkFjdGlvbkRhdGFdKTsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IGRlc3RpbmF0
aW9uRnJhbWVJbmZvOworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZv
OwogCiAgICAgaWYgKGRlc3RpbmF0aW9uRnJhbWUpCi0gICAgICAgIFtuYXZpZ2F0aW9uQWN0aW9u
IHNldFRhcmdldEZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJG
cmFtZVByb3h5OipkZXN0aW5hdGlvbkZyYW1lXSkuZ2V0KCldOworICAgICAgICBkZXN0aW5hdGlv
bkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKmRlc3RpbmF0aW9uRnJhbWUpOwog
Ci0gICAgaWYgKHNvdXJjZUZyYW1lKSB7Ci0gICAgICAgIGlmIChzb3VyY2VGcmFtZSA9PSBkZXN0
aW5hdGlvbkZyYW1lKQotICAgICAgICAgICAgW25hdmlnYXRpb25BY3Rpb24gc2V0U291cmNlRnJh
bWU6W25hdmlnYXRpb25BY3Rpb24gdGFyZ2V0RnJhbWVdXTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgW25hdmlnYXRpb25BY3Rpb24gc2V0U291cmNlRnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJ
bmZvIGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lUHJveHk6KnNvdXJjZUZyYW1lXSkuZ2V0KCldOwot
ICAgIH0KKyAgICBpZiAoc291cmNlRnJhbWUgPT0gZGVzdGluYXRpb25GcmFtZSkKKyAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm87CisgICAgZWxzZSBpZiAoc291
cmNlRnJhbWUpCisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoKnNvdXJjZUZyYW1lKTsKIAotICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFJlcXVlc3Q6bnNV
UkxSZXF1ZXN0LmdldCgpXTsKLSAgICBbbmF2aWdhdGlvbkFjdGlvbiBfc2V0T3JpZ2luYWxVUkw6
b3JpZ2luYWxSZXF1ZXN0LnVybCgpXTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc291cmNlRnJh
bWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5nZXQoKSwgcmVxdWVzdCwgb3JpZ2lu
YWxSZXF1ZXN0LnVybCgpKTsKIAogICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+IGxvY2FsTGlzdGVuZXIgPSBXVEY6Om1vdmUobGlzdGVuZXIpOwogICAgIFJlZlB0cjxDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0g
ICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOm5hdmlnYXRpb25BY3Rpb24uZ2V0KCkg
ZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3kgYWN0aW9uUG9saWN5KSB7CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3Rl
bmVyLCBjaGVja2VyXShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0aW9uUG9saWN5KSB7CiAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgICAgIHN3
aXRjaCAoYWN0aW9uUG9saWN5KSB7CkBAIC0zMjIsMTYgKzMyMiwxMSBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJv
eHkmLCBXZWJGcgogICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IGFkb3B0TlMoW1tXS05hdmlnYXRpb25S
ZXNwb25zZSBhbGxvY10gaW5pdF0pOwotCi0gICAgbmF2aWdhdGlvblJlc3BvbnNlLT5fZnJhbWUg
PSBhZG9wdE5TKFtbV0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRoV2ViRnJhbWVQcm94eTpmcmFt
ZV0pOwotICAgIG5hdmlnYXRpb25SZXNwb25zZS0+X3JlcXVlc3QgPSByZXNvdXJjZVJlcXVlc3Qu
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwotICAgIFtuYXZpZ2F0
aW9uUmVzcG9uc2Ugc2V0UmVzcG9uc2U6cmVzb3VyY2VSZXNwb25zZS5uc1VSTFJlc3BvbnNlKCld
OwotICAgIFtuYXZpZ2F0aW9uUmVzcG9uc2Ugc2V0Q2FuU2hvd01JTUVUeXBlOmNhblNob3dNSU1F
VHlwZV07CisgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoZnJhbWUpLmdldCgpLCByZXNvdXJj
ZVJlcXVlc3QsIHJlc291cmNlUmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSk7CiAKICAgICBSZWZQ
dHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsb2NhbExpc3RlbmVyID0gV1RGOjptb3Zl
KGxpc3RlbmVyKTsKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hl
Y2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6bmF2aWdhdGlvblJlc3BvbnNlLmdldCgpIGRlY2lzaW9uSGFuZGxlcjpbbG9jYWxM
aXN0ZW5lciwgY2hlY2tlcl0oV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgcmVzcG9uc2VQb2xp
Y3kpIHsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmln
YXRpb25SZXNwb25zZSkgZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBjaGVja2VyXShX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSByZXNwb25zZVBvbGljeSkgewogICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgICAgICBzd2l0Y2ggKHJlc3Bv
bnNlUG9saWN5KSB7CkBAIC00MjYsNyArNDIxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Okxv
YWRlckNsaWVudDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlAK
ICAgICAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0
dGVtcHRlciA9IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldywgd2ViRnJhbWVQcm94eSwgZXJyb3IpOwogICAgICAgICAvLyBGSVhNRTog
R2V0IHRoZSBtYWluIGZyYW1lJ3MgY3VycmVudCBuYXZpZ2F0aW9uLgotICAgICAgICBbKGlkIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEluU3ViZnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJbmZvIGFsbG9jXSBpbml0V2l0aFdl
YkZyYW1lUHJveHk6d2ViRnJhbWVQcm94eV0pLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNv
dmVyeUF0dGVtcHRlci5nZXQoKV07CisgICAgICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBuYXZpZ2F0aW9uOm5pbCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUod2ViRnJhbWVQcm94eSkpIHdpdGhFcnJvcjpl
cnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXgg
ZTg3YWY0OWRiMDE1NWVhOGE2MDU5Njk3ODY1NzdlODhlYzcwZTVhYy4uODE3NWE3ZWYwZWQxZTk2
ZjQ2ZDVmZjYzYjRmZjBkY2NlYWEwM2JhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMiwxMiArMTAyLDEwIEBAIFBhc3NSZWZQdHI8V2Vi
S2l0OjpXZWJQYWdlUHJveHk+IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdl
YktpdDo6V2ViCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbbV91aURlbGVnYXRl
Lm1fd2ViVmlldy0+X2NvbmZpZ3VyYXRpb24gY29weV0pOwogICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRSZWxhdGVkV2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKIAotICAgIGF1dG8gbmF2
aWdhdGlvbkFjdGlvbiA9IGFkb3B0TlMoW1tXS05hdmlnYXRpb25BY3Rpb24gYWxsb2NdIF9pbml0
V2l0aE5hdmlnYXRpb25BY3Rpb25EYXRhOm5hdmlnYXRpb25BY3Rpb25EYXRhXSk7CisgICAgYXV0
byBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCppbml0aWF0aW5nRnJh
bWUpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzb3VyY2VGcmFtZUluZm8ucHRyKCksIG51bGxw
dHIsIHJlcXVlc3QsIFdlYkNvcmU6OlVSTCgpKTsKIAotICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNl
dFNvdXJjZUZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJGcmFt
ZVByb3h5Oippbml0aWF0aW5nRnJhbWVdKS5nZXQoKV07Ci0gICAgW25hdmlnYXRpb25BY3Rpb24g
c2V0UmVxdWVzdDpyZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpEb05vdFVwZGF0ZUhUVFBC
b2R5KV07Ci0KLSAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gW2RlbGVnYXRlLmdl
dCgpIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOm5hdmlnYXRp
b25BY3Rpb24uZ2V0KCkgd2luZG93RmVhdHVyZXM6YWRvcHROUyhbW1dLV2luZG93RmVhdHVyZXMg
YWxsb2NdIF9pbml0V2l0aFdpbmRvd0ZlYXR1cmVzOndpbmRvd0ZlYXR1cmVzXSkuZ2V0KCldOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBbZGVsZWdhdGUuZ2V0KCkgd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9u
QWN0aW9uKSB3aW5kb3dGZWF0dXJlczphZG9wdE5TKFtbV0tXaW5kb3dGZWF0dXJlcyBhbGxvY10g
X2luaXRXaXRoV2luZG93RmVhdHVyZXM6d2luZG93RmVhdHVyZXNdKS5nZXQoKV07CiAKICAgICBp
ZiAoIXdlYlZpZXcpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTMyLDcgKzEzMCw3IEBA
IHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSosIGNvbnN0IFdURjo6CiAgICAgfQogCiAgICAgUmVmUHRyPENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRB
bGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjop
KTsKLSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFT
Y3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOmFkb3B0
TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJGcmFtZVByb3h5Oip3ZWJGcmFtZVBy
b3h5XSkuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W2NvbXBsZXRpb25IYW5kbGVyLCBjaGVja2Vy
XSB7CisgICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZh
U2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFw
cGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHkpKSBjb21wbGV0aW9uSGFu
ZGxlcjpbY29tcGxldGlvbkhhbmRsZXIsIGNoZWNrZXJdIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfV07CkBAIC0xNTIsNyArMTUwLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVu
SmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEYKICAgICB9
CiAKICAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShkZWxlZ2F0ZS5nZXQoKSwgQHNlbGVj
dG9yKHdlYlZpZXc6cnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRl
ZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6
bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5p
dFdpdGhXZWJGcmFtZVByb3h5Oip3ZWJGcmFtZVByb3h5XSkuZ2V0KCkgY29tcGxldGlvbkhhbmRs
ZXI6W2NvbXBsZXRpb25IYW5kbGVyLCBjaGVja2VyXShCT09MIHJlc3VsdCkgeworICAgIFtkZWxl
Z2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1Q
YW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTp3cmFwcGVyKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHkpKSBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxl
dGlvbkhhbmRsZXIsIGNoZWNrZXJdKEJPT0wgcmVzdWx0KSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHJlc3VsdCk7CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH1dOwpAQCAtMTcyLDcgKzE3MCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OnJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
CiAgICAgfQogCiAgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNr
ZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCks
IEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQcm9tcHQ6
ZGVmYXVsdFRleHQ6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBb
ZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0
SW5wdXRQYW5lbFdpdGhQcm9tcHQ6bWVzc2FnZSBkZWZhdWx0VGV4dDpkZWZhdWx0VmFsdWUgaW5p
dGlhdGVkQnlGcmFtZTphZG9wdE5TKFtbV0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRoV2ViRnJh
bWVQcm94eToqd2ViRnJhbWVQcm94eV0pLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltjb21wbGV0
aW9uSGFuZGxlciwgY2hlY2tlcl0oTlNTdHJpbmcgKnJlc3VsdCkgeworICAgIFtkZWxlZ2F0ZSB3
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVs
V2l0aFByb21wdDptZXNzYWdlIGRlZmF1bHRUZXh0OmRlZmF1bHRWYWx1ZSBpbml0aWF0ZWRCeUZy
YW1lOndyYXBwZXIoQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqd2ViRnJhbWVQcm94eSkpIGNvbXBs
ZXRpb25IYW5kbGVyOltjb21wbGV0aW9uSGFuZGxlciwgY2hlY2tlcl0oTlNTdHJpbmcgKnJlc3Vs
dCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOwogICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMTIzNmY4NGZhMTE2
YTEyOWNlYTliNjVjNDcyMDUzN2MwMDU2ZGZlLi4wYTI4ZDQwOTE1YzdiNTFlMWU2OGQwZDJmZTNm
NGIxODk2YjQ1MjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yNTMsNyArMjUzLDYgQEAKIAkJMUE0RDY2NDgxOEEyRDkxQTAw
RDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAq
LzsgfTsKIAkJMUE0RDY2NEIxOEEzMDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0RDY2NDkxOEEzMDMw
RTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLm1tICovOyB9OwogCQkxQTRENjY0QzE4QTMwMzBFMDBE
ODJFMjEgLyogV0tGcmFtZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNEQ2NjRBMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKLQkJMUE0RDY2NEUx
OEEzMDMxQjAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEQ2NjREMThBMzAzMUIwMEQ4MkUyMSAv
KiBXS0ZyYW1lSW5mb0ludGVybmFsLmggKi87IH07CiAJCTFBNTBEQjY2MTEwQTNENTcwMDBEM0ZF
NSAvKiBXZWJQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNTBEQjFFMTEwQTNCREMwMDBEM0ZFNSAvKiBXZWJQcm9jZXNzLmFwcCAq
LzsgfTsKIAkJMUE1MkMwRjcxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTUyQzBGNTFBMzhDREM3MDAxNjE2MEEgLyogV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmNwcCAqLzsgfTsKIAkJMUE1MkMwRjgxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE1MkMwRjYxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oICovOyB9OwpAQCAtNjQ4LDYgKzY0NywxMSBAQAogCQkyREU2OTQzRDE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQjE4
QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJMkRGOTU5M0IxOEE0MjQxMjAw
OTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CisJCTJERjlFRUU1MUE3ODFGQjQwMEI2
Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRGOUVFRTMxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5j
cHAgKi87IH07CisJCTJERjlFRUU2MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUU0MUE3
ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLzsgfTsKKwkJMkRGOUVFRTgxQTc4MjQ1
NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0Zy
YW1lSW5mb0ludGVybmFsLmggKi87IH07CisJCTJERjlFRUVDMUE3ODM2RUUwMEI2Q0ZCRSAvKiBB
UElOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlv
bi5oICovOyB9OworCQkyREY5RUVFRTFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJl
c3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi87IH07
CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NzEx
NDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi87IH07CiAJCTMx
MDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUw
MDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJMzEyQzBDNEExNDZE
REM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAv
KiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIyODcsNyArMjI5MSw2IEBACiAJCTFBNEQ2NjQ3MThBMkQ5
MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElVSUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTRENjY0
OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZyYW1lSW5mby5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUE0RDY2NEExOEEzMDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFBNEQ2NjREMThBMzAzMUIwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mb0lu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVJbmZvSW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0Rjk3NkExMDBFN0I2NjAw
NjM3QTE4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0g
QmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0Rjk3NkIxMDBF
N0I2NjAwNjM3QTE4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBNEY5NzZDMTAwRTdCNjYwMDYzN0ExOCAvKiBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3MzUsNiArMjczOCwxMSBAQAog
CQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0
TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0MjQxMjAwOTc4NUExIC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgcGF0aCA9IGlvcy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERjlFRUUz
MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQVBJRnJhbWVJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGcmFtZUluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkRGOUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZv
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGcmFtZUluZm9J
bnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREY5RUVFQTFBNzgzNkVF
MDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElOYXZpZ2F0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJERjlFRUVEMUE3ODZFQUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uUmVzcG9uc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJTmF2aWdhdGlvblJlc3BvbnNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQzBDNDkxNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZp
Y2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tOb3Rp
ZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTIxMyw3
ICs1MjIxLDcgQEAKIAkJCQkzN0I1MDQ1MTE5RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZh
dGUuaCAqLywKIAkJCQkxQTRENjY0QTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAq
LywKIAkJCQkxQTRENjY0OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCi0J
CQkJMUE0RDY2NEQxOEEzMDMxQjAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywK
KwkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICov
LAogCQkJCTFBNDIyRjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZh
dGUuaCAqLywKIAkJCQkxQTVCMUM0RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmgg
Ki8sCiAJCQkJMUE1QjFDNEUxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5tbSAqLywK
QEAgLTYxMTAsMTIgKzYxMTgsMTYgQEAKIAkJCQkxRjdEMzZDMDE4REE1MTNGMDBEOUQ2NTkgLyog
QVBJRG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQkwMEI5NjYxNTE4RTI0Q0JBMDBDRTFGODggLyog
QVBJRmluZENsaWVudC5oICovLAogCQkJCTM3RTI1RDZEMThGREU1RDYwMDVEM0EwMCAvKiBBUElG
b3JtQ2xpZW50LmggKi8sCisJCQkJMkRGOUVFRTMxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1l
SW5mby5jcHAgKi8sCisJCQkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5m
by5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBMjQ2NEYyMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElM
b2FkZXJDbGllbnQuaCAqLywKIAkJCQk3Q0QzQTQ4MDFBNUQwMkZBMDA5NjIzQjggLyogQVBJTmF2
aWdhdGlvbi5jcHAgKi8sCiAJCQkJN0NEM0E0ODExQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmln
YXRpb24uaCAqLywKKwkJCQkyREY5RUVFQTFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlv
bkFjdGlvbi5oICovLAogCQkJCUJDRjY5RkExMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0
aW9uRGF0YS5jcHAgKi8sCiAJCQkJQkNGNjlGQTAxMTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmln
YXRpb25EYXRhLmggKi8sCisJCQkJMkRGOUVFRUQxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmln
YXRpb25SZXNwb25zZS5oICovLAogCQkJCTdDODlEMjk1MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQ
YWdlQ29uZmlndXJhdGlvbi5jcHAgKi8sCiAJCQkJN0M4OUQyOTYxQTY3NTNCMjAwM0E1RkRFIC8q
IEFQSVBhZ2VDb25maWd1cmF0aW9uLmggKi8sCiAJCQkJMUFGREQzMTQxODkxQjU0MDAwMTUzOTcw
IC8qIEFQSVBvbGljeUNsaWVudC5oICovLApAQCAtNzQ5Niw2ICs3NTA4LDcgQEAKIAkJCQlDMENF
NzJBRDEyNDdFNzhEMDBCQzBFQzQgLyogSGFuZGxlTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNzUwOTVBMTg5NzI0OTcwMDQwOEZBQyAvKiBJREJJZGVudGlm
aWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREY5RUVFODFBNzgyNDU1MDBCNkNGQkUgLyogV0tG
cmFtZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4MzUzREIxODg1QkY4QzAw
RDlGRTQ0IC8qIElEQlNlcmlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNC
MTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
Q0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLApA
QCAtNzY0Myw2ICs3NjU2LDcgQEAKIAkJCQkyRERFMEFGQTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVt
b3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUYxQUM2
QzE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxQjc4NDcxMTYzRjI0NjkwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRGOUVFRTYxQTc4MUZCNDAwQjZDRkJFIC8q
IEFQSUZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODAxODU5MEFFNDAwRjNF
QzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUMxMzM4
NjE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY1OTQ3OTAxODdCM0IzQTAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NzgsNiArNzc5Miw3IEBACiAJCQkJ
QkMxQkUxRTAxMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzBFNUZFNTEyRDY5NzE2MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25N
YW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzBFNjA2MjEyRDZCQTkxMDAxMkE3MkEgLyog
V2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERjlF
RUVDMUE3ODM2RUUwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzU0Q0FDQjEyRDY0MjkxMDA1QzY3QjAgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2Vy
UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMEU2MTgzMTJENkNCMUQwMDEyQTcyQSAvKiBX
ZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzBFNjA3MzEyRDZCQzIwMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC04MDA4LDcgKzgwMjMsNiBAQAogCQkJCTM3REZBNzAwMTgxMEJCOTIwMDFG
NEE5RiAvKiBXS0ZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDAxMzlCMTEwRkE0
MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRENjY0QzE4QTMw
MzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNEQ2NjRF
MThBMzAzMUIwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0I5RjZBNTExMjNERDBEMDBBMTM3RTAgLyogV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUFFQTIyRjE0Njg3QkRCMDA4MDQ1NjkgLyogV0tGdWxsS2V5
Ym9hcmRBY2Nlc3NXYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENBODVDOTEzMkFCQTRF
MDBFOTYxREYgLyogV0tGdWxsU2NyZWVuV2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC04MTAyLDYgKzgxMTYsNyBAQAogCQkJCTFBM0NDMTY5MTg5MDdFQjAwMDFFNkVEOCAvKiBX
S1Byb2Nlc3NQb29sSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjUwOUNFMThCNDE0
NjIwMDYxNDMzMiAvKiBXS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkyREY5RUVFRTFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQ
cm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQ0QxOTA1RDU0
OTAwQzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTlFMzI5QjE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3Qu
aCBpbiBIZWFkZXJzICovLApAQCAtOTI1NCw2ICs5MjY5LDcgQEAKIAkJCQkxQUJDM0RGNTE4OTlF
NDM3MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2
RkJBMkIxMUU2ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBNkZCRDI5MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyREY5RUVFNTFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJh
bWVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTVCN0ZCMTFFN0FFRDIwMEJBNjc2NyAv
KiBOZXRzY2FwZVBsdWdpbk1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEE5QzU1MTJCODE2
Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTRBOUM5QTEyQjgyMUNEMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0g
aW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245529</attachid>
            <date>2015-01-28 03:11:47 -0800</date>
            <delta_ts>2015-01-28 11:58:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140982-20150128031151.patch</filename>
            <type>text/plain</type>
            <size>50113</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2M1ODMxNTk0ZjU1Y2Yw
ZTRkZGJiOTcxNzIzMTQ0OGMyNjVlY2M1NS4uODIwMGNmYWZkZWFjNDhiYjE5ZWQ1NzJkNGYxMzI1
ZDkyMWZmMGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTAxLTI4ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBBUEk6OntG
cmFtZUluZm8sIE5hdmlnYXRpb25BY3Rpb24sIE5hdmlnYXRpb25SZXNwb25zZX0gdHlwZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDk4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQysrIEFQ
SSBvYmplY3RzIGZvciBXS3tGcmFtZUluZm8sIE5hdmlnYXRpb25BY3Rpb24sIE5hdmlnYXRpb25S
ZXNwb25zZX0KKyAgICAgICAgdG8gd3JhcCBhcm91bmQsIGFzIGEgc3RlcCB0b3dhcmRzIG1vdmlu
ZyBNb2Rlcm4gQVBJIGxvZ2ljIGRvd24gaW50byBXZWJQYWdlUHJveHkuCisKKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUZyYW1lSW5mby5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJRnJhbWVJbmZvLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25SZXNwb25zZS5oOiBBZGRlZC4KKyAgICAgICAgQWRkIEFQSTo6RnJhbWVJbmZvLCBBUEk6Ok5h
dmlnYXRpb25BY3Rpb24sIGFuZCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW06CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mb0ludGVybmFsLmg6CisgICAgICAgIE1ha2UgV0tGcmFtZUlu
Zm8gYSBXS09iamVjdCwgd3JhcHBpbmcgYSBBUEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uSW50ZXJuYWwuaDoKKyAgICAgICAgTWFr
ZSBXS05hdmlnYXRpb25BY3Rpb24gYSBXS09iamVjdCwgd3JhcHBpbmcgYSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJl
c3BvbnNlLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVz
cG9uc2VJbnRlcm5hbC5oOgorICAgICAgICBNYWtlIFdLTmF2aWdhdGlvblJlc3BvbnNlIGEgV0tP
YmplY3QsIHdyYXBwaW5nIGEgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tOgorICAgICAgICBB
ZG9wdCBBUEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgQWRvcHQgQVBJ
OjpGcmFtZUluZm8sIGFuZCByZW9yZ2FuaXplIHRoZSBjb2RlIHNsaWdodGx5LgorICAgICAgICBB
ZG9wdCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24uCisKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKToKKyAgICAgICAg
QWRvcHQgQVBJOjpGcmFtZUluZm8uCisgICAgICAgIEFkb3B0IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlLgorCisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICBBZG9wdCBB
UEk6OkZyYW1lSW5mby4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1t
OgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZSk6
CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxl
cnQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2YVNjcmlw
dENvbmZpcm0pOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuSmF2
YVNjcmlwdFByb21wdCk6CisgICAgICAgIEFkb3B0IEFQSTo6RnJhbWVJbmZvLgorCisgICAgICAg
ICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAxLTI4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHBhZ2VDYWNoZSgp
IHRvIFBhZ2VDYWNoZTo6c2hhcmVkKCkgYW5kIHJldHVybiBhIHJlZmVyZW5jZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggYzVkZmQzNDYyMjc3M2VmNmQyY2RlNGJmYmFk
ZTgxOTNhMjRjODhjZi4uNTE3MTQ2MmI3MGRiODRmZmMyMmI1YzFmZWUwN2VhNDM5ZDQ2NjE2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMDksNiArMTA5LDcgQEAg
cHVibGljOgogICAgICAgICBEb3dubG9hZCwKICAgICAgICAgRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
ciwKICAgICAgICAgRnJhbWUsCisgICAgICAgIEZyYW1lSW5mbywKICAgICAgICAgRnJhbWVQb2xp
Y3lMaXN0ZW5lciwKICAgICAgICAgRnVsbFNjcmVlbk1hbmFnZXIsCiAgICAgICAgIEdlb2xvY2F0
aW9uTWFuYWdlciwKQEAgLTEyMSw3ICsxMjIsOSBAQCBwdWJsaWM6CiAgICAgICAgIEtleVZhbHVl
U3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBOYXZp
Z2F0aW9uLAorICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBOYXZpZ2F0aW9uRGF0
YSwKKyAgICAgICAgTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBOb3RpZmljYXRpb24sCiAg
ICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXIsCiAgICAgICAgIE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXgg
ODFmNjg5Mjk2MDE5NTM3YTkzNTRiZjAxMzlkN2Y2ZDMwZWQzYjMzNC4uNTM1ZTRmMTY0YmZiN2Nm
ODlhMThiZmM2MTY2MTk1Y2Q2Y2Q5ZDY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRHcm91cElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0Nvbm5lY3Rpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tG
cmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS05T
RGF0YS5oIgogI2ltcG9ydCAiV0tOU0RpY3Rpb25hcnkuaCIKQEAgLTQxLDggKzQyLDEwIEBACiAj
aW1wb3J0ICJXS05TVVJMLmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKICNpbXBvcnQgIldLTlNVUkxSZXF1ZXN0LmgiCisjaW1wb3J0ICJXS05hdmlnYXRpb25B
Y3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOYXZpZ2F0aW9uRGF0YUludGVybmFsLmgiCiAj
aW1wb3J0ICJXS05hdmlnYXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tOYXZpZ2F0aW9uUmVz
cG9uc2VJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbEludGVybmFsLmgiCiAjaW1w
b3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJT
Y3JpcHRJbnRlcm5hbC5oIgpAQCAtMTM2LDE0ICsxMzksMjYgQEAgdm9pZCogT2JqZWN0OjpuZXdP
YmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgd3JhcHBlciA9IFtfV0tGcmFt
ZUhhbmRsZSBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBUeXBlOjpGcmFtZUlu
Zm86CisgICAgICAgIHdyYXBwZXIgPSBbV0tGcmFtZUluZm8gYWxsb2NdOworICAgICAgICBicmVh
azsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAgICAgd3JhcHBlciA9IFtXS05h
dmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgVHlwZTo6TmF2aWdh
dGlvbkFjdGlvbjoKKyAgICAgICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb25BY3Rpb24gYWxsb2Nd
OworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbkRhdGE6CiAgICAg
ICAgIHdyYXBwZXIgPSBbV0tOYXZpZ2F0aW9uRGF0YSBhbGxvY107CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uUmVzcG9uc2U6CisgICAgICAgIHdyYXBwZXIgPSBb
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug
VHlwZTo6UGFnZUdyb3VwOgogICAgICAgICB3cmFwcGVyID0gW1dLQnJvd3NpbmdDb250ZXh0R3Jv
dXAgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJRnJhbWVJbmZvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NDc4OWZjZDZkMjNmMzVjNjAzNjg3YTdl
MjI3ZjQ1OWI3ZTIwZWM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElGcmFtZUluZm8uY3BwCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJRnJhbWVJbmZvLmgiCisKKyNpbmNsdWRl
ICJXZWJGcmFtZVByb3h5LmgiCisKK25hbWVzcGFjZSBBUEkgeworCisvLyBGSVhNRTogVGhpcyBz
aG91bGQgdXNlIHRoZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJM
LgorRnJhbWVJbmZvOjpGcmFtZUluZm8oY29uc3QgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFt
ZSkKKyAgICA6IG1faXNNYWluRnJhbWUoZnJhbWUuaXNNYWluRnJhbWUoKSkKKyAgICAsIG1fcmVx
dWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QoZnJhbWUudXJsKCkpKQoreworfQorCit9IC8v
IG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJRnJhbWVJbmZvLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5m
by5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg0NDE0MzM2MjljMmU0M2MyNzhiOTlkYmVlNzczNjcwMWRlNjM2ZTEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSUZyYW1l
SW5mby5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSUZyYW1lSW5m
b19oCisjZGVmaW5lIEFQSUZyYW1lSW5mb19oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYkZyYW1lUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBGcmFt
ZUluZm8gZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkZyYW1lSW5mbz4g
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RnJhbWVJbmZvPiBjcmVhdGUoY29uc3QgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiBmcmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEZyYW1lSW5mbyhmcmFtZSkpOworICAgIH0KKworICAgIEZyYW1lSW5mbyhjb25zdCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmKTsKKworICAgIH5GcmFtZUluZm8oKQorICAgIHsKKyAgICB9CisK
KyAgICBib29sIGlzTWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pc01haW5GcmFtZTsgfQor
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVxdWVzdDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9pc01haW5GcmFtZTsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgQVBJCisKKyNlbmRpZiAvLyBBUElGcmFtZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmI3ZGYy
MzU3NDlkZjlkNjBjZTk2Y2YzN2ZiZDRhNmQ5OTUxOGJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTAsMCAr
MSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQVBJTmF2aWdhdGlvbkFjdGlvbl9oCisjZGVm
aW5lIEFQSU5hdmlnYXRpb25BY3Rpb25faAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisKK25hbWVzcGFjZSBBUEkgewor
CitjbGFzcyBGcmFtZUluZm87CisKK2NsYXNzIE5hdmlnYXRpb25BY3Rpb24gZmluYWwgOiBwdWJs
aWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Ok5hdmlnYXRpb25BY3Rpb24+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb25BY3Rpb24+IGNyZWF0ZShjb25zdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8q
IHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVS
TCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5hdmlnYXRpb25BY3Rpb24o
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lLCB0YXJnZXRGcmFtZSwgcmVxdWVzdCwg
b3JpZ2luYWxVUkwpKTsKKyAgICB9CisKKyAgICBOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1l
SW5mbyogc291cmNlRnJhbWUsIEFQSTo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpVUkwmIG9yaWdp
bmFsVVJMKQorICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCisgICAgICAgICwg
bV90YXJnZXRGcmFtZSh0YXJnZXRGcmFtZSkKKyAgICAgICAgLCBtX3JlcXVlc3QocmVxdWVzdCkK
KyAgICAgICAgLCBtX29yaWdpbmFsVVJMKG9yaWdpbmFsVVJMKQorICAgICAgICAsIG1fbmF2aWdh
dGlvbkFjdGlvbkRhdGEobmF2aWdhdGlvbkFjdGlvbkRhdGEpCisgICAgeworICAgIH0KKworICAg
IH5OYXZpZ2F0aW9uQWN0aW9uKCkKKyAgICB7CisgICAgfQorCisgICAgRnJhbWVJbmZvKiBzb3Vy
Y2VGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRnJhbWUuZ2V0KCk7IH0KKyAgICBGcmFt
ZUluZm8qIHRhcmdldEZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRGcmFtZS5nZXQoKTsg
fQorCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0OyB9CisgICAgY29uc3QgV2ViQ29yZTo6VVJMJiBvcmlnaW5hbFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luYWxVUkw7IH0KKworICAgIFdlYkNvcmU6Ok5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZTsgfQorICAgIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVy
cyBtb2RpZmllcnMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlm
aWVyczsgfQorICAgIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uIG1vdXNlQnV0dG9uKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbjsgfQorICAg
IGJvb2wgaXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRp
b25BY3Rpb25EYXRhLmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlOyB9CisgICAgYm9vbCBjYW5IYW5k
bGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5jYW5IYW5k
bGVSZXF1ZXN0OyB9CisKK3ByaXZhdGU6CisgICAgUmVmUHRyPEZyYW1lSW5mbz4gbV9zb3VyY2VG
cmFtZTsKKyAgICBSZWZQdHI8RnJhbWVJbmZvPiBtX3RhcmdldEZyYW1lOworCisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBXZWJDb3JlOjpVUkwgbV9vcmlnaW5h
bFVSTDsKKworICAgIFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCisjZW5kaWYgLy8gQVBJTmF2aWdh
dGlvbkFjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25SZXNwb25zZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmM5ZjY2ZGJhOTA3MWIyMWJmMTViMzRk
YWU3YTI2Mjg2ZGEzM2QwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uUmVzcG9uc2UuaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBBUElOYXZpZ2F0aW9uUmVzcG9uc2VfaAorI2RlZmluZSBBUElOYXZpZ2F0
aW9uUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2Uu
aD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEZyYW1lSW5mbzsKKworY2xhc3MgTmF2aWdh
dGlvblJlc3BvbnNlIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpOYXZp
Z2F0aW9uUmVzcG9uc2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPE5hdmlnYXRpb25SZXNw
b25zZT4gY3JlYXRlKEFQSTo6RnJhbWVJbmZvJiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgYm9vbCBjYW5TaG93TUlNRVR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOYXZpZ2F0aW9uUmVzcG9uc2UoZnJhbWUsIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5T
aG93TUlNRVR5cGUpKTsKKyAgICB9CisKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2UoQVBJOjpGcmFt
ZUluZm8mIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIGNhblNob3dNSU1F
VHlwZSkKKyAgICAgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQorICAgICAgICAsIG1fcmVzcG9uc2UocmVzcG9uc2UpCisgICAgICAgICwgbV9jYW5TaG93
TUlNRVR5cGUoY2FuU2hvd01JTUVUeXBlKQorICAgIHsKKyAgICB9CisKKyAgICB+TmF2aWdhdGlv
blJlc3BvbnNlKCkKKyAgICB7CisgICAgfQorCisgICAgRnJhbWVJbmZvJiBmcmFtZSgpIHsgcmV0
dXJuIG1fZnJhbWUuZ2V0KCk7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25z
ZTsgfQorCisgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NhblNo
b3dNSU1FVHlwZTsgfQorCitwcml2YXRlOgorICAgIFJlZjxGcmFtZUluZm8+IG1fZnJhbWU7CisK
KyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKyAgICBib29sIG1fY2FuU2hvd01JTUVUeXBlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCisKKyNlbmRpZiAvLyBBUElOYXZpZ2F0aW9uUmVzcG9u
c2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zy
YW1lSW5mby5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUlu
Zm8ubW0KaW5kZXggNDY0Mjk1MTg0NTIzZmExNWY1MDk0MmZhNGZhZTEwMjA4MzIyOGE0NC4uMzgy
MmFmMmRhZmQ4MTUxNWFkYTc3OGViN2IwYTQxY2M2YWFkZDhjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCkBAIC0yOCwzNCArMjgs
MjggQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKLSNpbXBvcnQgIldlYkZyYW1lUHJveHkuaCIK
LSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KK0BpbXBsZW1lbnRhdGlvbiBXS0ZyYW1lSW5mbwog
Ci1AaW1wbGVtZW50YXRpb24gV0tGcmFtZUluZm8gewotICAgIFJldGFpblB0cjxOU1VSTFJlcXVl
c3Q+IF9yZXF1ZXN0OwotfQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXZWJGcmFtZVByb3h5
OihXZWJLaXQ6OldlYkZyYW1lUHJveHkmKXdlYkZyYW1lUHJveHkKKy0gKHZvaWQpZGVhbGxvYwog
ewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgX21haW5GcmFtZSA9IHdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKTsKKyAgICBfZnJh
bWVJbmZvLT5+RnJhbWVJbmZvKCk7CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIHRo
ZSBmdWxsIHJlcXVlc3Qgb2YgdGhlIGZyYW1lLCBub3QganVzdCB0aGUgVVJMLgotICAgIF9yZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzp3
ZWJGcmFtZVByb3h5LnVybCgpXV07Ci0KLSAgICByZXR1cm4gc2VsZjsKKyAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKLSAgICByZXR1cm4gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBpc01haW5GcmFtZSA9ICVzOyByZXF1
ZXN0ID0gJUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsIF9tYWluRnJh
bWUgPyAiWUVTIiA6ICJOTyIsIF9yZXF1ZXN0LmdldCgpXTsKKyAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBpc01haW5GcmFtZSA9ICVzOyByZXF1ZXN0ID0g
JUA+IiwgTlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsIHNlbGYubWFpbkZyYW1l
ID8gIllFUyIgOiAiTk8iLCBzZWxmLnJlcXVlc3RdOworfQorCistIChCT09MKWlzTWFpbkZyYW1l
Cit7CisgICAgcmV0dXJuIF9mcmFtZUluZm8tPmlzTWFpbkZyYW1lKCk7CiB9CiAKIC0gKE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX3JlcXVlc3QuZ2V0KCk7CisgICAgcmV0
dXJuIF9mcmFtZUluZm8tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSk7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAt
NjMsNiArNTcsMTMgQEAKICAgICByZXR1cm4gW3NlbGYgcmV0YWluXTsKIH0KIAorI3ByYWdtYSBt
YXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfZnJhbWVJbmZvOworfQorCiBAZW5kCiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1l
SW5mb0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJh
bWVJbmZvSW50ZXJuYWwuaAppbmRleCBhYTc5MDdhNzlhNWM5NmJkMzkxYzNiYWRjYzM3NWFiMjQ3
NGUxMDFiLi4zODJlYTkxMGIwYmU3YTVhYTM5OTJiZTY3MzFhMmY3NDEyMmExMDcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvSW50ZXJu
YWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZv
SW50ZXJuYWwuaApAQCAtMjcsMTQgKzI3LDI0IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkZyYW1lUHJveHk7Ci19CisjaW1wb3J0ICJBUElG
cmFtZUluZm8uaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitp
bmxpbmUgV0tGcmFtZUluZm8gKndyYXBwZXIoQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbykKK3sK
KyAgICBBU1NFUlQoW2ZyYW1lSW5mby53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbV0tGcmFtZUlu
Zm8gY2xhc3NdXSk7CiAKLUBpbnRlcmZhY2UgV0tGcmFtZUluZm8gKCkKKyAgICByZXR1cm4gKFdL
RnJhbWVJbmZvICopZnJhbWVJbmZvLndyYXBwZXIoKTsKK30KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoV2ViRnJhbWVQcm94eTooV2ViS2l0OjpXZWJGcmFtZVByb3h5Jil3ZWJGcmFtZVByb3h5
OworfQogCitAaW50ZXJmYWNlIFdLRnJhbWVJbmZvICgpIDxXS09iamVjdD4geworQHBhY2thZ2UK
KyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpGcmFtZUluZm8+IF9mcmFtZUluZm87Cit9CiBA
ZW5kCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCBjOTVkMTYyYzg0ZjBiMDdlNTJhZWJm
NGQyZjA5NjNiYzM0M2VmNTFiLi45Yjk5NDQyY2JlNTdhOWE2MGNlNmRmMTAzN2U1MDJhZTY5YWQ0
NTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtMjksMTYgKzI5LDEwIEBACiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAogI2ltcG9ydCAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKKyNpbXBvcnQgIldLRnJh
bWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotQGltcGxlbWVu
dGF0aW9uIFdLTmF2aWdhdGlvbkFjdGlvbiB7Ci0gICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBf
c291cmNlRnJhbWU7Ci0gICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBfdGFyZ2V0RnJhbWU7Ci0g
ICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gX3JlcXVlc3Q7Ci0gICAgUmV0YWluUHRyPE5TVVJM
PiBfb3JpZ2luYWxVUkw7Ci0gICAgQk9PTCBfdXNlckluaXRpYXRlZDsKLSAgICBCT09MIF9jYW5I
YW5kbGVSZXF1ZXN0OwotfQorQGltcGxlbWVudGF0aW9uIFdLTmF2aWdhdGlvbkFjdGlvbgogCiBz
dGF0aWMgV0tOYXZpZ2F0aW9uVHlwZSB0b1dLTmF2aWdhdGlvblR5cGUoV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGUgbmF2aWdhdGlvblR5cGUpCiB7CkBAIC0xMDMsODIgKzk3LDc5IEBAIHN0YXRpYyBO
U0ludGVnZXIgdG9OU0J1dHRvbk51bWJlcihXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBt
b3VzZUJ1dHRvbikKIH0KICNlbmRpZgogCi0tIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTmF2aWdh
dGlvbkFjdGlvbkRhdGE6KGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmKW5hdmln
YXRpb25BY3Rpb25EYXRhCistICh2b2lkKWRlYWxsb2MKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9uYXZpZ2F0aW9uVHlwZSA9
IHRvV0tOYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSk7
Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgX21vZGlmaWVyRmxhZ3MgPSB0b05TRXZlbnRNb2Rp
ZmllckZsYWdzKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyk7Ci0gICAgX2J1dHRvbk51
bWJlciA9IHRvTlNCdXR0b25OdW1iZXIobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24p
OwotI2VuZGlmCisgICAgX25hdmlnYXRpb25BY3Rpb24tPn5OYXZpZ2F0aW9uQWN0aW9uKCk7CiAK
LSAgICBfdXNlckluaXRpYXRlZCA9IG5hdmlnYXRpb25BY3Rpb25EYXRhLmlzUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlOwotICAgIF9jYW5IYW5kbGVSZXF1ZXN0ID0gbmF2aWdhdGlvbkFjdGlvbkRhdGEu
Y2FuSGFuZGxlUmVxdWVzdDsKLQotICAgIHJldHVybiBzZWxmOworICAgIFtzdXBlciBkZWFsbG9j
XTsKIH0KIAogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewogICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQDogJXA7IG5hdmlnYXRpb25UeXBlID0gJWxkOyByZXF1
ZXN0ID0gJUA7IHNvdXJjZUZyYW1lID0gJUA7IHRhcmdldEZyYW1lID0gJUA+IiwgTlNTdHJpbmdG
cm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsCi0gICAgICAgIChsb25nKV9uYXZpZ2F0aW9uVHlw
ZSwgX3JlcXVlc3QuZ2V0KCksIF9zb3VyY2VGcmFtZS5nZXQoKSwgX3RhcmdldEZyYW1lLmdldCgp
XTsKKyAgICAgICAgKGxvbmcpc2VsZi5uYXZpZ2F0aW9uVHlwZSwgc2VsZi5yZXF1ZXN0LCBzZWxm
LnNvdXJjZUZyYW1lLCBzZWxmLnRhcmdldEZyYW1lXTsKIH0KIAogLSAoV0tGcmFtZUluZm8gKilz
b3VyY2VGcmFtZQogewotICAgIHJldHVybiBfc291cmNlRnJhbWUuZ2V0KCk7Ci19Ci0KLS0gKHZv
aWQpc2V0U291cmNlRnJhbWU6KFdLRnJhbWVJbmZvICopc291cmNlRnJhbWUKLXsKLSAgICBfc291
cmNlRnJhbWUgPSBhZG9wdE5TKFtzb3VyY2VGcmFtZSBjb3B5XSk7CisgICAgaWYgKEFQSTo6RnJh
bWVJbmZvKiBmcmFtZUluZm8gPSBfbmF2aWdhdGlvbkFjdGlvbi0+c291cmNlRnJhbWUoKSkKKyAg
ICAgICAgcmV0dXJuIHdyYXBwZXIoKmZyYW1lSW5mbyk7CisgICAgcmV0dXJuIG5pbDsKIH0KIAog
LSAoV0tGcmFtZUluZm8gKil0YXJnZXRGcmFtZQogewotICAgIHJldHVybiBfdGFyZ2V0RnJhbWUu
Z2V0KCk7CisgICAgaWYgKEFQSTo6RnJhbWVJbmZvKiBmcmFtZUluZm8gPSBfbmF2aWdhdGlvbkFj
dGlvbi0+dGFyZ2V0RnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIoKmZyYW1lSW5mbyk7
CisgICAgcmV0dXJuIG5pbDsKIH0KIAotLSAodm9pZClzZXRUYXJnZXRGcmFtZTooV0tGcmFtZUlu
Zm8gKil0YXJnZXRGcmFtZQorLSAoV0tOYXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZQogewot
ICAgIF90YXJnZXRGcmFtZSA9IGFkb3B0TlMoW3RhcmdldEZyYW1lIGNvcHldKTsKKyAgICByZXR1
cm4gdG9XS05hdmlnYXRpb25UeXBlKF9uYXZpZ2F0aW9uQWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgp
KTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfcmVxdWVz
dC5nZXQoKTsKKyAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKLS0gKHZvaWQpc2V0UmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAorI2lmIFBMQVRGT1JNKE1BQykKKy0gKE5TRXZl
bnRNb2RpZmllckZsYWdzKW1vZGlmaWVyRmxhZ3MKIHsKLSAgICBfcmVxdWVzdCA9IGFkb3B0TlMo
W3JlcXVlc3QgY29weV0pOworICAgIHJldHVybiB0b05TRXZlbnRNb2RpZmllckZsYWdzKF9uYXZp
Z2F0aW9uQWN0aW9uLT5tb2RpZmllcnMoKSk7CiB9CiAKLS0gKHZvaWQpX3NldE9yaWdpbmFsVVJM
OihOU1VSTCAqKW9yaWdpbmFsVVJMCistIChOU0ludGVnZXIpYnV0dG9uTnVtYmVyCiB7Ci0gICAg
X29yaWdpbmFsVVJMID0gYWRvcHROUyhbb3JpZ2luYWxVUkwgY29weV0pOworICAgIHJldHVybiB0
b05TQnV0dG9uTnVtYmVyKF9uYXZpZ2F0aW9uQWN0aW9uLT5tb3VzZUJ1dHRvbigpKTsKIH0KKyNl
bmRpZgogCi0tIChOU1VSTCAqKV9vcmlnaW5hbFVSTAorI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0g
ICAgcmV0dXJuIF9vcmlnaW5hbFVSTC5nZXQoKTsKKyAgICByZXR1cm4gKl9uYXZpZ2F0aW9uQWN0
aW9uOwogfQogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS05hdmlnYXRpb25BY3Rpb24gKFdL
UHJpdmF0ZSkKIAorLSAoTlNVUkwgKilfb3JpZ2luYWxVUkwKK3sKKyAgICByZXR1cm4gX25hdmln
YXRpb25BY3Rpb24tPm9yaWdpbmFsVVJMKCk7Cit9CisKIC0gKEJPT0wpX2lzVXNlckluaXRpYXRl
ZAogewotICAgIHJldHVybiBfdXNlckluaXRpYXRlZDsKKyAgICByZXR1cm4gX25hdmlnYXRpb25B
Y3Rpb24tPmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCk7CiB9CiAKIC0gKEJPT0wpX2NhbkhhbmRs
ZVJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2NhbkhhbmRsZVJlcXVlc3Q7CisgICAgcmV0dXJuIF9u
YXZpZ2F0aW9uQWN0aW9uLT5jYW5IYW5kbGVSZXF1ZXN0KCk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uSW50ZXJuYWwuaAppbmRleCA0MzliMmZiNmRiNDRkYTQ0M2JhZjRkYzRiYWIyNGY2
YmEwZjI5ZjYwLi5hOTU5ZDVkOWNjZWNiNzY1MDI1Y2U5ZTMxMGUzNDYwZWVhMjljNGRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFj
dGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb25JbnRlcm5hbC5oCkBAIC0yNywyMyArMjcsMjQgQEAKIAogI2lmIFdL
X0FQSV9FTkFCTEVECiAKLSNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgorI2lt
cG9ydCAiQVBJTmF2aWdhdGlvbkFjdGlvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKIAotbmFt
ZXNwYWNlIFdlYktpdCB7Ci1zdHJ1Y3QgTmF2aWdhdGlvbkFjdGlvbkRhdGE7Ci19Ci0KLUBpbnRl
cmZhY2UgV0tOYXZpZ2F0aW9uQWN0aW9uICgpCi0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
d3JpdGUsIGNvcHkpIFdLRnJhbWVJbmZvICpzb3VyY2VGcmFtZTsKLUBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkd3JpdGUsIGNvcHkpIFdLRnJhbWVJbmZvICp0YXJnZXRGcmFtZTsKK25hbWVzcGFj
ZSBBUEkgewogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZHdyaXRlLCBjb3B5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CitpbmxpbmUgV0tOYXZpZ2F0aW9uQWN0aW9uICp3cmFwcGVyKEFQSTo6
TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKK3sKKyAgICBBU1NFUlQoW25hdmln
YXRpb25BY3Rpb24ud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLTmF2aWdhdGlvbkFjdGlvbiBj
bGFzc11dKTsKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSwgY29weSwgc2V0dGVy
PV9zZXRPcmlnaW5hbFVSTDopIE5TVVJMICpfb3JpZ2luYWxVUkw7CisgICAgcmV0dXJuIChXS05h
dmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uLndyYXBwZXIoKTsKK30KIAotLSAoaW5z
dGFuY2V0eXBlKV9pbml0V2l0aE5hdmlnYXRpb25BY3Rpb25EYXRhOihjb25zdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhJiluYXZpZ2F0aW9uQWN0aW9uRGF0YTsKK30KIAorQGludGVyZmFj
ZSBXS05hdmlnYXRpb25BY3Rpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6
T2JqZWN0U3RvcmFnZTxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IF9uYXZpZ2F0aW9uQWN0aW9uOwor
fQogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblJlc3BvbnNlLm1tCmluZGV4IDRmZTk3ZWY2ZDhkYzgy
YzkyNTQwYWY5ODcwNTIzYzhiNTY4NDNjYTAuLjAyODk3MTBlMzM4NzA3NGRmNzQxYmZjMTMwMDc1
M2E3OGFhN2RiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZS5tbQpAQCAtMjgsMzEgKzI4LDQyIEBACiAK
ICNpZiBXS19BUElfRU5BQkxFRAogCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0
ICJXS0ZyYW1lSW5mby5oIgorI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogCi1AaW1w
bGVtZW50YXRpb24gV0tOYXZpZ2F0aW9uUmVzcG9uc2UgewotICAgIFJldGFpblB0cjxOU1VSTFJl
c3BvbnNlPiBfcmVzcG9uc2U7CitAaW1wbGVtZW50YXRpb24gV0tOYXZpZ2F0aW9uUmVzcG9uc2UK
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgX25hdmlnYXRpb25SZXNwb25zZS0+fk5hdmlnYXRp
b25SZXNwb25zZSgpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCiAtIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uCiB7Ci0gICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
PCVAOiAlcDsgcmVzcG9uc2UgPSAlQD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwg
c2VsZiwgX3Jlc3BvbnNlLmdldCgpXTsKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCI8JUA6ICVwOyByZXNwb25zZSA9ICVAPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYu
Y2xhc3MpLCBzZWxmLCBzZWxmLnJlc3BvbnNlXTsKIH0KIAogLSAoQk9PTClpc0Zvck1haW5GcmFt
ZQogewotICAgIHJldHVybiBbX2ZyYW1lIGlzTWFpbkZyYW1lXTsKKyAgICByZXR1cm4gX25hdmln
YXRpb25SZXNwb25zZS0+ZnJhbWUoKS5pc01haW5GcmFtZSgpOwogfQogCiAtIChOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2UKIHsKLSAgICByZXR1cm4gX3Jlc3BvbnNlLmdldCgpOworICAgIHJldHVy
biBfbmF2aWdhdGlvblJlc3BvbnNlLT5yZXNwb25zZSgpLm5zVVJMUmVzcG9uc2UoKTsKIH0KIAot
LSAodm9pZClzZXRSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCistIChCT09MKWNh
blNob3dNSU1FVHlwZQoreworICAgIHJldHVybiBfbmF2aWdhdGlvblJlc3BvbnNlLT5jYW5TaG93
TUlNRVR5cGUoKTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVu
dGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgX3Jlc3BvbnNlID0g
YWRvcHROUyhbcmVzcG9uc2UgY29weV0pOworICAgIHJldHVybiAqX25hdmlnYXRpb25SZXNwb25z
ZTsKIH0KIAogQGVuZApAQCAtNjEsMTIgKzcyLDEyIEBACiAKIC0gKFdLRnJhbWVJbmZvICopX2Zy
YW1lCiB7Ci0gICAgcmV0dXJuIF9mcmFtZS5nZXQoKTsKKyAgICByZXR1cm4gd3JhcHBlcihfbmF2
aWdhdGlvblJlc3BvbnNlLT5mcmFtZSgpKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopX3JlcXVl
c3QKIHsKLSAgICByZXR1cm4gX3JlcXVlc3QuZ2V0KCk7CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9u
UmVzcG9uc2UtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQ
Qm9keSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uUmVzcG9uc2VJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmgKaW5kZXgg
MGU4ZDNhODQ3ZjY2YWE3OTNjMTMxMjFmMjg5MmQ2ZmU3MmIyOTcyYS4uMmY2OTY0NWNlYWE3Nzhk
OTU1Nzk5Zjk5MTdkZmExMzcxZjE5YTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZUludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25SZXNwb25zZUludGVy
bmFsLmgKQEAgLTI3LDE3ICsyNywyNCBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCAiQVBJTmF2aWdhdGlvblJlc3BvbnNlLmgiCisj
aW1wb3J0ICJXS09iamVjdC5oIgogCi1AaW50ZXJmYWNlIFdLTmF2aWdhdGlvblJlc3BvbnNlICgp
IHsKLUBwYWNrYWdlCi0gICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBfZnJhbWU7Ci0gICAgUmV0
YWluUHRyPE5TVVJMUmVxdWVzdD4gX3JlcXVlc3Q7CituYW1lc3BhY2UgQVBJIHsKKworaW5saW5l
IFdLTmF2aWdhdGlvblJlc3BvbnNlICp3cmFwcGVyKEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBu
YXZpZ2F0aW9uUmVzcG9uc2UpCit7CisgICAgQVNTRVJUKFtuYXZpZ2F0aW9uUmVzcG9uc2Uud3Jh
cHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLTmF2aWdhdGlvblJlc3BvbnNlIGNsYXNzXV0pOworCisg
ICAgcmV0dXJuIChXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZS53cmFw
cGVyKCk7CiB9CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkd3JpdGUsIGNvcHkpIE5TVVJM
UmVzcG9uc2UgKnJlc3BvbnNlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWR3cml0ZSkgQk9P
TCBjYW5TaG93TUlNRVR5cGU7Cit9CiAKK0BpbnRlcmZhY2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Ok5h
dmlnYXRpb25SZXNwb25zZT4gX25hdmlnYXRpb25SZXNwb25zZTsKK30KIEBlbmQKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1VzZXJDb250ZW50Q29udHJvbGxlci5tbQppbmRleCA1OTNmMzY2NTJjNDc0ZDQ2N2Y1ZjE1NzVl
ZTI1MGQzMGEyMjQxZDk0Li44MGFiZGQ0MTYyNjgyYzMzNzg3MjJlZGI3N2IxNjcxMTNkNzI1NDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVXNlckNv
bnRlbnRDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0KQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCBkaWRQb3N0TWVzc2FnZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCiAgICAgewotICAgICAgICBSZXRh
aW5QdHI8V0tGcmFtZUluZm8+IGZyYW1lSW5mbyA9IGFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxv
Y10gaW5pdFdpdGhXZWJGcmFtZVByb3h5OmZyYW1lXSk7CisgICAgICAgIFJldGFpblB0cjxXS0Zy
YW1lSW5mbz4gZnJhbWVJbmZvID0gd3JhcHBlcihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1l
KSk7CiAKICAgICAgICAgUmV0YWluUHRyPEpTQ29udGV4dD4gY29udGV4dCA9IGFkb3B0TlMoW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdKTsKICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5kZXNlcmlhbGl6ZShbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCmluZGV4IDM0ZjQwOWU1M2Q2ZDZiODZlZGFlM2Y2M2ViOTUyMzM4OWExMGY5MTIu
LjZhN2ExNDQ5MTY2YWNkOWM0YzU1OWU3Y2I1MTgxNzUzYjRkNmQyMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMjgsNyAr
MjgsOSBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgi
CiAjaW1wb3J0ICJBUElOYXZpZ2F0aW9uRGF0YS5oIgorI2ltcG9ydCAiQVBJTmF2aWdhdGlvblJl
c3BvbnNlLmgiCiAjaW1wb3J0ICJBUElTdHJpbmcuaCIKICNpbXBvcnQgIkFQSVVSTC5oIgogI2lt
cG9ydCAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCkBAIC0yMjQsOSArMjI2LDkg
QEAgTmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6On5Qb2xpY3lDbGllbnQoKQogCiB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqIGRlc3RpbmF0aW9uRnJhbWUsIGNv
bnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQ
cm94eSogc291cmNlRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlZjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKLSAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1VSTFJlcXVlc3QgPSBhZG9w
dE5TKHdyYXBwZXIoKkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3QpLmxlYWtSZWYoKSkp
OwotCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIp
IHsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNVUkxSZXF1ZXN0ID0gYWRvcHRO
Uyh3cmFwcGVyKCpBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0KS5sZWFrUmVmKCkpKTsK
KwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uRnJhbWUpIHsKICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1MSwyNCArMjUzLDIyIEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVByb3h5CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IGFkb3B0TlMoW1tXS05hdmln
YXRpb25BY3Rpb24gYWxsb2NdIF9pbml0V2l0aE5hdmlnYXRpb25BY3Rpb25EYXRhOm5hdmlnYXRp
b25BY3Rpb25EYXRhXSk7CisgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBkZXN0aW5hdGlvbkZy
YW1lSW5mbzsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKIAog
ICAgIGlmIChkZXN0aW5hdGlvbkZyYW1lKQotICAgICAgICBbbmF2aWdhdGlvbkFjdGlvbiBzZXRU
YXJnZXRGcmFtZTphZG9wdE5TKFtbV0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRoV2ViRnJhbWVQ
cm94eToqZGVzdGluYXRpb25GcmFtZV0pLmdldCgpXTsKKyAgICAgICAgZGVzdGluYXRpb25GcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpkZXN0aW5hdGlvbkZyYW1lKTsKIAotICAg
IGlmIChzb3VyY2VGcmFtZSkgewotICAgICAgICBpZiAoc291cmNlRnJhbWUgPT0gZGVzdGluYXRp
b25GcmFtZSkKLSAgICAgICAgICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFNvdXJjZUZyYW1lOltu
YXZpZ2F0aW9uQWN0aW9uIHRhcmdldEZyYW1lXV07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IFtuYXZpZ2F0aW9uQWN0aW9uIHNldFNvdXJjZUZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBh
bGxvY10gaW5pdFdpdGhXZWJGcmFtZVByb3h5Oipzb3VyY2VGcmFtZV0pLmdldCgpXTsKLSAgICB9
CisgICAgaWYgKHNvdXJjZUZyYW1lID09IGRlc3RpbmF0aW9uRnJhbWUpCisgICAgICAgIHNvdXJj
ZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvOworICAgIGVsc2UgaWYgKHNvdXJjZUZy
YW1lKQorICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCpz
b3VyY2VGcmFtZSk7CiAKLSAgICBbbmF2aWdhdGlvbkFjdGlvbiBzZXRSZXF1ZXN0Om5zVVJMUmVx
dWVzdC5nZXQoKV07Ci0gICAgW25hdmlnYXRpb25BY3Rpb24gX3NldE9yaWdpbmFsVVJMOm9yaWdp
bmFsUmVxdWVzdC51cmwoKV07CisgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uOjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbkRhdGEsIHNvdXJjZUZyYW1lSW5m
by5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8uZ2V0KCksIHJlcXVlc3QsIG9yaWdpbmFsUmVx
dWVzdC51cmwoKSk7CiAKICAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBs
b2NhbExpc3RlbmVyID0gV1RGOjptb3ZlKGxpc3RlbmVyKTsKICAgICBSZWZQdHI8Q29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFtu
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpuYXZpZ2F0aW9uQWN0aW9uLmdldCgpIGRlY2lz
aW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0oV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5IGFjdGlvblBvbGljeSkgeworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp3
cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIGRlY2lzaW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwg
Y2hlY2tlcl0oV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSkgewogICAgICAg
ICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgICAgICBzd2l0Y2gg
KGFjdGlvblBvbGljeSkgewpAQCAtMzIyLDE2ICszMjIsMTEgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5Jiwg
V2ViRnIKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgYWxsb2NdIGluaXRdKTsKLQotICAgIG5hdmlnYXRpb25SZXNwb25zZS0+X2ZyYW1lID0gYWRv
cHROUyhbW1dLRnJhbWVJbmZvIGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lUHJveHk6ZnJhbWVdKTsK
LSAgICBuYXZpZ2F0aW9uUmVzcG9uc2UtPl9yZXF1ZXN0ID0gcmVzb3VyY2VSZXF1ZXN0Lm5zVVJM
UmVxdWVzdChXZWJDb3JlOjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKLSAgICBbbmF2aWdhdGlvblJl
c3BvbnNlIHNldFJlc3BvbnNlOnJlc291cmNlUmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKLSAg
ICBbbmF2aWdhdGlvblJlc3BvbnNlIHNldENhblNob3dNSU1FVHlwZTpjYW5TaG93TUlNRVR5cGVd
OworICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6
OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKGZyYW1lKS5nZXQoKSwgcmVzb3VyY2VSZXF1
ZXN0LCByZXNvdXJjZVJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUpOwogCiAgICAgUmVmUHRyPFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbG9jYWxMaXN0ZW5lciA9IFdURjo6bW92ZShsaXN0
ZW5lcik7CiAgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOm5hdmlnYXRpb25SZXNwb25zZS5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6W2xvY2FsTGlzdGVu
ZXIsIGNoZWNrZXJdKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IHJlc3BvbnNlUG9saWN5KSB7
CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2Vi
VmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9u
UmVzcG9uc2UpIGRlY2lzaW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgY2hlY2tlcl0oV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3kgcmVzcG9uc2VQb2xpY3kpIHsKICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAKICAgICAgICAgc3dpdGNoIChyZXNwb25zZVBv
bGljeSkgewpAQCAtNDI2LDcgKzQyMSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQCiAgICAg
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCk7CiAgICAgICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0
ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKICAgICAgICAgLy8gRklYTUU6IEdldCB0
aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KLSAgICAgICAgWyhpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJGcmFt
ZVByb3h5OndlYkZyYW1lUHJveHldKS5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlB
dHRlbXB0ZXIuZ2V0KCldOworICAgICAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+KW5hdmlnYXRpb25EZWxlZ2F0ZSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgbmF2aWdhdGlvbjpuaWwgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6d3JhcHBl
cihBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKHdlYkZyYW1lUHJveHkpKSB3aXRoRXJyb3I6ZXJyb3JX
aXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGU4N2Fm
NDlkYjAxNTVlYThhNjA1OTY5Nzg2NTc3ZTg4ZWM3MGU1YWMuLjgxNzVhN2VmMGVkMWU5NmY0NmQ1
ZmY2M2I0ZmYwZGNjZWFhMDNiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCkBAIC0xMDIsMTIgKzEwMiwxMCBAQCBQYXNzUmVmUHRyPFdlYktpdDo6
V2ViUGFnZVByb3h5PiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y3JlYXRlTmV3UGFnZShXZWJLaXQ6
OldlYgogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW21fdWlEZWxlZ2F0ZS5tX3dl
YlZpZXctPl9jb25maWd1cmF0aW9uIGNvcHldKTsKICAgICBbY29uZmlndXJhdGlvbiBfc2V0UmVs
YXRlZFdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiAKLSAgICBhdXRvIG5hdmlnYXRp
b25BY3Rpb24gPSBhZG9wdE5TKFtbV0tOYXZpZ2F0aW9uQWN0aW9uIGFsbG9jXSBfaW5pdFdpdGhO
YXZpZ2F0aW9uQWN0aW9uRGF0YTpuYXZpZ2F0aW9uQWN0aW9uRGF0YV0pOworICAgIGF1dG8gc291
cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZSgqaW5pdGlhdGluZ0ZyYW1lKTsK
KyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc291cmNlRnJhbWVJbmZvLnB0cigpLCBudWxscHRyLCBy
ZXF1ZXN0LCBXZWJDb3JlOjpVUkwoKSk7CiAKLSAgICBbbmF2aWdhdGlvbkFjdGlvbiBzZXRTb3Vy
Y2VGcmFtZTphZG9wdE5TKFtbV0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRoV2ViRnJhbWVQcm94
eToqaW5pdGlhdGluZ0ZyYW1lXSkuZ2V0KCldOwotICAgIFtuYXZpZ2F0aW9uQWN0aW9uIHNldFJl
cXVlc3Q6cmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6RG9Ob3RVcGRhdGVIVFRQQm9keSld
OwotCi0gICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IFtkZWxlZ2F0ZS5nZXQoKSB3
ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgZm9yTmF2aWdhdGlvbkFjdGlvbjpuYXZpZ2F0aW9uQWN0
aW9uLmdldCgpIHdpbmRvd0ZlYXR1cmVzOmFkb3B0TlMoW1tXS1dpbmRvd0ZlYXR1cmVzIGFsbG9j
XSBfaW5pdFdpdGhXaW5kb3dGZWF0dXJlczp3aW5kb3dGZWF0dXJlc10pLmdldCgpXTsKKyAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gW2RlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV91
aURlbGVnYXRlLm1fd2ViVmlldyBjcmVhdGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKSBmb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlv
bikgd2luZG93RmVhdHVyZXM6YWRvcHROUyhbW1dLV2luZG93RmVhdHVyZXMgYWxsb2NdIF9pbml0
V2l0aFdpbmRvd0ZlYXR1cmVzOndpbmRvd0ZlYXR1cmVzXSkuZ2V0KCldOwogCiAgICAgaWYgKCF3
ZWJWaWV3KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEzMiw3ICsxMzAsNyBAQCB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXVEY6OgogICAgIH0KIAogICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKGRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQ
YW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0g
ICAgW2RlbGVnYXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0
QWxlcnRQYW5lbFdpdGhNZXNzYWdlOm1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTphZG9wdE5TKFtb
V0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRoV2ViRnJhbWVQcm94eToqd2ViRnJhbWVQcm94eV0p
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltjb21wbGV0aW9uSGFuZGxlciwgY2hlY2tlcl0gewor
ICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlw
dEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5KSkgY29tcGxldGlvbkhhbmRsZXI6
W2NvbXBsZXRpb25IYW5kbGVyLCBjaGVja2VyXSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH1d
OwpAQCAtMTUyLDcgKzE1MCw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bkphdmFT
Y3JpcHRDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGCiAgICAgfQogCiAg
ICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3
ZWJWaWV3OnJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZy
YW1lOmNvbXBsZXRpb25IYW5kbGVyOikpOwotICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOm1lc3Nh
Z2UgaW5pdGlhdGVkQnlGcmFtZTphZG9wdE5TKFtbV0tGcmFtZUluZm8gYWxsb2NdIGluaXRXaXRo
V2ViRnJhbWVQcm94eToqd2ViRnJhbWVQcm94eV0pLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltj
b21wbGV0aW9uSGFuZGxlciwgY2hlY2tlcl0oQk9PTCByZXN1bHQpIHsKKyAgICBbZGVsZWdhdGUg
d2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRDb25maXJtUGFuZWxX
aXRoTWVzc2FnZTptZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6d3JhcHBlcihBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKCp3ZWJGcmFtZVByb3h5KSkgY29tcGxldGlvbkhhbmRsZXI6W2NvbXBsZXRpb25I
YW5kbGVyLCBjaGVja2VyXShCT09MIHJlc3VsdCkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihyZXN1bHQpOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9XTsKQEAgLTE3Miw3ICsxNzAsNyBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOgogICAg
IH0KIAogICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKGRlbGVnYXRlLmdldCgpLCBAc2Vs
ZWN0b3Iod2ViVmlldzpydW5KYXZhU2NyaXB0VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1
bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7Ci0gICAgW2RlbGVn
YXRlIHdlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0
UGFuZWxXaXRoUHJvbXB0Om1lc3NhZ2UgZGVmYXVsdFRleHQ6ZGVmYXVsdFZhbHVlIGluaXRpYXRl
ZEJ5RnJhbWU6YWRvcHROUyhbW1dLRnJhbWVJbmZvIGFsbG9jXSBpbml0V2l0aFdlYkZyYW1lUHJv
eHk6KndlYkZyYW1lUHJveHldKS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkhh
bmRsZXIsIGNoZWNrZXJdKE5TU3RyaW5nICpyZXN1bHQpIHsKKyAgICBbZGVsZWdhdGUgd2ViVmll
dzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IHJ1bkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbFdpdGhQ
cm9tcHQ6bWVzc2FnZSBkZWZhdWx0VGV4dDpkZWZhdWx0VmFsdWUgaW5pdGlhdGVkQnlGcmFtZTp3
cmFwcGVyKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoKndlYkZyYW1lUHJveHkpKSBjb21wbGV0aW9u
SGFuZGxlcjpbY29tcGxldGlvbkhhbmRsZXIsIGNoZWNrZXJdKE5TU3RyaW5nICpyZXN1bHQpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDEyMzZmODRmYTExNmExMjlj
ZWE5YjY1YzQ3MjA1MzdjMDA1NmRmZS4uMGEyOGQ0MDkxNWM3YjUxZTFlNjhkMGQyZmUzZjRiMTg5
NmI0NTIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjUzLDcgKzI1Myw2IEBACiAJCTFBNEQ2NjQ4MThBMkQ5MUEwMEQ4MkUy
MSAvKiBBUElVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE0RDY2NDcxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggKi87IH07
CiAJCTFBNEQ2NjRCMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNEQ2NjQ5MThBMzAzMEUwMEQ4
MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLzsgfTsKIAkJMUE0RDY2NEMxOEEzMDMwRTAwRDgyRTIx
IC8qIFdLRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTRENjY0QTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07Ci0JCTFBNEQ2NjRFMThBMzAz
MUIwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyogV0tG
cmFtZUluZm9JbnRlcm5hbC5oICovOyB9OwogCQkxQTUwREI2NjExMEEzRDU3MDAwRDNGRTUgLyog
V2ViUHJvY2Vzcy5hcHAgaW4gQ29weSBGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTUwREIxRTExMEEzQkRDMDAwRDNGRTUgLyogV2ViUHJvY2Vzcy5hcHAgKi87IH07
CiAJCTFBNTJDMEY3MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlk
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1
MkMwRjUxQTM4Q0RDNzAwMTYxNjBBIC8qIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAg
Ki87IH07CiAJCTFBNTJDMEY4MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNTJDMEY2MUEzOENEQzcwMDE2MTYwQSAvKiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIu
aCAqLzsgfTsKQEAgLTY0OCw2ICs2NDcsMTEgQEAKIAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1
IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2
ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTJERjk1OTNCMThBNDI0MTIwMDk3ODVB
MSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dl
c3R1cmVDb250cm9sbGVySU9TLm1tICovOyB9OworCQkyREY5RUVFNTFBNzgxRkI0MDBCNkNGQkUg
LyogQVBJRnJhbWVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERjlFRUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICov
OyB9OworCQkyREY5RUVFNjFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVFNDFBNzgxRkI0
MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggKi87IH07CisJCTJERjlFRUU4MUE3ODI0NTUwMEI2
Q0ZCRSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUlu
Zm9JbnRlcm5hbC5oICovOyB9OworCQkyREY5RUVFQzFBNzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2
aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAq
LzsgfTsKKwkJMkRGOUVFRUUxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOUVF
RUQxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oICovOyB9OwogCQkz
MTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovOyB9OwogCQkzMTA5OTlD
NzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk2ODE0NkM3MUY1MDAyOURF
QjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CiAJCTMxMkMwQzRBMTQ2RERDOEEw
MDE2QzkxMSAvKiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJDMEM0OTE0NkREQzhBMDAxNkM5MTEgLyogV0tO
b3RpZmljYXRpb25Qcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0yMjg3LDcgKzIyOTEsNiBAQAogCQkxQTRENjY0NzE4QTJEOTFBMDBE
ODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJVUlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0RDY2NDkxOEEz
MDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tGcmFtZUluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBNEQ2NjRBMThBMzAzMEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxQTRENjY0RDE4QTMwMzFCMDBEODJFMjEgLyogV0tGcmFtZUluZm9JbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZyYW1lSW5mb0ludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNEY5NzZBMTAwRTdCNjYwMDYzN0Ex
OCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNEY5NzZCMTAwRTdCNjYw
MDYzN0ExOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmln
OyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTRGOTc2QzEwMEU3QjY2MDA2MzdBMTggLyogRmVhdHVyZURlZmluZXMueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRmVhdHVyZURlZmluZXMueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzM1LDYgKzI3MzgsMTEgQEAKIAkJMkRF
Njk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHBhdGggPSBpb3MvVmlld0dlc3R1cmVDb250
cm9sbGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREY5RUVFMzFBNzgx
RkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFQSUZyYW1lSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJERjlFRUU0MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRnJhbWVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTJERjlFRUU3MUE3ODI0NTUwMEI2Q0ZCRSAvKiBXS0ZyYW1lSW5mb0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRnJhbWVJbmZvSW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRGOUVFRUExQTc4MzZFRTAwQjZD
RkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJTmF2aWdhdGlvbkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyREY5RUVFRDFBNzg2RUFEMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSU5hdmlnYXRpb25SZXNwb25zZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyog
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTA5OTk3MTE0NkM3NTlCMDAy
OURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAvKiBXS05vdGlmaWNhdGlv
blByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLTm90aWZpY2F0
aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyMTMsNyArNTIy
MSw3IEBACiAJCQkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmgg
Ki8sCiAJCQkJMUE0RDY2NEExOEEzMDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLmggKi8sCiAJ
CQkJMUE0RDY2NDkxOEEzMDMwRTAwRDgyRTIxIC8qIFdLRnJhbWVJbmZvLm1tICovLAotCQkJCTFB
NEQ2NjREMThBMzAzMUIwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mb0ludGVybmFsLmggKi8sCisJCQkJ
MkRGOUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKIAkJ
CQkxQTQyMkY4QTE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgg
Ki8sCiAJCQkJMUE1QjFDNEYxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5oICovLAog
CQkJCTFBNUIxQzRFMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gKi8sCkBAIC02
MTEwLDEyICs2MTE4LDE2IEBACiAJCQkJMUY3RDM2QzAxOERBNTEzRjAwRDlENjU5IC8qIEFQSURv
d25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMDBCOTY2MTUxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZp
bmRDbGllbnQuaCAqLywKIAkJCQkzN0UyNUQ2RDE4RkRFNUQ2MDA1RDNBMDAgLyogQVBJRm9ybUNs
aWVudC5oICovLAorCQkJCTJERjlFRUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8u
Y3BwICovLAorCQkJCTJERjlFRUU0MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAq
LywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3Rv
cnlDbGllbnQuaCAqLywKIAkJCQkxQTI0NjRGMjE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVy
Q2xpZW50LmggKi8sCiAJCQkJN0NEM0E0ODAxQTVEMDJGQTAwOTYyM0I4IC8qIEFQSU5hdmlnYXRp
b24uY3BwICovLAogCQkJCTdDRDNBNDgxMUE1RDAyRkEwMDk2MjNCOCAvKiBBUElOYXZpZ2F0aW9u
LmggKi8sCisJCQkJMkRGOUVFRUExQTc4MzZFRTAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25BY3Rp
b24uaCAqLywKIAkJCQlCQ0Y2OUZBMTExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRh
dGEuY3BwICovLAogCQkJCUJDRjY5RkEwMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9u
RGF0YS5oICovLAorCQkJCTJERjlFRUVEMUE3ODZFQUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9u
UmVzcG9uc2UuaCAqLywKIAkJCQk3Qzg5RDI5NTFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNv
bmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTdDODlEMjk2MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQ
YWdlQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBB
UElQb2xpY3lDbGllbnQuaCAqLywKQEAgLTc0OTYsNiArNzUwOCw3IEBACiAJCQkJQzBDRTcyQUQx
MjQ3RTc4RDAwQkMwRUM0IC8qIEhhbmRsZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQQ29va2llQWNjZXB0UG9saWN5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTc1MDk1QTE4OTcyNDk3MDA0MDhGQUMgLyogSURCSWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMkRGOUVFRTgxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJ
bmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODM1M0RCMTg4NUJGOEMwMEQ5RkU0
NCAvKiBJREJTZXJpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYy
Q0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0NGNkIy
NTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAqLywKQEAgLTc2
NDMsNiArNzY1Niw3IEBACiAJCQkJMkRERTBBRkExODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGMUFDNkMxNjUx
NzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMUI3ODQ3MTE2M0YyNDY5MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAorCQkJCTJERjlFRUU2MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElG
cmFtZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzgwMTg1OTBBRTQwMEYzRUMwNSAv
KiBSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzODYxODU5
MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNTk0NzkwMTg3QjNCM0EwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC03Nzc4LDYgKzc3OTIsNyBAQAogCQkJCUJDMUJF
MUUwMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMwRTVGRTUxMkQ2OTcxNjAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwRTYwNjIxMkQ2QkE5MTAwMTJBNzJBIC8qIFdlYkdl
b2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREY5RUVFQzFB
NzgzNkVFMDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM1NENBQ0IxMkQ2NDI5MTAwNUM2N0IwIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzBFNjE4MzEyRDZDQjFEMDAxMkE3MkEgLyogV2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwRTYw
NzMxMkQ2QkMyMDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uUG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtODAwOCw3ICs4MDIzLDYgQEAKIAkJCQkzN0RGQTcwMDE4MTBCQjkyMDAxRjRBOUYg
LyogV0tGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0QwMTM5QjExMEZBNDIwMDAz
QjhBNjcgLyogV0tGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0RDY2NEMxOEEzMDMwRTAw
RDgyRTIxIC8qIFdLRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTRENjY0RTE4QTMw
MzFCMDBEODJFMjEgLyogV0tGcmFtZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNCOUY2QTUxMTIzREQwRDAwQTEzN0UwIC8qIFdLRnJhbWVQb2xpY3lMaXN0ZW5lci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFBRUEyMkYxNDY4N0JEQjAwODA0NTY5IC8qIFdLRnVsbEtleWJvYXJk
QWNjZXNzV2F0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDQTg1QzkxMzJBQkE0RTAwRTk2
MURGIC8qIFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
ODEwMiw2ICs4MTE2LDcgQEAKIAkJCQkxQTNDQzE2OTE4OTA3RUIwMDAxRTZFRDggLyogV0tQcm9j
ZXNzUG9vbEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTY1MDlDRTE4QjQxNDYyMDA2
MTQzMzIgLyogV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkY1
OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMkRGOUVFRUUxQTc4NkVBRDAwQjZDRkJFIC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVj
dGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDAxQkNEMTkwNUQ1NDkwMEM5
QzQ1RiAvKiBXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5RTMyOUIxODIyRTFDQzAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKQEAgLTkyNTQsNiArOTI2OSw3IEBACiAJCQkJMUFCQzNERjUxODk5RTQzNzAw
NEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNkZCQTJC
MTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTZGQkQyOTExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMkRGOUVFRTUxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUU1QjdGQjExRTdBRUQyMDBCQTY3NjcgLyogTmV0
c2NhcGVQbHVnaW5NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRBOUM1NTEyQjgxNkNGMDA4
RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE0
QTlDOUExMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNv
dXJjZXMgKi8sCg==
</data>
<flag name="review"
          id="270480"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>