<?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>90953</bug_id>
          
          <creation_ts>2012-07-11 01:51:15 -0700</creation_ts>
          <short_desc>[WK2][EFL] Add policy client to Ewk_View</short_desc>
          <delta_ts>2012-07-12 01:35:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          <blocked>61838</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>666522</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 01:51:15 -0700</bug_when>
    <thetext>We need to support policy decisions in Ewk_View by defining a policy client and attaching it to the Ewk_View.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666694</commentid>
    <comment_count>1</comment_count>
      <attachid>151691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-11 05:44:25 -0700</bug_when>
    <thetext>Created attachment 151691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667444</commentid>
    <comment_count>2</comment_count>
      <attachid>151691</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-12 00:01:55 -0700</bug_when>
    <thetext>Comment on attachment 151691
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp:44
&gt; +    bool madePolicyDecision;

isnt it more like it is accepted? &quot;didAccept&quot;?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.h:46
&gt; +    EWK_NAVIGATION_TYPE_LINK_CLICKED,

I prefer LINK_ACTIVATED especially since it covers a linked being tapped by a finger</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667456</commentid>
    <comment_count>3</comment_count>
      <attachid>151691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 00:30:17 -0700</bug_when>
    <thetext>Comment on attachment 151691
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp:44
&gt;&gt; +    bool madePolicyDecision;
&gt; 
&gt; isnt it more like it is accepted? &quot;didAccept&quot;?

No, we want to know if &quot;any&quot; decision was made by the client (accept, reject or download). This is needed, to make a default policy decision (&quot;accept&quot; in this patch) in the case the client did not make an explicit decision.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.h:46
&gt;&gt; +    EWK_NAVIGATION_TYPE_LINK_CLICKED,
&gt; 
&gt; I prefer LINK_ACTIVATED especially since it covers a linked being tapped by a finger

Good point. I will fix this and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667459</commentid>
    <comment_count>4</comment_count>
      <attachid>151871</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 00:33:29 -0700</bug_when>
    <thetext>Created attachment 151871
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667461</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-12 00:36:09 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 151691 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151691&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp:44
&gt; &gt;&gt; +    bool madePolicyDecision;
&gt; &gt; 
&gt; &gt; isnt it more like it is accepted? &quot;didAccept&quot;?
&gt; 
&gt; No, we want to know if &quot;any&quot; decision was made by the client (accept, reject or download). This is needed, to make a default policy decision (&quot;accept&quot; in this patch) in the case the client did not make an explicit decision.

bool clientTookDecision; might be a bit more clear

or actedUponByClient..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667466</commentid>
    <comment_count>6</comment_count>
      <attachid>151691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 00:42:37 -0700</bug_when>
    <thetext>Comment on attachment 151691
Patch

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp:44
&gt;&gt;&gt;&gt; +    bool madePolicyDecision;
&gt;&gt;&gt; 
&gt;&gt;&gt; isnt it more like it is accepted? &quot;didAccept&quot;?
&gt;&gt; 
&gt;&gt; No, we want to know if &quot;any&quot; decision was made by the client (accept, reject or download). This is needed, to make a default policy decision (&quot;accept&quot; in this patch) in the case the client did not make an explicit decision.
&gt; 
&gt; bool clientTookDecision; might be a bit more clear
&gt; 
&gt; or actedUponByClient..

Ok, I&apos;ll clarify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667467</commentid>
    <comment_count>7</comment_count>
      <attachid>151873</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-07-12 00:43:18 -0700</bug_when>
    <thetext>Created attachment 151873
Patch

Take Kenneth&apos;s feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667513</commentid>
    <comment_count>8</comment_count>
      <attachid>151873</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 01:35:51 -0700</bug_when>
    <thetext>Comment on attachment 151873
Patch

Clearing flags on attachment: 151873

Committed r122426: &lt;http://trac.webkit.org/changeset/122426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667514</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-12 01:35:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151691</attachid>
            <date>2012-07-11 05:44:25 -0700</date>
            <delta_ts>2012-07-12 00:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90953_policy_client.patch</filename>
            <type>text/plain</type>
            <size>30189</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwMWEwNTUxLi41YTUxMjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEFkZCBwb2xpY3kgY2xpZW50IHRvIEV3a19WaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVtaXQgbmV3
ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIgYW5kICJwb2xpY3ksZGVjaXNpb24sbmV3LHdp
bmRvdyIKKyAgICAgICAgb24gdGhlIEV3a19WaWV3IHdoZW4gcG9saWN5IGRlY2lzaW9ucyBzaG91
bGQgYmUgdGFrZW4gYnkgdGhlIGNsaWVudC4KKworICAgICAgICBBIG5ldyBFd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24gdHlwZSBpcyBpbnRyb2R1Y2VkIHRvIHByb3ZpZGUKKyAgICAgICAg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBhbmQgbWFrZSBhIGRlY2lz
aW9uLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGlzIGFjY2Vw
dGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24pOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2ZyZWUpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X25hdmlnYXRpb25f
dHlwZV9nZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vdXNlX2J1dHRvbl9n
ZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vZGlmaWVyc19nZXQpOgorICAg
ICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2ZyYW1lX25hbWVfZ2V0KToKKyAgICAgICAgKGV3
a19uYXZpZ2F0aW9uX3BvbGljeV9yZXF1ZXN0X2dldCk6CisgICAgICAgIChld2tfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9yZWplY3QpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX2Rvd25sb2FkKToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9u
ZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19iYXNlX2FkZCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgIChld2tfdmll
d19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xp
Y3lfY2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1ZpZXcpOgorICAgICAgICAoZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmg6CisKIDIwMTItMDctMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtFRkxdIEFkZCBCYXR0ZXJ5IFN0YXR1cyBQcm92
aWRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBiZDA3YzNiLi41YmIxMTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMzcsOSArMzcsMTEgQEAgTElTVChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAg
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfaW50ZW50X3NlcnZpY2UuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVx
dWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKICAgICBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcmVzb3VyY2VfbG9hZF9jbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3dlYl9lcnJvci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX3Jlc291cmNlLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKaW5kZXggNzk5
ZDI1OC4uOGQzNTFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRVdlYktpdDIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNs
dWRlICJld2tfaW50ZW50LmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCisjaW5j
bHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCiAjaW5jbHVkZSAiZXdrX3Vy
bF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKICNpbmNsdWRlICJld2tfd2ViX2Vy
cm9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTEzY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
LmNwcApAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oIgorCisj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgi
CisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKKyNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworLyoqCisgKiBcc3RydWN0ICBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uCisgKiBA
YnJpZWYgICBDb250YWlucyB0aGUgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gZGF0YS4KKyAq
Lworc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24geworICAgIFdLUmV0YWlu
UHRyPFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZj4gbGlzdGVuZXI7CisgICAgYm9vbCBtYWRlUG9s
aWN5RGVjaXNpb247CisgICAgRXdrX05hdmlnYXRpb25fVHlwZSBuYXZpZ2F0aW9uVHlwZTsKKyAg
ICBFdmVudF9Nb3VzZV9CdXR0b24gbW91c2VCdXR0b247CisgICAgRXZlbnRfTW9kaWZpZXJfS2V5
cyBtb2RpZmllcnM7CisgICAgRXdrX1VybF9SZXF1ZXN0KiByZXF1ZXN0OworICAgIGNvbnN0IGNo
YXIqIGZyYW1lTmFtZTsKK307CisKK3ZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
X2ZyZWUoRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihkZWNpc2lvbik7CisKKyAgICAvLyBUaGlzIGlzIHRo
ZSBkZWZhdWx0IGNob2ljZSBmb3IgYWxsIHBvbGljeSBkZWNpc2lvbnMgaW4gV2ViUGFnZVByb3h5
LmNwcC4KKyAgICBpZiAoIWRlY2lzaW9uLT5tYWRlUG9saWN5RGVjaXNpb24pCisgICAgICAgIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclVzZShkZWNpc2lvbi0+bGlzdGVuZXIuZ2V0KCkpOworCisgICAg
ZXdrX3VybF9yZXF1ZXN0X3VucmVmKGRlY2lzaW9uLT5yZXF1ZXN0KTsKKyAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChkZWNpc2lvbi0+ZnJhbWVOYW1lKTsKKyAgICBmcmVlKGRlY2lzaW9uKTsKK30K
KworRXdrX05hdmlnYXRpb25fVHlwZSBld2tfbmF2aWdhdGlvbl9wb2xpY3lfbmF2aWdhdGlvbl90
eXBlX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQor
eworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkZWNpc2lvbiwgRVdLX05BVklH
QVRJT05fVFlQRV9PVEhFUik7CisKKyAgICByZXR1cm4gZGVjaXNpb24tPm5hdmlnYXRpb25UeXBl
OworfQorCitFdmVudF9Nb3VzZV9CdXR0b24gZXdrX25hdmlnYXRpb25fcG9saWN5X21vdXNlX2J1
dHRvbl9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikK
K3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGVjaXNpb24sIEVWRU5UX01P
VVNFX0JVVFRPTl9OT05FKTsKKworICAgIHJldHVybiBkZWNpc2lvbi0+bW91c2VCdXR0b247Cit9
CisKK0V2ZW50X01vZGlmaWVyX0tleXMgZXdrX25hdmlnYXRpb25fcG9saWN5X21vZGlmaWVyc19n
ZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGVjaXNpb24sIHN0YXRpY19jYXN0PEV2
ZW50X01vZGlmaWVyX0tleXM+KDApKTsKKworICAgIHJldHVybiBkZWNpc2lvbi0+bW9kaWZpZXJz
OworfQorCitjb25zdCBjaGFyKiBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZnJhbWVfbmFtZV9nZXQo
Y29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGVjaXNpb24sIDApOworCisgICAgcmV0dXJu
IGRlY2lzaW9uLT5mcmFtZU5hbWU7Cit9CisKK0V3a19VcmxfUmVxdWVzdCogZXdrX25hdmlnYXRp
b25fcG9saWN5X3JlcXVlc3RfZ2V0KGNvbnN0IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lv
biogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGRlY2lz
aW9uLCAwKTsKKworICAgIHJldHVybiBkZWNpc2lvbi0+cmVxdWVzdDsKK30KKwordm9pZCBld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KEV3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZGVj
aXNpb24pOworCisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGRlY2lzaW9uLT5saXN0ZW5l
ci5nZXQoKSk7CisgICAgZGVjaXNpb24tPm1hZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7Cit9CisK
K3ZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3JlamVjdChFd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKGRlY2lzaW9uKTsKKworICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShkZWNp
c2lvbi0+bGlzdGVuZXIuZ2V0KCkpOworICAgIGRlY2lzaW9uLT5tYWRlUG9saWN5RGVjaXNpb24g
PSB0cnVlOworfQorCit2b2lkIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9kb3dubG9h
ZChFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKGRlY2lzaW9uKTsKKworICAgIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lckRvd25sb2FkKGRlY2lzaW9uLT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVjaXNpb24tPm1h
ZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7Cit9CisKKy8vIEV3a19OYXZpZ2F0aW9uX1R5cGUgZW51
bSB2YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9O
X1RZUEVfTElOS19DTElDS0VELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlTGlua0NsaWNrZWQpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfTkFWSUdBVElPTl9UWVBFX0ZPUk1fU1VC
TUlUVEVELCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlRm9ybVN1Ym1pdHRlZCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfQkFDS19GT1JXQVJELCBrV0tG
cmFtZU5hdmlnYXRpb25UeXBlQmFja0ZvcndhcmQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfTkFWSUdBVElPTl9UWVBFX1JFTE9BRCwga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZVJl
bG9hZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVf
Rk9STV9SRVNVQk1JVFRFRCwga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZvcm1SZXN1Ym1pdHRlZCk7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfT1RIRVIs
IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVPdGhlcik7CisKKy8vIEV2ZW50X01vdXNlX0J1dHRvbiBl
bnVtIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9VU0Vf
QlVUVE9OX05PTkUsIGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbik7CitDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JVVFRPTl9MRUZULCBrV0tFdmVudE1vdXNlQnV0
dG9uTGVmdEJ1dHRvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PVVNF
X0JVVFRPTl9NSURETEUsIGtXS0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b24pOworQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT1VTRV9CVVRUT05fUklHSFQsIGtXS0V2ZW50
TW91c2VCdXR0b25SaWdodEJ1dHRvbik7CisKKy8vIEV2ZW50X01vZGlmaWVyX0tleXMgdmFsaWRh
dGlvbgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT0RJRklFUl9LRVlfU0hJ
RlQsIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFVkVOVF9NT0RJRklFUl9LRVlfQ1RSTCwga1dLRXZlbnRNb2RpZmllcnNDb250cm9sS2V5
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9ESUZJRVJfS0VZX0FMVCwg
a1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
VkVOVF9NT0RJRklFUl9LRVlfTUVUQSwga1dLRXZlbnRNb2RpZmllcnNNZXRhS2V5KTsKKworRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fbmV3KFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vdXNl
QnV0dG9uIG1vdXNlQnV0dG9uLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tVUkxSZXF1
ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IGNoYXIqIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3Rl
bmVyUmVmIGxpc3RlbmVyKQoreworICAgIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiog
ZXdrUG9saWN5RGVjaXNpb24gPSBzdGF0aWNfY2FzdDxFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVj
aXNpb24qPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbikp
KTsKKyAgICBld2tQb2xpY3lEZWNpc2lvbi0+bGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICBld2tQ
b2xpY3lEZWNpc2lvbi0+bW91c2VCdXR0b24gPSBzdGF0aWNfY2FzdDxFdmVudF9Nb3VzZV9CdXR0
b24+KG1vdXNlQnV0dG9uKTsKKyAgICBld2tQb2xpY3lEZWNpc2lvbi0+bW9kaWZpZXJzID0gc3Rh
dGljX2Nhc3Q8RXZlbnRfTW9kaWZpZXJfS2V5cz4obW9kaWZpZXJzKTsKKyAgICBld2tQb2xpY3lE
ZWNpc2lvbi0+bmF2aWdhdGlvblR5cGUgPSBzdGF0aWNfY2FzdDxFd2tfTmF2aWdhdGlvbl9UeXBl
PihuYXZpZ2F0aW9uVHlwZSk7CisgICAgZXdrUG9saWN5RGVjaXNpb24tPnJlcXVlc3QgPSBld2tf
dXJsX3JlcXVlc3RfbmV3KHJlcXVlc3QpOworICAgIGV3a1BvbGljeURlY2lzaW9uLT5mcmFtZU5h
bWUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZChmcmFtZU5hbWUpOworCisgICAgcmV0dXJuIGV3a1Bv
bGljeURlY2lzaW9uOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjlkNTYwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uLmgKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICog
QGZpbGUgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgKKyAqIEBicmllZiAgIERl
c2NyaWJlcyB0aGUgRXdrIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIEFQSS4KKyAqLworCisj
aWZuZGVmIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9oCisjZGVmaW5lIGV3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbl9oCisKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIK
KyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKKworLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb24gKi8KK3R5cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVj
aXNpb24gRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOworCisvLy8gRW51bSBjb250YWlu
aW5nIG5hdmlnYXRpb24gdHlwZXMKK3R5cGVkZWYgZW51bSAgeworICAgIEVXS19OQVZJR0FUSU9O
X1RZUEVfTElOS19DTElDS0VELAorICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRU
RUQsCisgICAgRVdLX05BVklHQVRJT05fVFlQRV9CQUNLX0ZPUldBUkQsCisgICAgRVdLX05BVklH
QVRJT05fVFlQRV9SRUxPQUQsCisgICAgRVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlU
VEVELAorICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfT1RIRVIKK30gRXdrX05hdmlnYXRpb25fVHlw
ZTsKKworLy8vIEVudW0gY29udGFpbmluZyBidXR0b24gdHlwZXMKK3R5cGVkZWYgZW51bSB7Cisg
ICAgRVZFTlRfTU9VU0VfQlVUVE9OX05PTkUgPSAtMSwKKyAgICBFVkVOVF9NT1VTRV9CVVRUT05f
TEVGVCA9IDAsCisgICAgRVZFTlRfTU9VU0VfQlVUVE9OX01JRERMRSA9IDEsCisgICAgRVZFTlRf
TU9VU0VfQlVUVE9OX1JJR0hUID0gMgorfSBFdmVudF9Nb3VzZV9CdXR0b247CisKK3R5cGVkZWYg
ZW51bSB7CisgICAgRVZFTlRfTU9ESUZJRVJfS0VZX1NISUZUID0gMSA8PCAwLAorICAgIEVWRU5U
X01PRElGSUVSX0tFWV9DVFJMID0gMSA8PCAxLAorICAgIEVWRU5UX01PRElGSUVSX0tFWV9BTFQg
PSAxIDw8IDIsCisgICAgRVZFTlRfTU9ESUZJRVJfS0VZX01FVEEgPSAxIDw8IDMKK30gRXZlbnRf
TW9kaWZpZXJfS2V5czsKKworLyoqCisgKiBGcmVlcyB0aGUgZ2l2ZW4gb2JqZWN0LgorICoKKyAq
IEBwYXJhbSBkZWNpc2lvbiB0aGUgcG9saWN5IGRlY2lzaW9uIG9iamVjdCB0byBmcmVlCisgKi8K
K0VBUEkgdm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZnJlZShFd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9uKTsKKworLyoqCisgKiBRdWVyeSB0eXBlIGZv
ciB0aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgorICoKKyAqIEBwYXJhbSBkZWNpc2lv
biBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJl
dHVybiB0aGUgdHlwZSBvZiBuYXZpZ2F0aW9uLgorICovCitFQVBJIEV3a19OYXZpZ2F0aW9uX1R5
cGUgZXdrX25hdmlnYXRpb25fcG9saWN5X25hdmlnYXRpb25fdHlwZV9nZXQoY29uc3QgRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogUXVlcnkgbW91
c2UgYnV0dG9uIGZvciB0aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgorICoKKyAqIEBw
YXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBvYmplY3QgdG8gcXVlcnku
CisgKgorICogQHJldHVybiB0aGUgbW91c2UgYnV0dG9uIGNsaWNrZWQgdG8gdHJpZ2dlciB0aGUg
bmF2aWdhdGlvbi4KKyAqLworRUFQSSBFdmVudF9Nb3VzZV9CdXR0b24gZXdrX25hdmlnYXRpb25f
cG9saWN5X21vdXNlX2J1dHRvbl9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uICpkZWNpc2lvbik7CisKKy8qKgorICogUXVlcnkgbW9kaWZpZXIga2V5cyBmb3IgdGhpcyBu
YXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdh
dGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhl
IG1vZGlmaWVyIGtleXMgdXNlZCB3aGVuIHRyaWdnZXJpbmcgdGhlIG5hdmlnYXRpb24uCisgKi8K
K0VBUEkgRXZlbnRfTW9kaWZpZXJfS2V5cyBld2tfbmF2aWdhdGlvbl9wb2xpY3lfbW9kaWZpZXJz
X2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9uKTsKKwor
LyoqCisgKiBRdWVyeSBmcmFtZSBuYW1lIGZvciB0aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lz
aW9uLgorICoKKyAqIFRoZSBmcmFtZSBuYW1lIGlzIG5vbi1udWxsIGZvciBuZXcgd2luZG93IHBv
bGljeSBkZWNpc2lvbnMgb25seS4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBw
b2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIGZyYW1l
IG5hbWUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAg
ICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9z
c2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQor
ICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdz
aGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJkdXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFy
ICpld2tfbmF2aWdhdGlvbl9wb2xpY3lfZnJhbWVfbmFtZV9nZXQoY29uc3QgRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogUXVlcnkgVVJMIHJlcXVl
c3QgZm9yIHRoaXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCisgKgorICogQHBhcmFtIGRl
Y2lzaW9uIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIG9iamVjdCB0byBxdWVyeS4KKyAqCisg
KiBAcmV0dXJuIFRoZSBVUkwgcmVxdWVzdCBwb2ludGVyIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBl
cnJvci4KKyAqLworRUFQSSBFd2tfVXJsX1JlcXVlc3QgKmV3a19uYXZpZ2F0aW9uX3BvbGljeV9y
ZXF1ZXN0X2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9u
KTsKKworLyoqCisgKiBBY2NlcHRzIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QuCisgKgorICogVGhl
IG5hdmlnYXRpb24gd2lsbCBiZSBhY2NlcHRlZCBieSBkZWZhdWx0LgorICoKKyAqIEBwYXJhbSBk
ZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBvYmplY3QgdG8gcXVlcnkuCisgKi8K
K0VBUEkgdm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KEV3a19OYXZp
Z2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNpb24pOworCisvKioKKyAqIFJlamVjdHMgdGhl
IG5hdmlnYXRpb24gcmVxdWVzdC4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBw
b2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5LgorICovCitFQVBJIHZvaWQgZXdrX25hdmln
YXRpb25fcG9saWN5X2RlY2lzaW9uX3JlamVjdChFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNp
b24gKmRlY2lzaW9uKTsKKworLyoqCisgKiBUcmlnZ2VycyBhIGRvd25sb2FkIGluc3RlYWQgb2Yg
bmF2aWdhdGluZyB0byB0aGUgdXJsLgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9u
IHBvbGljeSBkZWNpc2lvbiBvYmplY3QgdG8gcXVlcnkuCisgKi8KK0VBUEkgdm9pZCBld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQoRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uICpkZWNpc2lvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvLyBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25faApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYWJjOGJlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZV9oCisjZGVmaW5lIGV3a19uYXZpZ2F0aW9uX3Bv
bGljeV9kZWNpc2lvbl9wcml2YXRlX2gKKworI2luY2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUg
IldLRXZlbnQuaCIKKyNpbmNsdWRlICJXS1BhZ2VMb2FkVHlwZXMuaCIKKwordHlwZWRlZiBzdHJ1
Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb247CisKK0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZXdrX25hdmlnYXRp
b25fcG9saWN5X2RlY2lzaW9uX25ldyhXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5
cGUsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyBtb2Rp
ZmllcnMsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCBjaGFyKiBmcmFtZU5hbWUsIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lcik7CisKKyNlbmRpZiAvLyBld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi44NmNhNDJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ByaXZhdGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIGV3a19wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ByaXZhdGVfaAorCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2RlZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKGV3a05hbWUsIHdlYmNvcmVOYW1lKSBcCisgICAgICAgIENPTVBJTEVfQVNTRVJUKGlu
dChld2tOYW1lKSA9PSBpbnQod2ViY29yZU5hbWUpLCBtaXNtYXRjaGluZ0VudW1zKQorCisjZW5k
aWYgLy8gZXdrX3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuY3BwCmluZGV4IGViNmIxNWIuLjI3NzAyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRl
LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVyX2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVk
ZSAiZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdf
cHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZh
dGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00OTUsNiArNDk2LDcgQEAg
RXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRkKEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVm
IGNvbnRleHRSZWYsIFdLUGFnZUdyb3UKIAogICAgIHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xp
ZW50SW1wbDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiks
IGV3a1ZpZXcpOwogICAgIGV3a192aWV3X2xvYWRlcl9jbGllbnRfYXR0YWNoKHRvQVBJKHByaXYt
PnBhZ2VDbGllbnQtPnBhZ2UoKSksIGV3a1ZpZXcpOworICAgIGV3a192aWV3X3BvbGljeV9jbGll
bnRfYXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIGV3a1ZpZXcpOwogICAg
IGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50X2F0dGFjaCh0b0FQSShwcml2LT5wYWdlQ2xp
ZW50LT5wYWdlKCkpLCBld2tWaWV3KTsKIAogICAgIHJldHVybiBld2tWaWV3OwpAQCAtNzc2LDYg
Kzc3OCwyOCBAQCB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09i
amVjdCogZXdrVmlldykKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1Zp
ZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQiLCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJu
YWwKKyAqIFJlcG9ydHMgdGhhdCBhIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIHNob3VsZCBi
ZSB0YWtlbi4KKyAqCisgKiBFbWl0cyBzaWduYWw6ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlv
biIuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19P
YmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24p
Cit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAicG9saWN5
LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBkZWNpc2lvbik7Cit9CisKKy8qKgorICogQGludGVybmFs
CisgKiBSZXBvcnRzIHRoYXQgYSBuZXcgd2luZG93IHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUg
dGFrZW4uCisgKgorICogRW1pdHMgc2lnbmFsOiAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ci
LgorICovCit2b2lkIGV3a192aWV3X25ld193aW5kb3dfcG9saWN5X2RlY2lzaW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQor
eworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgInBvbGljeSxk
ZWNpc2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24pOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
aHRtbF9zdHJpbmdfbG9hZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogaHRtbCwg
Y29uc3QgY2hhciogYmFzZVVybCwgY29uc3QgY2hhciogdW5yZWFjaGFibGVVcmwpCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGY2MDkyYTYu
LjM4ODdjODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
aApAQCAtMzQsNiArMzQsOCBAQAogICogLSAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25z
dCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNpb25hbCBsb2FkIGZhaWxlZC4KICAqIC0gImxv
YWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lkOiB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZv
ciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgdm9p
ZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxvYWQuCisgKiAtICJwb2xpY3ksZGVjaXNpb24s
bmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbio6IGEgbmF2aWdhdGlv
biBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2VuLgorICogLSAicG9saWN5LGRlY2lzaW9u
LG5ldyx3aW5kb3ciLCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qOiBhIG5ldyB3aW5k
b3cgcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4KICAqIC0gInJlc291cmNlLHJlcXVl
c3QsbmV3IiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1
ZXN0IHdhcyBpbml0aWF0ZWQuCiAgKiAtICJ0aXRsZSxjaGFuZ2VkIiwgY29uc3QgY2hhcio6IHRp
dGxlIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgogICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNjg5ZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xp
Y3lfY2xpZW50LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXS0ZyYW1lLmgiCisjaW5jbHVkZSAiZXdrX25h
dmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wb2xpY3lfY2xpZW50
X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCisjaW5jbHVkZSA8d3Rm
L3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5s
aW5lIEV2YXNfT2JqZWN0KiB0b0V3a1ZpZXcoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlw
ZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3Vz
ZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNp
b24gPSBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fbmV3KG5hdmlnYXRpb25UeXBlLCBt
b3VzZUJ1dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCAwLCBsaXN0ZW5lcik7CisgICAgZXdrX3Zp
ZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24odG9Fd2tWaWV3KGNsaWVudEluZm8pLCBkZWNp
c2lvbik7CisgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2ZyZWUoZGVjaXNpb24p
OworfQorCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0
aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBt
b3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3RyaW5nUmVmIGZyYW1lTmFt
ZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uKiBkZWNpc2lvbiA9IGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9uZXcobmF2
aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIHRvSW1wbChmcmFt
ZU5hbWUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsaXN0ZW5lcik7CisgICAgZXdrX3ZpZXdf
bmV3X3dpbmRvd19wb2xpY3lfZGVjaXNpb24odG9Fd2tWaWV3KGNsaWVudEluZm8pLCBkZWNpc2lv
bik7CisgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2ZyZWUoZGVjaXNpb24pOwor
fQorCit2b2lkIGV3a192aWV3X3BvbGljeV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVm
LCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBXS1BhZ2VQb2xpY3lDbGllbnQgcG9saWN5
Q2xpZW50OworICAgIG1lbXNldCgmcG9saWN5Q2xpZW50LCAwLCBzaXplb2YoV0tQYWdlUG9saWN5
Q2xpZW50KSk7CisgICAgcG9saWN5Q2xpZW50LnZlcnNpb24gPSBrV0tQYWdlUG9saWN5Q2xpZW50
Q3VycmVudFZlcnNpb247CisgICAgcG9saWN5Q2xpZW50LmNsaWVudEluZm8gPSBld2tWaWV3Owor
ICAgIHBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBwb2xpY3lDbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uOworCisg
ICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChwYWdlUmVmLCAmcG9saWN5Q2xpZW50KTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3Bv
bGljeV9jbGllbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzY3MjQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJpdmF0ZS5oCkBAIC0wLDAg
KzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdrX3ZpZXdfcG9saWN5X2Ns
aWVudF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlX2gK
KworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorCit2b2lk
IGV3a192aWV3X3BvbGljeV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09i
amVjdCogZXdrVmlldyk7CisKKyNlbmRpZiAvLyBld2tfdmlld19wb2xpY3lfY2xpZW50X3ByaXZh
dGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
cHJpdmF0ZS5oCmluZGV4IGY5ZjIxMTMuLjM4Y2Q3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgSW50U2l6ZTsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1JlcXVlc3QgRXdrX1Vy
bF9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsK
IHR5cGVkZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3VyY2U7Cit0eXBl
ZGVmIHN0cnVjdCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIEV3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbjsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiB0eXBlZGVmIHN0cnVj
dCBfRXdrX0ludGVudCBFd2tfSW50ZW50OwogI2VuZGlmCkBAIC00OCw2ICs0OSw4IEBAIHZvaWQg
ZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3Vi
bGUgcHJvZ3Jlc3MpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFz
X09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpOwogdm9pZCBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZv
aWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3
KTsKK3ZvaWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwordm9p
ZCBld2tfdmlld19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmll
dywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7CiB2b2lkIGV3a192
aWV3X3RpdGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxl
KTsKIHZvaWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9pbml0aWF0ZWQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9SZXNvdXJjZSogcmVz
b3VyY2UsIEV3a19VcmxfUmVxdWVzdCogcmVxdWVzdCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151871</attachid>
            <date>2012-07-12 00:33:29 -0700</date>
            <delta_ts>2012-07-12 00:43:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90953_policy_client.patch</filename>
            <type>text/plain</type>
            <size>30526</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMjY4ZjFiLi5lZjk4MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkg
QEAKIDIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbV0syXVtFRkxdIEFkZCBwb2xpY3kgY2xpZW50IHRvIEV3a19WaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVtaXQgbmV3
ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIgYW5kICJwb2xpY3ksZGVjaXNpb24sbmV3LHdp
bmRvdyIKKyAgICAgICAgb24gdGhlIEV3a19WaWV3IHdoZW4gcG9saWN5IGRlY2lzaW9ucyBzaG91
bGQgYmUgdGFrZW4gYnkgdGhlIGNsaWVudC4KKworICAgICAgICBBIG5ldyBFd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24gdHlwZSBpcyBpbnRyb2R1Y2VkIHRvIHByb3ZpZGUKKyAgICAgICAg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBhbmQgbWFrZSBhIGRlY2lz
aW9uLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGlzIGFjY2Vw
dGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24pOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2ZyZWUpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X25hdmlnYXRpb25f
dHlwZV9nZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vdXNlX2J1dHRvbl9n
ZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vZGlmaWVyc19nZXQpOgorICAg
ICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2ZyYW1lX25hbWVfZ2V0KToKKyAgICAgICAgKGV3
a19uYXZpZ2F0aW9uX3BvbGljeV9yZXF1ZXN0X2dldCk6CisgICAgICAgIChld2tfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9yZWplY3QpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX2Rvd25sb2FkKToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9u
ZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19iYXNlX2FkZCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgIChld2tfdmll
d19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xp
Y3lfY2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1ZpZXcpOgorICAgICAgICAoZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmg6CisKKzIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KKwogICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IHNob3VsZCBwcm92aWRl
IG1vcmUgcmVzb3VyY2UgbG9hZGluZyBub3RpZmljYXRpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGY5YjQ3NDUuLjkzYTEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0zNywxMCArMzcsMTIgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a193ZWJfcmVzb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaAppbmRleCA5YWZhNGYxLi44ZmE5MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJld2tfaW50
ZW50X3NlcnZpY2UuaCIKKyNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24u
aCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NWQxNjIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgiCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbiBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiB7CisgICAgV0tSZXRhaW5QdHI8V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmPiBsaXN0
ZW5lcjsKKyAgICBib29sIG1hZGVQb2xpY3lEZWNpc2lvbjsKKyAgICBFd2tfTmF2aWdhdGlvbl9U
eXBlIG5hdmlnYXRpb25UeXBlOworICAgIEV2ZW50X01vdXNlX0J1dHRvbiBtb3VzZUJ1dHRvbjsK
KyAgICBFdmVudF9Nb2RpZmllcl9LZXlzIG1vZGlmaWVyczsKKyAgICBFd2tfVXJsX1JlcXVlc3Qq
IHJlcXVlc3Q7CisgICAgY29uc3QgY2hhciogZnJhbWVOYW1lOworfTsKKwordm9pZCBld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZnJlZShFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNp
b24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGRlY2lzaW9u
KTsKKworICAgIC8vIFRoaXMgaXMgdGhlIGRlZmF1bHQgY2hvaWNlIGZvciBhbGwgcG9saWN5IGRl
Y2lzaW9ucyBpbiBXZWJQYWdlUHJveHkuY3BwLgorICAgIGlmICghZGVjaXNpb24tPm1hZGVQb2xp
Y3lEZWNpc2lvbikKKyAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlKGRlY2lzaW9uLT5s
aXN0ZW5lci5nZXQoKSk7CisKKyAgICBld2tfdXJsX3JlcXVlc3RfdW5yZWYoZGVjaXNpb24tPnJl
cXVlc3QpOworICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGRlY2lzaW9uLT5mcmFtZU5hbWUpOwor
ICAgIGZyZWUoZGVjaXNpb24pOworfQorCitFd2tfTmF2aWdhdGlvbl9UeXBlIGV3a19uYXZpZ2F0
aW9uX3BvbGljeV9uYXZpZ2F0aW9uX3R5cGVfZ2V0KGNvbnN0IEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5f
VkFMKGRlY2lzaW9uLCBFV0tfTkFWSUdBVElPTl9UWVBFX09USEVSKTsKKworICAgIHJldHVybiBk
ZWNpc2lvbi0+bmF2aWdhdGlvblR5cGU7Cit9CisKK0V2ZW50X01vdXNlX0J1dHRvbiBld2tfbmF2
aWdhdGlvbl9wb2xpY3lfbW91c2VfYnV0dG9uX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChkZWNpc2lvbiwgRVZFTlRfTU9VU0VfQlVUVE9OX05PTkUpOworCisgICAgcmV0dXJuIGRl
Y2lzaW9uLT5tb3VzZUJ1dHRvbjsKK30KKworRXZlbnRfTW9kaWZpZXJfS2V5cyBld2tfbmF2aWdh
dGlvbl9wb2xpY3lfbW9kaWZpZXJzX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVj
aXNpb24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChk
ZWNpc2lvbiwgc3RhdGljX2Nhc3Q8RXZlbnRfTW9kaWZpZXJfS2V5cz4oMCkpOworCisgICAgcmV0
dXJuIGRlY2lzaW9uLT5tb2RpZmllcnM7Cit9CisKK2NvbnN0IGNoYXIqIGV3a19uYXZpZ2F0aW9u
X3BvbGljeV9mcmFtZV9uYW1lX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNp
b24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChkZWNp
c2lvbiwgMCk7CisKKyAgICByZXR1cm4gZGVjaXNpb24tPmZyYW1lTmFtZTsKK30KKworRXdrX1Vy
bF9SZXF1ZXN0KiBld2tfbmF2aWdhdGlvbl9wb2xpY3lfcmVxdWVzdF9nZXQoY29uc3QgRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoZGVjaXNpb24sIDApOworCisgICAgcmV0dXJuIGRlY2lzaW9uLT5y
ZXF1ZXN0OworfQorCit2b2lkIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9hY2NlcHQo
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihkZWNpc2lvbik7CisKKyAgICBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJVc2UoZGVjaXNpb24tPmxpc3RlbmVyLmdldCgpKTsKKyAgICBkZWNpc2lvbi0+bWFkZVBvbGlj
eURlY2lzaW9uID0gdHJ1ZTsKK30KKwordm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fcmVqZWN0KEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCit7Cisg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZGVjaXNpb24pOworCisgICAgV0tGcmFtZVBv
bGljeUxpc3RlbmVySWdub3JlKGRlY2lzaW9uLT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVjaXNp
b24tPm1hZGVQb2xpY3lEZWNpc2lvbiA9IHRydWU7Cit9CisKK3ZvaWQgZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiog
ZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZGVjaXNpb24pOwor
CisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoZGVjaXNpb24tPmxpc3RlbmVyLmdl
dCgpKTsKKyAgICBkZWNpc2lvbi0+bWFkZVBvbGljeURlY2lzaW9uID0gdHJ1ZTsKK30KKworLy8g
RXdrX05hdmlnYXRpb25fVHlwZSBlbnVtIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQRV9MSU5LX0FDVElWQVRFRCwga1dLRnJhbWVOYXZp
Z2F0aW9uVHlwZUxpbmtDbGlja2VkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdL
X05BVklHQVRJT05fVFlQRV9GT1JNX1NVQk1JVFRFRCwga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUZv
cm1TdWJtaXR0ZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFV0tfTkFWSUdBVElP
Tl9UWVBFX0JBQ0tfRk9SV0FSRCwga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZUJhY2tGb3J3YXJkKTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQRV9SRUxPQUQs
IGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVSZWxvYWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShFV0tfTkFWSUdBVElPTl9UWVBFX0ZPUk1fUkVTVUJNSVRURUQsIGtXS0ZyYW1lTmF2aWdh
dGlvblR5cGVGb3JtUmVzdWJtaXR0ZWQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShF
V0tfTkFWSUdBVElPTl9UWVBFX09USEVSLCBrV0tGcmFtZU5hdmlnYXRpb25UeXBlT3RoZXIpOwor
CisvLyBFdmVudF9Nb3VzZV9CdXR0b24gZW51bSB2YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JVVFRPTl9OT05FLCBrV0tFdmVudE1vdXNlQnV0dG9u
Tm9CdXR0b24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVOVF9NT1VTRV9CVVRU
T05fTEVGVCwga1dLRXZlbnRNb3VzZUJ1dHRvbkxlZnRCdXR0b24pOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShFVkVOVF9NT1VTRV9CVVRUT05fTUlERExFLCBrV0tFdmVudE1vdXNlQnV0
dG9uTWlkZGxlQnV0dG9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9V
U0VfQlVUVE9OX1JJR0hULCBrV0tFdmVudE1vdXNlQnV0dG9uUmlnaHRCdXR0b24pOworCisvLyBF
dmVudF9Nb2RpZmllcl9LZXlzIHZhbGlkYXRpb24KK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oRVZFTlRfTU9ESUZJRVJfS0VZX1NISUZULCBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5KTsK
K0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9ESUZJRVJfS0VZX0NUUkwsIGtX
S0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KEVWRU5UX01PRElGSUVSX0tFWV9BTFQsIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KTsKK0NPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9ESUZJRVJfS0VZX01FVEEsIGtXS0V2ZW50
TW9kaWZpZXJzTWV0YUtleSk7CisKK0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX25ldyhXS0ZyYW1lTmF2aWdhdGlvblR5cGUgbmF2
aWdhdGlvblR5cGUsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tFdmVudE1vZGlm
aWVycyBtb2RpZmllcnMsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCBjaGFyKiBmcmFt
ZU5hbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lcikKK3sKKyAgICBFd2tfTmF2
aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGV3a1BvbGljeURlY2lzaW9uID0gc3RhdGljX2Nhc3Q8
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfTmF2
aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24pKSk7CisgICAgZXdrUG9saWN5RGVjaXNpb24tPmxpc3Rl
bmVyID0gbGlzdGVuZXI7CisgICAgZXdrUG9saWN5RGVjaXNpb24tPm1vdXNlQnV0dG9uID0gc3Rh
dGljX2Nhc3Q8RXZlbnRfTW91c2VfQnV0dG9uPihtb3VzZUJ1dHRvbik7CisgICAgZXdrUG9saWN5
RGVjaXNpb24tPm1vZGlmaWVycyA9IHN0YXRpY19jYXN0PEV2ZW50X01vZGlmaWVyX0tleXM+KG1v
ZGlmaWVycyk7CisgICAgZXdrUG9saWN5RGVjaXNpb24tPm5hdmlnYXRpb25UeXBlID0gc3RhdGlj
X2Nhc3Q8RXdrX05hdmlnYXRpb25fVHlwZT4obmF2aWdhdGlvblR5cGUpOworICAgIGV3a1BvbGlj
eURlY2lzaW9uLT5yZXF1ZXN0ID0gZXdrX3VybF9yZXF1ZXN0X25ldyhyZXF1ZXN0KTsKKyAgICBl
d2tQb2xpY3lEZWNpc2lvbi0+ZnJhbWVOYW1lID0gZWluYV9zdHJpbmdzaGFyZV9hZGQoZnJhbWVO
YW1lKTsKKworICAgIHJldHVybiBld2tQb2xpY3lEZWNpc2lvbjsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNp
c2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4
MWE5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5oCkBAIC0wLDAgKzEsMTU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisvKioKKyAqIEBmaWxlICAgIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5oCisgKiBAYnJpZWYgICBEZXNjcmliZXMgdGhlIEV3ayBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbiBBUEkuCisgKi8KKworI2lmbmRlZiBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb25faAorI2RlZmluZSBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25faAorCisjaW5j
bHVkZSAiZXdrX3VybF9yZXF1ZXN0LmgiCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKiBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICovCit0eXBlZGVmIHN0cnVjdCBf
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNp
c2lvbjsKKworLy8vIEVudW0gY29udGFpbmluZyBuYXZpZ2F0aW9uIHR5cGVzCit0eXBlZGVmIGVu
dW0gIHsKKyAgICBFV0tfTkFWSUdBVElPTl9UWVBFX0xJTktfQUNUSVZBVEVELAorICAgIEVXS19O
QVZJR0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsCisgICAgRVdLX05BVklHQVRJT05fVFlQRV9C
QUNLX0ZPUldBUkQsCisgICAgRVdLX05BVklHQVRJT05fVFlQRV9SRUxPQUQsCisgICAgRVdLX05B
VklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVELAorICAgIEVXS19OQVZJR0FUSU9OX1RZUEVf
T1RIRVIKK30gRXdrX05hdmlnYXRpb25fVHlwZTsKKworLy8vIEVudW0gY29udGFpbmluZyBidXR0
b24gdHlwZXMKK3R5cGVkZWYgZW51bSB7CisgICAgRVZFTlRfTU9VU0VfQlVUVE9OX05PTkUgPSAt
MSwKKyAgICBFVkVOVF9NT1VTRV9CVVRUT05fTEVGVCA9IDAsCisgICAgRVZFTlRfTU9VU0VfQlVU
VE9OX01JRERMRSA9IDEsCisgICAgRVZFTlRfTU9VU0VfQlVUVE9OX1JJR0hUID0gMgorfSBFdmVu
dF9Nb3VzZV9CdXR0b247CisKK3R5cGVkZWYgZW51bSB7CisgICAgRVZFTlRfTU9ESUZJRVJfS0VZ
X1NISUZUID0gMSA8PCAwLAorICAgIEVWRU5UX01PRElGSUVSX0tFWV9DVFJMID0gMSA8PCAxLAor
ICAgIEVWRU5UX01PRElGSUVSX0tFWV9BTFQgPSAxIDw8IDIsCisgICAgRVZFTlRfTU9ESUZJRVJf
S0VZX01FVEEgPSAxIDw8IDMKK30gRXZlbnRfTW9kaWZpZXJfS2V5czsKKworLyoqCisgKiBGcmVl
cyB0aGUgZ2l2ZW4gb2JqZWN0LgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiB0aGUgcG9saWN5IGRl
Y2lzaW9uIG9iamVjdCB0byBmcmVlCisgKi8KK0VBUEkgdm9pZCBld2tfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fZnJlZShFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9u
KTsKKworLyoqCisgKiBRdWVyeSB0eXBlIGZvciB0aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lz
aW9uLgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBv
YmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgdHlwZSBvZiBuYXZpZ2F0aW9uLgor
ICovCitFQVBJIEV3a19OYXZpZ2F0aW9uX1R5cGUgZXdrX25hdmlnYXRpb25fcG9saWN5X25hdmln
YXRpb25fdHlwZV9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNp
c2lvbik7CisKKy8qKgorICogUXVlcnkgbW91c2UgYnV0dG9uIGZvciB0aGlzIG5hdmlnYXRpb24g
cG9saWN5IGRlY2lzaW9uLgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbiBvYmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiB0aGUgbW91c2UgYnV0
dG9uIGNsaWNrZWQgdG8gdHJpZ2dlciB0aGUgbmF2aWdhdGlvbi4KKyAqLworRUFQSSBFdmVudF9N
b3VzZV9CdXR0b24gZXdrX25hdmlnYXRpb25fcG9saWN5X21vdXNlX2J1dHRvbl9nZXQoY29uc3Qg
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogUXVl
cnkgbW9kaWZpZXIga2V5cyBmb3IgdGhpcyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KKyAq
CisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0IHRv
IHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIG1vZGlmaWVyIGtleXMgdXNlZCB3aGVuIHRyaWdn
ZXJpbmcgdGhlIG5hdmlnYXRpb24uCisgKi8KK0VBUEkgRXZlbnRfTW9kaWZpZXJfS2V5cyBld2tf
bmF2aWdhdGlvbl9wb2xpY3lfbW9kaWZpZXJzX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb24gKmRlY2lzaW9uKTsKKworLyoqCisgKiBRdWVyeSBmcmFtZSBuYW1lIGZvciB0
aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uLgorICoKKyAqIFRoZSBmcmFtZSBuYW1lIGlz
IG5vbi1udWxsIGZvciBuZXcgd2luZG93IHBvbGljeSBkZWNpc2lvbnMgb25seS4KKyAqCisgKiBA
cGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5
LgorICoKKyAqIEByZXR1cm4gdGhlIGZyYW1lIG5hbWUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCisgKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKKyAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQorICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgorICogICAgICAgICBzdHJk
dXAoKS4KKyAqLworRUFQSSBjb25zdCBjaGFyICpld2tfbmF2aWdhdGlvbl9wb2xpY3lfZnJhbWVf
bmFtZV9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7
CisKKy8qKgorICogUXVlcnkgVVJMIHJlcXVlc3QgZm9yIHRoaXMgbmF2aWdhdGlvbiBwb2xpY3kg
ZGVjaXNpb24uCisgKgorICogQHBhcmFtIGRlY2lzaW9uIG5hdmlnYXRpb24gcG9saWN5IGRlY2lz
aW9uIG9iamVjdCB0byBxdWVyeS4KKyAqCisgKiBAcmV0dXJuIFRoZSBVUkwgcmVxdWVzdCBwb2lu
dGVyIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBlcnJvci4KKyAqLworRUFQSSBFd2tfVXJsX1JlcXVl
c3QgKmV3a19uYXZpZ2F0aW9uX3BvbGljeV9yZXF1ZXN0X2dldChjb25zdCBFd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9uKTsKKworLyoqCisgKiBBY2NlcHRzIHRoZSBuYXZp
Z2F0aW9uIHJlcXVlc3QuCisgKgorICogVGhlIG5hdmlnYXRpb24gd2lsbCBiZSBhY2NlcHRlZCBi
eSBkZWZhdWx0LgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNp
c2lvbiBvYmplY3QgdG8gcXVlcnkuCisgKi8KK0VBUEkgdm9pZCBld2tfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fYWNjZXB0KEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNp
b24pOworCisvKioKKyAqIFJlamVjdHMgdGhlIG5hdmlnYXRpb24gcmVxdWVzdC4KKyAqCisgKiBA
cGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5
LgorICovCitFQVBJIHZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3JlamVjdChF
d2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9uKTsKKworLyoqCisgKiBUcmln
Z2VycyBhIGRvd25sb2FkIGluc3RlYWQgb2YgbmF2aWdhdGluZyB0byB0aGUgdXJsLgorICoKKyAq
IEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBvYmplY3QgdG8gcXVl
cnkuCisgKi8KK0VBUEkgdm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZG93bmxv
YWQoRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfbmF2aWdhdGlvbl9wb2xpY3lf
ZGVjaXNpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJjOGJlZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9u
X3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZV9o
CisjZGVmaW5lIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlX2gKKworI2lu
Y2x1ZGUgIldLQmFzZS5oIgorI2luY2x1ZGUgIldLRXZlbnQuaCIKKyNpbmNsdWRlICJXS1BhZ2VM
b2FkVHlwZXMuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNp
c2lvbiBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247CisKK0V3a19OYXZpZ2F0aW9uX1Bv
bGljeV9EZWNpc2lvbiogZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX25ldyhXS0ZyYW1l
TmF2aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0
LCBjb25zdCBjaGFyKiBmcmFtZU5hbWUsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5l
cik7CisKKyNlbmRpZiAvLyBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmNhNDJkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaApAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIGV3a19wcml2YXRlX2gKKyNk
ZWZpbmUgZXdrX3ByaXZhdGVfaAorCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2Rl
ZmluZSBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKGV3a05hbWUsIHdlYmNvcmVOYW1lKSBc
CisgICAgICAgIENPTVBJTEVfQVNTRVJUKGludChld2tOYW1lKSA9PSBpbnQod2ViY29yZU5hbWUp
LCBtaXNtYXRjaGluZ0VudW1zKQorCisjZW5kaWYgLy8gZXdrX3ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4IDI1NWQ1YWMuLjBk
YWFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAj
aW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfbG9hZGVy
X2NsaWVudF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2
YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3
X3Jlc291cmNlX2xvYWRfY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfd2ViX3Jlc291
cmNlLmgiCkBAIC00OTksNiArNTAwLDcgQEAgRXZhc19PYmplY3QqIGV3a192aWV3X2Jhc2VfYWRk
KEV2YXMqIGNhbnZhcywgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3UKIAogICAg
IHByaXYtPnBhZ2VDbGllbnQgPSBQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlKHRvSW1wbChjb250ZXh0
UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJlZiksIGV3a1ZpZXcpOwogICAgIGV3a192aWV3X2xvYWRl
cl9jbGllbnRfYXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VDbGllbnQtPnBhZ2UoKSksIGV3a1ZpZXcp
OworICAgIGV3a192aWV3X3BvbGljeV9jbGllbnRfYXR0YWNoKHRvQVBJKHByaXYtPnBhZ2VDbGll
bnQtPnBhZ2UoKSksIGV3a1ZpZXcpOwogICAgIGV3a192aWV3X3Jlc291cmNlX2xvYWRfY2xpZW50
X2F0dGFjaCh0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpLCBld2tWaWV3KTsKIAogICAg
IHJldHVybiBld2tWaWV3OwpAQCAtODc1LDYgKzg3NywyOCBAQCB2b2lkIGV3a192aWV3X2xvYWRf
cHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldykKICAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLHN0YXJ0ZWQi
LCAwKTsKIH0KIAorLyoqCisgKiBAaW50ZXJuYWwKKyAqIFJlcG9ydHMgdGhhdCBhIG5hdmlnYXRp
b24gcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4KKyAqCisgKiBFbWl0cyBzaWduYWw6
ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIuCisgKi8KK3ZvaWQgZXdrX3ZpZXdfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIEV3a19OYXZpZ2F0aW9u
X1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChld2tWaWV3LCAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBkZWNpc2lv
bik7Cit9CisKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSBuZXcgd2luZG93
IHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCisgKgorICogRW1pdHMgc2lnbmFsOiAi
cG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLgorICovCit2b2lkIGV3a192aWV3X25ld193aW5k
b3dfcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Q
b2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwoZXdrVmlldywgInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgZGVjaXNpb24p
OworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogYmFzZVVybCwgY29uc3QgY2hh
ciogdW5yZWFjaGFibGVVcmwpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oCmluZGV4IGJiMjBkNWMuLjU4NTUyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMzQsNiArMzQsOCBAQAogICogLSAibG9h
ZCxwcm92aXNpb25hbCxmYWlsZWQiLCBjb25zdCBFd2tfV2ViX0Vycm9yKjogdmlldyBwcm92aXNp
b25hbCBsb2FkIGZhaWxlZC4KICAqIC0gImxvYWQscHJvdmlzaW9uYWwscmVkaXJlY3QiLCB2b2lk
OiB2aWV3IHJlY2VpdmVkIHJlZGlyZWN0IGZvciBwcm92aXNpb25hbCBsb2FkLgogICogLSAibG9h
ZCxwcm92aXNpb25hbCxzdGFydGVkIiwgdm9pZDogdmlldyBzdGFydGVkIHByb3Zpc2lvbmFsIGxv
YWQuCisgKiAtICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIsIEV3a19OYXZpZ2F0aW9uX1Bv
bGljeV9EZWNpc2lvbio6IGEgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gc2hvdWxkIGJlIHRh
a2VuLgorICogLSAicG9saWN5LGRlY2lzaW9uLG5ldyx3aW5kb3ciLCBFd2tfTmF2aWdhdGlvbl9Q
b2xpY3lfRGVjaXNpb24qOiBhIG5ldyB3aW5kb3cgcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0
YWtlbi4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsZmFpbGVkIiwgY29uc3QgRXdrX1dlYl9SZXNv
dXJjZV9Mb2FkX0Vycm9yKjogYSByZXNvdXJjZSBmYWlsZWQgbG9hZGluZy4KICAqIC0gInJlc291
cmNlLHJlcXVlc3QsZmluaXNoZWQiLCBjb25zdCBFd2tfV2ViX1Jlc291cmNlKjogYSByZXNvdXJj
ZSBmaW5pc2hlZCBsb2FkaW5nLgogICogLSAicmVzb3VyY2UscmVxdWVzdCxuZXciLCBjb25zdCBF
d2tfV2ViX1Jlc291cmNlX1JlcXVlc3QqOiBhIHJlc291cmNlIHJlcXVlc3Qgd2FzIGluaXRpYXRl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3BvbGljeV9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWY2ODllNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnQuY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldLRnJhbWUu
aCIKKyNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKKyNpbmNsdWRl
ICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3
a192aWV3X3BvbGljeV9jbGllbnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3ByaXZh
dGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK3N0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIHRvRXdrVmlldyhjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKworc3RhdGljIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uKiBkZWNpc2lvbiA9IGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9u
ZXcobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIHJlcXVlc3QsIDAsIGxp
c3RlbmVyKTsKKyAgICBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbih0b0V3a1Zp
ZXcoY2xpZW50SW5mbyksIGRlY2lzaW9uKTsKKyAgICBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb25fZnJlZShkZWNpc2lvbik7Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZU5h
dmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywg
V0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwg
V0tTdHJpbmdSZWYgZnJhbWVOYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tf
TmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uID0gZXdrX25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uX25ldyhuYXZpZ2F0aW9uVHlwZSwgbW91c2VCdXR0b24sIG1vZGlmaWVycywg
cmVxdWVzdCwgdG9JbXBsKGZyYW1lTmFtZSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGxpc3Rl
bmVyKTsKKyAgICBld2tfdmlld19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbih0b0V3a1ZpZXco
Y2xpZW50SW5mbyksIGRlY2lzaW9uKTsKKyAgICBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fZnJlZShkZWNpc2lvbik7Cit9CisKK3ZvaWQgZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9hdHRh
Y2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KQoreworICAgIFdLUGFn
ZVBvbGljeUNsaWVudCBwb2xpY3lDbGllbnQ7CisgICAgbWVtc2V0KCZwb2xpY3lDbGllbnQsIDAs
IHNpemVvZihXS1BhZ2VQb2xpY3lDbGllbnQpKTsKKyAgICBwb2xpY3lDbGllbnQudmVyc2lvbiA9
IGtXS1BhZ2VQb2xpY3lDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBwb2xpY3lDbGllbnQuY2xp
ZW50SW5mbyA9IGV3a1ZpZXc7CisgICAgcG9saWN5Q2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24gPSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIHBvbGlj
eUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24gPSBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb247CisKKyAgICBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KHBhZ2VSZWYs
ICZwb2xpY3lDbGllbnQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xpY3lfY2xpZW50X3ByaXZhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjcyNDhkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVu
dF9wcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBld2tfdmlld19wb2xpY3lfY2xpZW50X3ByaXZhdGVfaAorI2RlZmluZSBld2tfdmlld19wb2xp
Y3lfY2xpZW50X3ByaXZhdGVfaAorCisjaW5jbHVkZSA8RXZhcy5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisKK3ZvaWQgZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9hdHRhY2goV0tQYWdl
UmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKKworI2VuZGlmIC8vIGV3a192aWV3
X3BvbGljeV9jbGllbnRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKaW5kZXggOTEzMjgwYi4uM2M5Y2U5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZh
dGUuaApAQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXF1ZXN0IEV3
a19VcmxfUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IF9Fd2tfVXJsX1Jlc3BvbnNlIEV3a19Vcmxf
UmVzcG9uc2U7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1dlYl9FcnJvciBFd2tfV2ViX0Vycm9yOwog
dHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfUmVzb3VyY2UgRXdrX1dlYl9SZXNvdXJjZTsKK3R5cGVk
ZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gRXdrX05hdmlnYXRpb25f
UG9saWN5X0RlY2lzaW9uOwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIHR5cGVkZWYgc3RydWN0
IF9Fd2tfSW50ZW50IEV3a19JbnRlbnQ7CiAjZW5kaWYKQEAgLTQ5LDYgKzUwLDggQEAgdm9pZCBl
d2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGRvdWJs
ZSBwcm9ncmVzcyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKEV2YXNf
T2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7CiB2b2lkIGV3a192
aWV3X2xvYWRfcHJvdmlzaW9uYWxfcmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9p
ZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcp
Owordm9pZCBld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCog
ZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7Cit2b2lk
IGV3a192aWV3X25ld193aW5kb3dfcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKTsKIHZvaWQgZXdrX3Zp
ZXdfdGl0bGVfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hhciogdGl0bGUp
Owogdm9pZCBld2tfdmlld19yZXNvdXJjZV9sb2FkX2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmll
dywgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBFd2tfV2ViX0Vycm9yKiBlcnJvcik7CiB2
b2lkIGV3a192aWV3X3Jlc291cmNlX2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151873</attachid>
            <date>2012-07-12 00:43:18 -0700</date>
            <delta_ts>2012-07-12 01:35:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>90953_policy_client.patch</filename>
            <type>text/plain</type>
            <size>30521</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlMjY4ZjFiLi5lZjk4MTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDkg
QEAKIDIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KIAorICAgICAgICBbV0syXVtFRkxdIEFkZCBwb2xpY3kgY2xpZW50IHRvIEV3a19WaWV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDk1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVtaXQgbmV3
ICJwb2xpY3ksZGVjaXNpb24sbmF2aWdhdGlvbiIgYW5kICJwb2xpY3ksZGVjaXNpb24sbmV3LHdp
bmRvdyIKKyAgICAgICAgb24gdGhlIEV3a19WaWV3IHdoZW4gcG9saWN5IGRlY2lzaW9ucyBzaG91
bGQgYmUgdGFrZW4gYnkgdGhlIGNsaWVudC4KKworICAgICAgICBBIG5ldyBFd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24gdHlwZSBpcyBpbnRyb2R1Y2VkIHRvIHByb3ZpZGUKKyAgICAgICAg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCBhbmQgbWFrZSBhIGRlY2lz
aW9uLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbmF2aWdhdGlvbiByZXF1ZXN0IGlzIGFjY2Vw
dGVkLgorCisgICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvRVdlYktpdDIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfTmF2aWdh
dGlvbl9Qb2xpY3lfRGVjaXNpb24pOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2ZyZWUpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X25hdmlnYXRpb25f
dHlwZV9nZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vdXNlX2J1dHRvbl9n
ZXQpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X21vZGlmaWVyc19nZXQpOgorICAg
ICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2ZyYW1lX25hbWVfZ2V0KToKKyAgICAgICAgKGV3
a19uYXZpZ2F0aW9uX3BvbGljeV9yZXF1ZXN0X2dldCk6CisgICAgICAgIChld2tfbmF2aWdhdGlv
bl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9yZWplY3QpOgorICAgICAgICAoZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX2Rvd25sb2FkKToKKyAgICAgICAgKGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9u
ZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdh
dGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2VmbC9ld2tfcHJpdmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19iYXNlX2FkZCk6CisgICAgICAg
IChld2tfdmlld19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgIChld2tfdmll
d19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xp
Y3lfY2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgICh0b0V3a1ZpZXcpOgorICAgICAgICAoZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9hdHRhY2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJp
dmF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2
YXRlLmg6CisKKzIwMTItMDctMTEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KKwogICAgICAgICBbV0syXVtFRkxdIEV3a19WaWV3IHNob3VsZCBwcm92aWRl
IG1vcmUgcmVzb3VyY2UgbG9hZGluZyBub3RpZmljYXRpb25zCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDYwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IGY5YjQ3NDUuLjkzYTEwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC0zNywxMCArMzcsMTIgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2lu
dGVudC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuY3BwCisg
ICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a191cmxfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3Bw
CisgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudC5jcHAKICAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfd2ViX2Vycm9yLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a193ZWJfcmVzb3VyY2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9FV2ViS2l0Mi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RVdlYktpdDIuaAppbmRleCA5YWZhNGYxLi44ZmE5MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJl
d2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3a19pbnRlbnQuaCIKICNpbmNsdWRlICJld2tfaW50
ZW50X3NlcnZpY2UuaCIKKyNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24u
aCIKICNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3QuaCIKICNpbmNsdWRlICJld2tfdXJsX3Jlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVj
aXNpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOTIzZWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2
aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uLmgiCisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgorI2luY2x1
ZGUgImV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmgiCisjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdXJsX3JlcXVlc3RfcHJpdmF0ZS5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisvKioKKyAqIFxzdHJ1Y3QgIF9Fd2tfTmF2aWdhdGlv
bl9Qb2xpY3lfRGVjaXNpb24KKyAqIEBicmllZiAgIENvbnRhaW5zIHRoZSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbiBkYXRhLgorICovCitzdHJ1Y3QgX0V3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiB7CisgICAgV0tSZXRhaW5QdHI8V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmPiBsaXN0
ZW5lcjsKKyAgICBib29sIGFjdGVkVXBvbkJ5Q2xpZW50OworICAgIEV3a19OYXZpZ2F0aW9uX1R5
cGUgbmF2aWdhdGlvblR5cGU7CisgICAgRXZlbnRfTW91c2VfQnV0dG9uIG1vdXNlQnV0dG9uOwor
ICAgIEV2ZW50X01vZGlmaWVyX0tleXMgbW9kaWZpZXJzOworICAgIEV3a19VcmxfUmVxdWVzdCog
cmVxdWVzdDsKKyAgICBjb25zdCBjaGFyKiBmcmFtZU5hbWU7Cit9OworCit2b2lkIGV3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbl9mcmVlKEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lv
biogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZGVjaXNpb24p
OworCisgICAgLy8gVGhpcyBpcyB0aGUgZGVmYXVsdCBjaG9pY2UgZm9yIGFsbCBwb2xpY3kgZGVj
aXNpb25zIGluIFdlYlBhZ2VQcm94eS5jcHAuCisgICAgaWYgKCFkZWNpc2lvbi0+YWN0ZWRVcG9u
QnlDbGllbnQpCisgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShkZWNpc2lvbi0+bGlz
dGVuZXIuZ2V0KCkpOworCisgICAgZXdrX3VybF9yZXF1ZXN0X3VucmVmKGRlY2lzaW9uLT5yZXF1
ZXN0KTsKKyAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChkZWNpc2lvbi0+ZnJhbWVOYW1lKTsKKyAg
ICBmcmVlKGRlY2lzaW9uKTsKK30KKworRXdrX05hdmlnYXRpb25fVHlwZSBld2tfbmF2aWdhdGlv
bl9wb2xpY3lfbmF2aWdhdGlvbl90eXBlX2dldChjb25zdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChkZWNpc2lvbiwgRVdLX05BVklHQVRJT05fVFlQRV9PVEhFUik7CisKKyAgICByZXR1cm4gZGVj
aXNpb24tPm5hdmlnYXRpb25UeXBlOworfQorCitFdmVudF9Nb3VzZV9CdXR0b24gZXdrX25hdmln
YXRpb25fcG9saWN5X21vdXNlX2J1dHRvbl9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5
X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwoZGVjaXNpb24sIEVWRU5UX01PVVNFX0JVVFRPTl9OT05FKTsKKworICAgIHJldHVybiBkZWNp
c2lvbi0+bW91c2VCdXR0b247Cit9CisKK0V2ZW50X01vZGlmaWVyX0tleXMgZXdrX25hdmlnYXRp
b25fcG9saWN5X21vZGlmaWVyc19nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lz
aW9uKiBkZWNpc2lvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGVj
aXNpb24sIHN0YXRpY19jYXN0PEV2ZW50X01vZGlmaWVyX0tleXM+KDApKTsKKworICAgIHJldHVy
biBkZWNpc2lvbi0+bW9kaWZpZXJzOworfQorCitjb25zdCBjaGFyKiBld2tfbmF2aWdhdGlvbl9w
b2xpY3lfZnJhbWVfbmFtZV9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9u
KiBkZWNpc2lvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoZGVjaXNp
b24sIDApOworCisgICAgcmV0dXJuIGRlY2lzaW9uLT5mcmFtZU5hbWU7Cit9CisKK0V3a19Vcmxf
UmVxdWVzdCogZXdrX25hdmlnYXRpb25fcG9saWN5X3JlcXVlc3RfZ2V0KGNvbnN0IEV3a19OYXZp
Z2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGRlY2lzaW9uLCAwKTsKKworICAgIHJldHVybiBkZWNpc2lvbi0+cmVx
dWVzdDsKK30KKwordm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fYWNjZXB0KEV3
a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oZGVjaXNpb24pOworCisgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVy
VXNlKGRlY2lzaW9uLT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVjaXNpb24tPmFjdGVkVXBvbkJ5
Q2xpZW50ID0gdHJ1ZTsKK30KKwordm9pZCBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25f
cmVqZWN0KEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pCit7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZGVjaXNpb24pOworCisgICAgV0tGcmFtZVBvbGlj
eUxpc3RlbmVySWdub3JlKGRlY2lzaW9uLT5saXN0ZW5lci5nZXQoKSk7CisgICAgZGVjaXNpb24t
PmFjdGVkVXBvbkJ5Q2xpZW50ID0gdHJ1ZTsKK30KKwordm9pZCBld2tfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fZG93bmxvYWQoRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNp
c2lvbikKK3sKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihkZWNpc2lvbik7CisKKyAg
ICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChkZWNpc2lvbi0+bGlzdGVuZXIuZ2V0KCkp
OworICAgIGRlY2lzaW9uLT5hY3RlZFVwb25CeUNsaWVudCA9IHRydWU7Cit9CisKKy8vIEV3a19O
YXZpZ2F0aW9uX1R5cGUgZW51bSB2YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfTElOS19BQ1RJVkFURUQsIGtXS0ZyYW1lTmF2aWdhdGlv
blR5cGVMaW5rQ2xpY2tlZCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJ
R0FUSU9OX1RZUEVfRk9STV9TVUJNSVRURUQsIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVGb3JtU3Vi
bWl0dGVkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX05BVklHQVRJT05fVFlQ
RV9CQUNLX0ZPUldBUkQsIGtXS0ZyYW1lTmF2aWdhdGlvblR5cGVCYWNrRm9yd2FyZCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVXS19OQVZJR0FUSU9OX1RZUEVfUkVMT0FELCBrV0tG
cmFtZU5hdmlnYXRpb25UeXBlUmVsb2FkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
RVdLX05BVklHQVRJT05fVFlQRV9GT1JNX1JFU1VCTUlUVEVELCBrV0tGcmFtZU5hdmlnYXRpb25U
eXBlRm9ybVJlc3VibWl0dGVkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVdLX05B
VklHQVRJT05fVFlQRV9PVEhFUiwga1dLRnJhbWVOYXZpZ2F0aW9uVHlwZU90aGVyKTsKKworLy8g
RXZlbnRfTW91c2VfQnV0dG9uIGVudW0gdmFsaWRhdGlvbgorQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShFVkVOVF9NT1VTRV9CVVRUT05fTk9ORSwga1dLRXZlbnRNb3VzZUJ1dHRvbk5vQnV0
dG9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oRVZFTlRfTU9VU0VfQlVUVE9OX0xF
RlQsIGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0dG9uKTsKK0NPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oRVZFTlRfTU9VU0VfQlVUVE9OX01JRERMRSwga1dLRXZlbnRNb3VzZUJ1dHRvbk1p
ZGRsZUJ1dHRvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PVVNFX0JV
VFRPTl9SSUdIVCwga1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uKTsKKworLy8gRXZlbnRf
TW9kaWZpZXJfS2V5cyB2YWxpZGF0aW9uCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVW
RU5UX01PRElGSUVSX0tFWV9TSElGVCwga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PRElGSUVSX0tFWV9DVFJMLCBrV0tFdmVu
dE1vZGlmaWVyc0NvbnRyb2xLZXkpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShFVkVO
VF9NT0RJRklFUl9LRVlfQUxULCBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKEVWRU5UX01PRElGSUVSX0tFWV9NRVRBLCBrV0tFdmVudE1vZGlm
aWVyc01ldGFLZXkpOworCitFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGV3a19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbl9uZXcoV0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRp
b25UeXBlLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24sIFdLRXZlbnRNb2RpZmllcnMg
bW9kaWZpZXJzLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3QgY2hhciogZnJhbWVOYW1l
LCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIpCit7CisgICAgRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uKiBld2tQb2xpY3lEZWNpc2lvbiA9IHN0YXRpY19jYXN0PEV3a19O
YXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbio+KGNhbGxvYygxLCBzaXplb2YoRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uKSkpOworICAgIGV3a1BvbGljeURlY2lzaW9uLT5saXN0ZW5lciA9
IGxpc3RlbmVyOworICAgIGV3a1BvbGljeURlY2lzaW9uLT5tb3VzZUJ1dHRvbiA9IHN0YXRpY19j
YXN0PEV2ZW50X01vdXNlX0J1dHRvbj4obW91c2VCdXR0b24pOworICAgIGV3a1BvbGljeURlY2lz
aW9uLT5tb2RpZmllcnMgPSBzdGF0aWNfY2FzdDxFdmVudF9Nb2RpZmllcl9LZXlzPihtb2RpZmll
cnMpOworICAgIGV3a1BvbGljeURlY2lzaW9uLT5uYXZpZ2F0aW9uVHlwZSA9IHN0YXRpY19jYXN0
PEV3a19OYXZpZ2F0aW9uX1R5cGU+KG5hdmlnYXRpb25UeXBlKTsKKyAgICBld2tQb2xpY3lEZWNp
c2lvbi0+cmVxdWVzdCA9IGV3a191cmxfcmVxdWVzdF9uZXcocmVxdWVzdCk7CisgICAgZXdrUG9s
aWN5RGVjaXNpb24tPmZyYW1lTmFtZSA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKGZyYW1lTmFtZSk7
CisKKyAgICByZXR1cm4gZXdrUG9saWN5RGVjaXNpb247Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODFhOWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaApAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b24uaAorICogQGJyaWVmICAgRGVzY3JpYmVzIHRoZSBFd2sgbmF2aWdhdGlvbiBwb2xpY3kgZGVj
aXNpb24gQVBJLgorICovCisKKyNpZm5kZWYgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
X2gKKyNkZWZpbmUgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2gKKworI2luY2x1ZGUg
ImV3a191cmxfcmVxdWVzdC5oIgorI2luY2x1ZGUgPEVpbmEuaD4KKworI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3Ig
X0V3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqLwordHlwZWRlZiBzdHJ1Y3QgX0V3a19O
YXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247
CisKKy8vLyBFbnVtIGNvbnRhaW5pbmcgbmF2aWdhdGlvbiB0eXBlcwordHlwZWRlZiBlbnVtICB7
CisgICAgRVdLX05BVklHQVRJT05fVFlQRV9MSU5LX0FDVElWQVRFRCwKKyAgICBFV0tfTkFWSUdB
VElPTl9UWVBFX0ZPUk1fU1VCTUlUVEVELAorICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfQkFDS19G
T1JXQVJELAorICAgIEVXS19OQVZJR0FUSU9OX1RZUEVfUkVMT0FELAorICAgIEVXS19OQVZJR0FU
SU9OX1RZUEVfRk9STV9SRVNVQk1JVFRFRCwKKyAgICBFV0tfTkFWSUdBVElPTl9UWVBFX09USEVS
Cit9IEV3a19OYXZpZ2F0aW9uX1R5cGU7CisKKy8vLyBFbnVtIGNvbnRhaW5pbmcgYnV0dG9uIHR5
cGVzCit0eXBlZGVmIGVudW0geworICAgIEVWRU5UX01PVVNFX0JVVFRPTl9OT05FID0gLTEsCisg
ICAgRVZFTlRfTU9VU0VfQlVUVE9OX0xFRlQgPSAwLAorICAgIEVWRU5UX01PVVNFX0JVVFRPTl9N
SURETEUgPSAxLAorICAgIEVWRU5UX01PVVNFX0JVVFRPTl9SSUdIVCA9IDIKK30gRXZlbnRfTW91
c2VfQnV0dG9uOworCit0eXBlZGVmIGVudW0geworICAgIEVWRU5UX01PRElGSUVSX0tFWV9TSElG
VCA9IDEgPDwgMCwKKyAgICBFVkVOVF9NT0RJRklFUl9LRVlfQ1RSTCA9IDEgPDwgMSwKKyAgICBF
VkVOVF9NT0RJRklFUl9LRVlfQUxUID0gMSA8PCAyLAorICAgIEVWRU5UX01PRElGSUVSX0tFWV9N
RVRBID0gMSA8PCAzCit9IEV2ZW50X01vZGlmaWVyX0tleXM7CisKKy8qKgorICogRnJlZXMgdGhl
IGdpdmVuIG9iamVjdC4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gdGhlIHBvbGljeSBkZWNpc2lv
biBvYmplY3QgdG8gZnJlZQorICovCitFQVBJIHZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2ZyZWUoRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisK
Ky8qKgorICogUXVlcnkgdHlwZSBmb3IgdGhpcyBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4K
KyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0
IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIHR5cGUgb2YgbmF2aWdhdGlvbi4KKyAqLwor
RUFQSSBFd2tfTmF2aWdhdGlvbl9UeXBlIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9uYXZpZ2F0aW9u
X3R5cGVfZ2V0KGNvbnN0IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNpb24p
OworCisvKioKKyAqIFF1ZXJ5IG1vdXNlIGJ1dHRvbiBmb3IgdGhpcyBuYXZpZ2F0aW9uIHBvbGlj
eSBkZWNpc2lvbi4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVj
aXNpb24gb2JqZWN0IHRvIHF1ZXJ5LgorICoKKyAqIEByZXR1cm4gdGhlIG1vdXNlIGJ1dHRvbiBj
bGlja2VkIHRvIHRyaWdnZXIgdGhlIG5hdmlnYXRpb24uCisgKi8KK0VBUEkgRXZlbnRfTW91c2Vf
QnV0dG9uIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9tb3VzZV9idXR0b25fZ2V0KGNvbnN0IEV3a19O
YXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNpb24pOworCisvKioKKyAqIFF1ZXJ5IG1v
ZGlmaWVyIGtleXMgZm9yIHRoaXMgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24uCisgKgorICog
QHBhcmFtIGRlY2lzaW9uIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIG9iamVjdCB0byBxdWVy
eS4KKyAqCisgKiBAcmV0dXJuIHRoZSBtb2RpZmllciBrZXlzIHVzZWQgd2hlbiB0cmlnZ2VyaW5n
IHRoZSBuYXZpZ2F0aW9uLgorICovCitFQVBJIEV2ZW50X01vZGlmaWVyX0tleXMgZXdrX25hdmln
YXRpb25fcG9saWN5X21vZGlmaWVyc19nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9saWN5X0Rl
Y2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogUXVlcnkgZnJhbWUgbmFtZSBmb3IgdGhpcyBu
YXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbi4KKyAqCisgKiBUaGUgZnJhbWUgbmFtZSBpcyBub24t
bnVsbCBmb3IgbmV3IHdpbmRvdyBwb2xpY3kgZGVjaXNpb25zIG9ubHkuCisgKgorICogQHBhcmFt
IGRlY2lzaW9uIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIG9iamVjdCB0byBxdWVyeS4KKyAq
CisgKiBAcmV0dXJuIHRoZSBmcmFtZSBuYW1lIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwu
IFRoaXMgcG9pbnRlciBpcworICogICAgICAgICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5n
c2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCisgKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29t
ZSBjcHUgY3ljbGVzIGFuZCB1c2UKKyAqICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBp
bnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVfYWRkKCkgb3IKKyAqICAgICAgICAgc3RyZHVwKCku
CisgKi8KK0VBUEkgY29uc3QgY2hhciAqZXdrX25hdmlnYXRpb25fcG9saWN5X2ZyYW1lX25hbWVf
Z2V0KGNvbnN0IEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNpb24pOworCisv
KioKKyAqIFF1ZXJ5IFVSTCByZXF1ZXN0IGZvciB0aGlzIG5hdmlnYXRpb24gcG9saWN5IGRlY2lz
aW9uLgorICoKKyAqIEBwYXJhbSBkZWNpc2lvbiBuYXZpZ2F0aW9uIHBvbGljeSBkZWNpc2lvbiBv
YmplY3QgdG8gcXVlcnkuCisgKgorICogQHJldHVybiBUaGUgVVJMIHJlcXVlc3QgcG9pbnRlciBv
ciBAYyBOVUxMIGluIGNhc2Ugb2YgZXJyb3IuCisgKi8KK0VBUEkgRXdrX1VybF9SZXF1ZXN0ICpl
d2tfbmF2aWdhdGlvbl9wb2xpY3lfcmVxdWVzdF9nZXQoY29uc3QgRXdrX05hdmlnYXRpb25fUG9s
aWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogQWNjZXB0cyB0aGUgbmF2aWdhdGlv
biByZXF1ZXN0LgorICoKKyAqIFRoZSBuYXZpZ2F0aW9uIHdpbGwgYmUgYWNjZXB0ZWQgYnkgZGVm
YXVsdC4KKyAqCisgKiBAcGFyYW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24g
b2JqZWN0IHRvIHF1ZXJ5LgorICovCitFQVBJIHZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2Rl
Y2lzaW9uX2FjY2VwdChFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24gKmRlY2lzaW9uKTsK
KworLyoqCisgKiBSZWplY3RzIHRoZSBuYXZpZ2F0aW9uIHJlcXVlc3QuCisgKgorICogQHBhcmFt
IGRlY2lzaW9uIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIG9iamVjdCB0byBxdWVyeS4KKyAq
LworRUFQSSB2b2lkIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9yZWplY3QoRXdrX05h
dmlnYXRpb25fUG9saWN5X0RlY2lzaW9uICpkZWNpc2lvbik7CisKKy8qKgorICogVHJpZ2dlcnMg
YSBkb3dubG9hZCBpbnN0ZWFkIG9mIG5hdmlnYXRpbmcgdG8gdGhlIHVybC4KKyAqCisgKiBAcGFy
YW0gZGVjaXNpb24gbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gb2JqZWN0IHRvIHF1ZXJ5Lgor
ICovCitFQVBJIHZvaWQgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKEV3
a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiAqZGVjaXNpb24pOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19u
YXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYzhiZWQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbmF2aWdhdGlvbl9wb2xp
Y3lfZGVjaXNpb25fcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGVfaAorI2Rl
ZmluZSBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fcHJpdmF0ZV9oCisKKyNpbmNsdWRl
ICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXS0V2ZW50LmgiCisjaW5jbHVkZSAiV0tQYWdlTG9hZFR5
cGVzLmgiCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24g
RXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uOworCitFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qIGV3a19uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9uZXcoV0tGcmFtZU5hdmln
YXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW91c2VCdXR0b24gbW91c2VCdXR0b24s
IFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29u
c3QgY2hhciogZnJhbWVOYW1lLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIpOwor
CisjZW5kaWYgLy8gZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZjYTQyZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wcml2YXRlLmgKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBld2tfcHJpdmF0ZV9oCisjZGVmaW5l
IGV3a19wcml2YXRlX2gKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKKyNkZWZpbmUg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShld2tOYW1lLCB3ZWJjb3JlTmFtZSkgXAorICAg
ICAgICBDT01QSUxFX0FTU0VSVChpbnQoZXdrTmFtZSkgPT0gaW50KHdlYmNvcmVOYW1lKSwgbWlz
bWF0Y2hpbmdFbnVtcykKKworI2VuZGlmIC8vIGV3a19wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAyNTVkNWFjLi4wZGFhY2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfcHJpdmF0ZS5oIgogI2luY2x1
ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3X2xvYWRlcl9jbGll
bnRfcHJpdmF0ZS5oIgorI2luY2x1ZGUgImV3a192aWV3X3BvbGljeV9jbGllbnRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfdmlld19yZXNv
dXJjZV9sb2FkX2NsaWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3dlYl9yZXNvdXJjZS5o
IgpAQCAtNDk5LDYgKzUwMCw3IEBAIEV2YXNfT2JqZWN0KiBld2tfdmlld19iYXNlX2FkZChFdmFz
KiBjYW52YXMsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91CiAKICAgICBwcml2
LT5wYWdlQ2xpZW50ID0gUGFnZUNsaWVudEltcGw6OmNyZWF0ZSh0b0ltcGwoY29udGV4dFJlZiks
IHRvSW1wbChwYWdlR3JvdXBSZWYpLCBld2tWaWV3KTsKICAgICBld2tfdmlld19sb2FkZXJfY2xp
ZW50X2F0dGFjaCh0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5wYWdlKCkpLCBld2tWaWV3KTsKKyAg
ICBld2tfdmlld19wb2xpY3lfY2xpZW50X2F0dGFjaCh0b0FQSShwcml2LT5wYWdlQ2xpZW50LT5w
YWdlKCkpLCBld2tWaWV3KTsKICAgICBld2tfdmlld19yZXNvdXJjZV9sb2FkX2NsaWVudF9hdHRh
Y2godG9BUEkocHJpdi0+cGFnZUNsaWVudC0+cGFnZSgpKSwgZXdrVmlldyk7CiAKICAgICByZXR1
cm4gZXdrVmlldzsKQEAgLTg3NSw2ICs4NzcsMjggQEAgdm9pZCBld2tfdmlld19sb2FkX3Byb3Zp
c2lvbmFsX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCxzdGFydGVkIiwgMCk7
CiB9CiAKKy8qKgorICogQGludGVybmFsCisgKiBSZXBvcnRzIHRoYXQgYSBuYXZpZ2F0aW9uIHBv
bGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4uCisgKgorICogRW1pdHMgc2lnbmFsOiAicG9s
aWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLgorICovCit2b2lkIGV3a192aWV3X25hdmlnYXRpb25f
cG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb24qIGRlY2lzaW9uKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrVmlldywgInBvbGljeSxkZWNpc2lvbixuYXZpZ2F0aW9uIiwgZGVjaXNpb24pOwor
fQorCisvKioKKyAqIEBpbnRlcm5hbAorICogUmVwb3J0cyB0aGF0IGEgbmV3IHdpbmRvdyBwb2xp
Y3kgZGVjaXNpb24gc2hvdWxkIGJlIHRha2VuLgorICoKKyAqIEVtaXRzIHNpZ25hbDogInBvbGlj
eSxkZWNpc2lvbixuZXcsd2luZG93Ii4KKyAqLwordm9pZCBld2tfdmlld19uZXdfd2luZG93X3Bv
bGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRpb25fUG9saWN5
X0RlY2lzaW9uKiBkZWNpc2lvbikKK3sKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19j
YWxsKGV3a1ZpZXcsICJwb2xpY3ksZGVjaXNpb24sbmV3LHdpbmRvdyIsIGRlY2lzaW9uKTsKK30K
KwogRWluYV9Cb29sIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGJhc2VVcmwsIGNvbnN0IGNoYXIqIHVu
cmVhY2hhYmxlVXJsKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXcuaAppbmRleCBiYjIwZDVjLi41ODU1MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTM0LDYgKzM0LDggQEAKICAqIC0gImxvYWQscHJv
dmlzaW9uYWwsZmFpbGVkIiwgY29uc3QgRXdrX1dlYl9FcnJvcio6IHZpZXcgcHJvdmlzaW9uYWwg
bG9hZCBmYWlsZWQuCiAgKiAtICJsb2FkLHByb3Zpc2lvbmFsLHJlZGlyZWN0Iiwgdm9pZDogdmll
dyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJvdmlzaW9uYWwgbG9hZC4KICAqIC0gImxvYWQscHJv
dmlzaW9uYWwsc3RhcnRlZCIsIHZvaWQ6IHZpZXcgc3RhcnRlZCBwcm92aXNpb25hbCBsb2FkLgor
ICogLSAicG9saWN5LGRlY2lzaW9uLG5hdmlnYXRpb24iLCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lf
RGVjaXNpb24qOiBhIG5hdmlnYXRpb24gcG9saWN5IGRlY2lzaW9uIHNob3VsZCBiZSB0YWtlbi4K
KyAqIC0gInBvbGljeSxkZWNpc2lvbixuZXcsd2luZG93IiwgRXdrX05hdmlnYXRpb25fUG9saWN5
X0RlY2lzaW9uKjogYSBuZXcgd2luZG93IHBvbGljeSBkZWNpc2lvbiBzaG91bGQgYmUgdGFrZW4u
CiAgKiAtICJyZXNvdXJjZSxyZXF1ZXN0LGZhaWxlZCIsIGNvbnN0IEV3a19XZWJfUmVzb3VyY2Vf
TG9hZF9FcnJvcio6IGEgcmVzb3VyY2UgZmFpbGVkIGxvYWRpbmcuCiAgKiAtICJyZXNvdXJjZSxy
ZXF1ZXN0LGZpbmlzaGVkIiwgY29uc3QgRXdrX1dlYl9SZXNvdXJjZSo6IGEgcmVzb3VyY2UgZmlu
aXNoZWQgbG9hZGluZy4KICAqIC0gInJlc291cmNlLHJlcXVlc3QsbmV3IiwgY29uc3QgRXdrX1dl
Yl9SZXNvdXJjZV9SZXF1ZXN0KjogYSByZXNvdXJjZSByZXF1ZXN0IHdhcyBpbml0aWF0ZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wb2xp
Y3lfY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3BvbGljeV9jbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVm
Njg5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlld19wb2xpY3lfY2xpZW50LmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXS0ZyYW1lLmgiCisj
aW5jbHVkZSAiZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCisjaW5jbHVkZSAiZXdr
X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmll
d19wb2xpY3lfY2xpZW50X3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgi
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCitzdGF0aWMgaW5saW5lIEV2YXNfT2JqZWN0KiB0b0V3a1ZpZXcoY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJh
bWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmll
cnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVl
c3QsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRh
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9E
ZWNpc2lvbiogZGVjaXNpb24gPSBld2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fbmV3KG5h
dmlnYXRpb25UeXBlLCBtb3VzZUJ1dHRvbiwgbW9kaWZpZXJzLCByZXF1ZXN0LCAwLCBsaXN0ZW5l
cik7CisgICAgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24odG9Fd2tWaWV3KGNs
aWVudEluZm8pLCBkZWNpc2lvbik7CisgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9u
X2ZyZWUoZGVjaXNpb24pOworfQorCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0
aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZl
bnRNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLU3Ry
aW5nUmVmIGZyYW1lTmFtZSwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5
cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrX05hdmln
YXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbiA9IGV3a19uYXZpZ2F0aW9uX3BvbGljeV9k
ZWNpc2lvbl9uZXcobmF2aWdhdGlvblR5cGUsIG1vdXNlQnV0dG9uLCBtb2RpZmllcnMsIHJlcXVl
c3QsIHRvSW1wbChmcmFtZU5hbWUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBsaXN0ZW5lcik7
CisgICAgZXdrX3ZpZXdfbmV3X3dpbmRvd19wb2xpY3lfZGVjaXNpb24odG9Fd2tWaWV3KGNsaWVu
dEluZm8pLCBkZWNpc2lvbik7CisgICAgZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2Zy
ZWUoZGVjaXNpb24pOworfQorCit2b2lkIGV3a192aWV3X3BvbGljeV9jbGllbnRfYXR0YWNoKFdL
UGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBXS1BhZ2VQb2xp
Y3lDbGllbnQgcG9saWN5Q2xpZW50OworICAgIG1lbXNldCgmcG9saWN5Q2xpZW50LCAwLCBzaXpl
b2YoV0tQYWdlUG9saWN5Q2xpZW50KSk7CisgICAgcG9saWN5Q2xpZW50LnZlcnNpb24gPSBrV0tQ
YWdlUG9saWN5Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgcG9saWN5Q2xpZW50LmNsaWVudElu
Zm8gPSBld2tWaWV3OworICAgIHBvbGljeUNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBwb2xpY3lDbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uOworCisgICAgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChwYWdlUmVmLCAmcG9s
aWN5Q2xpZW50KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3MjQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3BvbGljeV9jbGllbnRfcHJp
dmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwg
Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgZXdr
X3ZpZXdfcG9saWN5X2NsaWVudF9wcml2YXRlX2gKKyNkZWZpbmUgZXdrX3ZpZXdfcG9saWN5X2Ns
aWVudF9wcml2YXRlX2gKKworI2luY2x1ZGUgPEV2YXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgorCit2b2lkIGV3a192aWV3X3BvbGljeV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBw
YWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldyk7CisKKyNlbmRpZiAvLyBld2tfdmlld19wb2xp
Y3lfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCmluZGV4IDkxMzI4MGIuLjNjOWNlOTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgK
QEAgLTM0LDYgKzM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V3a19VcmxfUmVxdWVzdCBFd2tfVXJs
X1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBfRXdrX1VybF9SZXNwb25zZSBFd2tfVXJsX1Jlc3Bv
bnNlOwogdHlwZWRlZiBzdHJ1Y3QgX0V3a19XZWJfRXJyb3IgRXdrX1dlYl9FcnJvcjsKIHR5cGVk
ZWYgc3RydWN0IF9Fd2tfV2ViX1Jlc291cmNlIEV3a19XZWJfUmVzb3VyY2U7Cit0eXBlZGVmIHN0
cnVjdCBfRXdrX05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uIEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbjsKICNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCiB0eXBlZGVmIHN0cnVjdCBfRXdr
X0ludGVudCBFd2tfSW50ZW50OwogI2VuZGlmCkBAIC00OSw2ICs1MCw4IEBAIHZvaWQgZXdrX3Zp
ZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBkb3VibGUgcHJv
Z3Jlc3MpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChFdmFzX09iamVj
dCogZXdrVmlldywgY29uc3QgRXdrX1dlYl9FcnJvciogZXJyb3IpOwogdm9pZCBld2tfdmlld19s
b2FkX3Byb3Zpc2lvbmFsX3JlZGlyZWN0KEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKIHZvaWQgZXdr
X3ZpZXdfbG9hZF9wcm92aXNpb25hbF9zdGFydGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKK3Zv
aWQgZXdrX3ZpZXdfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24oRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEV3a19OYXZpZ2F0aW9uX1BvbGljeV9EZWNpc2lvbiogZGVjaXNpb24pOwordm9pZCBld2tf
dmlld19uZXdfd2luZG93X3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdr
X05hdmlnYXRpb25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7CiB2b2lkIGV3a192aWV3X3Rp
dGxlX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRpdGxlKTsKIHZv
aWQgZXdrX3ZpZXdfcmVzb3VyY2VfbG9hZF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgRXdrX1dlYl9FcnJvciogZXJyb3IpOwogdm9pZCBl
d2tfdmlld19yZXNvdXJjZV9sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>