<?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>143121</bug_id>
          
          <creation_ts>2015-03-26 16:43:36 -0700</creation_ts>
          <short_desc>Respect cache-control directives in request</short_desc>
          <delta_ts>2015-03-27 15:39:25 -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>Page Loading</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>143159</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>japhet</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080496</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 16:43:36 -0700</bug_when>
    <thetext>We should respect Cache-control: no-cache, no-store, max-age=0 in the request too.

https://tools.ietf.org/html/rfc7234#section-5.2.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080498</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 16:47:35 -0700</bug_when>
    <thetext>rdar://problem/19714040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080499</commentid>
    <comment_count>2</comment_count>
      <attachid>249543</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-26 16:51:39 -0700</bug_when>
    <thetext>Created attachment 249543
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080501</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-26 16:54:07 -0700</bug_when>
    <thetext>Attachment 249543 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:188:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080504</commentid>
    <comment_count>4</comment_count>
      <attachid>249543</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-26 17:09:52 -0700</bug_when>
    <thetext>Comment on attachment 249543
patch

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

r=me

&gt; Source/WebCore/loader/cache/CacheValidation.cpp:155
&gt; +    // See RFC 2616, Section 2.2

We may want to point to the new RFC instead of the deprecated one since we&apos;re moving this code :)

&gt; Source/WebCore/loader/cache/CacheValidation.cpp:182
&gt; +static bool isControlCharacter(UChar c)

We could probably mark this one as inline.

&gt; Source/WebCore/loader/cache/CacheValidation.cpp:256
&gt; +            // RFC2616 14.9.1: A no-cache directive with a value is only meaningful for proxy caches.

Ditto about outdated RFC.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:186
&gt; +        auto requestCacheControl = WebCore::parseCacheControlDirectives(request.httpHeaderFields());

I feel that this variable should have &apos;request&apos; somewhere in the name to avoid confusion with the response ones.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCache.cpp:285
&gt; +    auto cacheControlDirectives = WebCore::parseCacheControlDirectives(originalRequest.httpHeaderFields());

I feel that this variable should have &apos;request&apos; somewhere in the name to avoid confusion with the response ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080505</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-26 17:10:30 -0700</bug_when>
    <thetext>But please fix build for other ports :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080600</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-27 08:14:18 -0700</bug_when>
    <thetext>https://trac.webkit.org/r182059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080623</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-03-27 09:44:19 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; But please fix build for other ports :)

Done in https://trac.webkit.org/changeset/182063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080624</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-03-27 09:45:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; But please fix build for other ports :)
&gt; 
&gt; Done in https://trac.webkit.org/changeset/182063

I meant Antti but thanks Ossy for taking care of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080704</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-27 12:36:08 -0700</bug_when>
    <thetext>&gt; I meant Antti but thanks Ossy for taking care of it.

I believe I fixed it in https://trac.webkit.org/r182064 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249543</attachid>
            <date>2015-03-26 16:51:39 -0700</date>
            <delta_ts>2015-03-26 17:09:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-request-cache-control.patch</filename>
            <type>text/plain</type>
            <size>31994</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjA0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE1LTAzLTI2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXNwZWN0IGNhY2hlLWNvbnRy
b2wgZGlyZWN0aXZlcyBpbiByZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDMxMjEKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMTk3MTQwNDAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMuaHRt
bAorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc0NhY2hlSGVhZGVyU2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Omlz
Q29udHJvbENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjp0cmltVG9OZXh0U2VwYXJhdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6cGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKToKKworICAgICAgICAgICAgRmFjdG9yIENh
Y2hlLWNvbnRyb2wgcGFyc2luZyBoZXJlIHNvIGl0IGNhbiBiZSB1c2VkIGZvciBib3RoIHJlcXVl
c3RzIGFuZCByZXNwb25zZXMuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0
aW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJh
c2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OnBhcnNlQ2FjaGVD
b250cm9sRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFz
ZTo6Y2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2VCYXNlOjpjYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJl
dmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hl
Q29udHJvbE1heEFnZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NhY2hlSGVhZGVyU2VwYXJhdG9y
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmlzQ29udHJvbENoYXJhY3Rlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjp0cmltVG9OZXh0U2VwYXJhdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKwogMjAxNS0wMy0yNiAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgICJsaW5lTm8iIGRvZXMg
bm90IG1hdGNoIFdlYktpdCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lcwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlVmFsaWRhdGlvbi5jcHAJKHJldmlzaW9uIDE4
MjAwOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZVZhbGlkYXRpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ2FjaGVWYWxpZGF0aW9uLmgiCiAKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogCkBAIC0xNDksNCArMTUwLDE0MCBAQCBib29sIHJlZGlyZWN0Q2hhaW5BbGxvd3NSZXVz
ZShSZWRpcmVjdENoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpc0NhY2hl
SGVhZGVyU2VwYXJhdG9yKFVDaGFyIGMpCit7CisgICAgLy8gU2VlIFJGQyAyNjE2LCBTZWN0aW9u
IDIuMgorICAgIHN3aXRjaCAoYykgeworICAgIGNhc2UgJygnOgorICAgIGNhc2UgJyknOgorICAg
IGNhc2UgJzwnOgorICAgIGNhc2UgJz4nOgorICAgIGNhc2UgJ0AnOgorICAgIGNhc2UgJywnOgor
ICAgIGNhc2UgJzsnOgorICAgIGNhc2UgJzonOgorICAgIGNhc2UgJ1xcJzoKKyAgICBjYXNlICci
JzoKKyAgICBjYXNlICcvJzoKKyAgICBjYXNlICdbJzoKKyAgICBjYXNlICddJzoKKyAgICBjYXNl
ICc/JzoKKyAgICBjYXNlICc9JzoKKyAgICBjYXNlICd7JzoKKyAgICBjYXNlICd9JzoKKyAgICBj
YXNlICcgJzoKKyAgICBjYXNlICdcdCc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzQ29u
dHJvbENoYXJhY3RlcihVQ2hhciBjKQoreworICAgIHJldHVybiBjIDwgJyAnIHx8IGMgPT0gMTI3
OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyB0cmltVG9OZXh0U2VwYXJhdG9yKGNvbnN0IFN0
cmluZyYgc3RyKQoreworICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIHN0ci5maW5kKGlzQ2Fj
aGVIZWFkZXJTZXBhcmF0b3IpKTsKK30KKworc3RhdGljIHZvaWQgcGFyc2VDYWNoZUhlYWRlcihj
b25zdCBTdHJpbmcmIGhlYWRlciwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiBy
ZXN1bHQpCit7CisgICAgY29uc3QgU3RyaW5nIHNhZmVIZWFkZXIgPSBoZWFkZXIucmVtb3ZlQ2hh
cmFjdGVycyhpc0NvbnRyb2xDaGFyYWN0ZXIpOworICAgIHVuc2lnbmVkIG1heCA9IHNhZmVIZWFk
ZXIubGVuZ3RoKCk7CisgICAgZm9yICh1bnNpZ25lZCBwb3MgPSAwOyBwb3MgPCBtYXg7IC8qIHBv
cyBpbmNyZW1lbnRlZCBpbiBsb29wICovKSB7CisgICAgICAgIHNpemVfdCBuZXh0Q29tbWFQb3Np
dGlvbiA9IHNhZmVIZWFkZXIuZmluZCgnLCcsIHBvcyk7CisgICAgICAgIHNpemVfdCBuZXh0RXF1
YWxTaWduUG9zaXRpb24gPSBzYWZlSGVhZGVyLmZpbmQoJz0nLCBwb3MpOworICAgICAgICBpZiAo
bmV4dEVxdWFsU2lnblBvc2l0aW9uICE9IG5vdEZvdW5kICYmIChuZXh0RXF1YWxTaWduUG9zaXRp
b24gPCBuZXh0Q29tbWFQb3NpdGlvbiB8fCBuZXh0Q29tbWFQb3NpdGlvbiA9PSBub3RGb3VuZCkp
IHsKKyAgICAgICAgICAgIC8vIEdldCBkaXJlY3RpdmUgbmFtZSwgcGFyc2UgcmlnaHQgaGFuZCBz
aWRlIG9mIGVxdWFsIHNpZ24sIHRoZW4gYWRkIHRvIG1hcAorICAgICAgICAgICAgU3RyaW5nIGRp
cmVjdGl2ZSA9IHRyaW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhlYWRlci5zdWJzdHJpbmcocG9zLCBu
ZXh0RXF1YWxTaWduUG9zaXRpb24gLSBwb3MpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICAgICAg
ICAgIHBvcyArPSBuZXh0RXF1YWxTaWduUG9zaXRpb24gLSBwb3MgKyAxOworCisgICAgICAgICAg
ICBTdHJpbmcgdmFsdWUgPSBzYWZlSGVhZGVyLnN1YnN0cmluZyhwb3MsIG1heCAtIHBvcykuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisgICAgICAgICAgICBpZiAodmFsdWVbMF0gPT0gJyInKSB7CisgICAg
ICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGEgcXVvdGVkIHN0cmluZworICAgICAgICAgICAg
ICAgIHNpemVfdCBuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiA9IHZhbHVlLmZpbmQoJyInLCAxKTsK
KyAgICAgICAgICAgICAgICBpZiAobmV4dERvdWJsZVF1b3RlUG9zaXRpb24gPT0gbm90Rm91bmQp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgZXJyb3I7IGp1c3QgdXNlIHRoZSByZXN0
IGFzIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4oZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLnN1
YnN0cmluZygxLCB2YWx1ZS5sZW5ndGgoKSAtIDEpLnN0cmlwV2hpdGVTcGFjZSgpKSkpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBhcyBhIHF1b3RlZCBzdHJpbmcgd2l0aG91dCBxdW90ZXMK
KyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4o
ZGlyZWN0aXZlLCB2YWx1ZS5zdWJzdHJpbmcoMSwgbmV4dERvdWJsZVF1b3RlUG9zaXRpb24gLSAx
KS5zdHJpcFdoaXRlU3BhY2UoKSkpOworICAgICAgICAgICAgICAgIHBvcyArPSAoc2FmZUhlYWRl
ci5maW5kKCciJywgcG9zKSAtIHBvcykgKyBuZXh0RG91YmxlUXVvdGVQb3NpdGlvbiArIDE7Cisg
ICAgICAgICAgICAgICAgLy8gTW92ZSBwYXN0IG5leHQgY29tbWEsIGlmIHRoZXJlIGlzIG9uZQor
ICAgICAgICAgICAgICAgIHNpemVfdCBuZXh0Q29tbWFQb3NpdGlvbjIgPSBzYWZlSGVhZGVyLmZp
bmQoJywnLCBwb3MpOworICAgICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFQb3NpdGlvbjIgPT0g
bm90Rm91bmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gUGFyc2UgZXJyb3IgaWYg
dGhlcmUgaXMgYW55dGhpbmcgbGVmdCB3aXRoIG5vIGNvbW1hCisgICAgICAgICAgICAgICAgcG9z
ICs9IG5leHRDb21tYVBvc2l0aW9uMiAtIHBvcyArIDE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBhIHRva2VuIHVudGlsIHRoZSBuZXh0IGNv
bW1hCisgICAgICAgICAgICAgICAgc2l6ZV90IG5leHRDb21tYVBvc2l0aW9uMiA9IHZhbHVlLmZp
bmQoJywnKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dENvbW1hUG9zaXRpb24yID09IG5vdEZv
dW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSByZXN0IGlzIHRoZSB2YWx1ZTsgbm8g
Y2hhbmdlIHRvIHZhbHVlIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4oZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9y
KHZhbHVlKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBkZWxpbWl0ZWQgYnkgdGhlIG5leHQg
Y29tbWEKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4oZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLnN1YnN0cmluZygwLCBu
ZXh0Q29tbWFQb3NpdGlvbjIpLnN0cmlwV2hpdGVTcGFjZSgpKSkpOworICAgICAgICAgICAgICAg
IHBvcyArPSAoc2FmZUhlYWRlci5maW5kKCcsJywgcG9zKSAtIHBvcykgKyAxOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5leHRDb21tYVBvc2l0aW9uICE9IG5vdEZvdW5kICYm
IChuZXh0Q29tbWFQb3NpdGlvbiA8IG5leHRFcXVhbFNpZ25Qb3NpdGlvbiB8fCBuZXh0RXF1YWxT
aWduUG9zaXRpb24gPT0gbm90Rm91bmQpKSB7CisgICAgICAgICAgICAvLyBBZGQgZGlyZWN0aXZl
IHRvIG1hcCB3aXRoIGVtcHR5IHN0cmluZyBhcyB2YWx1ZQorICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+KHRyaW1Ub05leHRTZXBhcmF0b3Ioc2FmZUhl
YWRlci5zdWJzdHJpbmcocG9zLCBuZXh0Q29tbWFQb3NpdGlvbiAtIHBvcykuc3RyaXBXaGl0ZVNw
YWNlKCkpLCAiIikpOworICAgICAgICAgICAgcG9zICs9IG5leHRDb21tYVBvc2l0aW9uIC0gcG9z
ICsgMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEFkZCBsYXN0IGRpcmVjdGl2
ZSB0byBtYXAgd2l0aCBlbXB0eSBzdHJpbmcgYXMgdmFsdWUKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPih0cmltVG9OZXh0U2VwYXJhdG9yKHNhZmVI
ZWFkZXIuc3Vic3RyaW5nKHBvcywgbWF4IC0gcG9zKS5zdHJpcFdoaXRlU3BhY2UoKSksICIiKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKK0NhY2hlQ29udHJv
bERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlcnMpCit7CisgICAgQ2FjaGVDb250cm9sRGlyZWN0aXZlcyByZXN1bHQ7CisKKyAg
ICBTdHJpbmcgY2FjaGVDb250cm9sVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6
Q2FjaGVDb250cm9sKTsKKyAgICBpZiAoIWNhY2hlQ29udHJvbFZhbHVlLmlzRW1wdHkoKSkgewor
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gZGlyZWN0aXZlczsKKyAg
ICAgICAgcGFyc2VDYWNoZUhlYWRlcihjYWNoZUNvbnRyb2xWYWx1ZSwgZGlyZWN0aXZlcyk7CisK
KyAgICAgICAgc2l6ZV90IGRpcmVjdGl2ZXNTaXplID0gZGlyZWN0aXZlcy5zaXplKCk7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGlyZWN0aXZlc1NpemU7ICsraSkgeworICAgICAg
ICAgICAgLy8gUkZDMjYxNiAxNC45LjE6IEEgbm8tY2FjaGUgZGlyZWN0aXZlIHdpdGggYSB2YWx1
ZSBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHByb3h5IGNhY2hlcy4KKyAgICAgICAgICAgIC8vIEl0
IHNob3VsZCBiZSBpZ25vcmVkIGJ5IGEgYnJvd3NlciBsZXZlbCBjYWNoZS4KKyAgICAgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibm8tY2FjaGUiKSAm
JiBkaXJlY3RpdmVzW2ldLnNlY29uZC5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0
Lm5vQ2FjaGUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyZWN0aXZlc1tpXS5maXJzdCwgIm5vLXN0b3JlIikpCisgICAgICAgICAgICAgICAgcmVzdWx0
Lm5vU3RvcmUgPSB0cnVlOworICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
ZGlyZWN0aXZlc1tpXS5maXJzdCwgIm11c3QtcmV2YWxpZGF0ZSIpKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5tdXN0UmV2YWxpZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShkaXJlY3RpdmVzW2ldLmZpcnN0LCAibWF4LWFnZSIpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFzdGQ6OmlzbmFuKHJlc3VsdC5tYXhBZ2UpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIEZpcnN0IG1heC1hZ2UgZGlyZWN0aXZlIHdpbnMgaWYgdGhlcmUgYXJlIG11bHRp
cGxlIG9uZXMuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBib29sIG9rOworICAgICAgICAgICAgICAgIGRvdWJsZSBtYXhB
Z2UgPSBkaXJlY3RpdmVzW2ldLnNlY29uZC50b0RvdWJsZSgmb2spOworICAgICAgICAgICAgICAg
IGlmIChvaykKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heEFnZSA9IG1heEFnZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcmVzdWx0Lm5vQ2FjaGUp
IHsKKyAgICAgICAgLy8gSGFuZGxlIFByYWdtYTogbm8tY2FjaGUKKyAgICAgICAgLy8gVGhpcyBp
cyBkZXByZWNhdGVkIGFuZCBlcXVpdmFsZW50IHRvIENhY2hlLWNvbnRyb2w6IG5vLWNhY2hlCisg
ICAgICAgIC8vIERvbid0IGJvdGhlciB0b2tlbml6aW5nIHRoZSB2YWx1ZSwgaXQgaXMgbm90IGlt
cG9ydGFudAorICAgICAgICBTdHJpbmcgcHJhZ21hVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVh
ZGVyTmFtZTo6UHJhZ21hKTsKKworICAgICAgICByZXN1bHQubm9DYWNoZSA9IHByYWdtYVZhbHVl
LmNvbnRhaW5zKCJuby1jYWNoZSIsIGZhbHNlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVWYWxpZGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlVmFs
aWRhdGlvbi5oCShyZXZpc2lvbiAxODIwMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVWYWxpZGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKIAogc3RydWN0IFJlZGlyZWN0Q2hhaW5DYWNoZVN0YXR1cyB7CkBAIC01Miw2
ICs1MywxNCBAQCBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TCiBlbnVt
IFJldXNlRXhwaXJlZFJlZGlyZWN0aW9uT3JOb3QgeyBEb05vdFJldXNlRXhwaXJlZFJlZGlyZWN0
aW9uLCBSZXVzZUV4cGlyZWRSZWRpcmVjdGlvbiB9OwogV0VCQ09SRV9FWFBPUlQgYm9vbCByZWRp
cmVjdENoYWluQWxsb3dzUmV1c2UoUmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCBSZXVzZUV4cGly
ZWRSZWRpcmVjdGlvbk9yTm90KTsKIAorc3RydWN0IENhY2hlQ29udHJvbERpcmVjdGl2ZXMgewor
ICAgIGRvdWJsZSBtYXhBZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05h
TigpIH07CisgICAgYm9vbCBub0NhY2hlIHsgZmFsc2UgfTsKKyAgICBib29sIG5vU3RvcmUgeyBm
YWxzZSB9OworICAgIGJvb2wgbXVzdFJldmFsaWRhdGUgeyBmYWxzZSB9OworfTsKK1dFQkNPUkVf
RVhQT1JUIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVz
KGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKKwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCShy
ZXZpc2lvbiAxODIwMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVxdWVzdEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0cmluZyYgaHR0cE1l
dGhvZCgpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBNZXRob2Qo
Y29uc3QgU3RyaW5nJiBodHRwTWV0aG9kKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGh0dHBIZWFkZXJGaWVsZHMoKSBjb25zdDsKKyAgICAgICAgV0VCQ09SRV9FWFBP
UlQgY29uc3QgSFRUUEhlYWRlck1hcCYgaHR0cEhlYWRlckZpZWxkcygpIGNvbnN0OwogICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhUVFBIZWFkZXJGaWVsZHMoSFRUUEhlYWRlck1hcCk7
CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGh0dHBIZWFkZXJGaWVsZChjb25zdCBT
dHJpbmcmIG5hbWUpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAJKHJldmlzaW9uIDE4MjAw
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJh
c2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZUJhc2UuaCIKIAorI2luY2x1ZGUgIkNhY2hl
VmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIkhU
VFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzcsOCArMzgs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHBhcnNlQ2FjaGVIZWFk
ZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
PiYgcmVzdWx0KTsKLQogaW5saW5lIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIFJlc291cmNlUmVz
cG9uc2VCYXNlOjphc1Jlc291cmNlUmVzcG9uc2UoKSBjb25zdAogewogICAgIHJldHVybiAqc3Rh
dGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VSZXNwb25zZSo+KHRoaXMpOwpAQCAtNDgsNyArNDcsNiBA
QCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgOiBtX2V4cGVj
dGVkQ29udGVudExlbmd0aCgwKQogICAgICwgbV9pbmNsdWRlc0NlcnRpZmljYXRlSW5mbyhmYWxz
ZSkKICAgICAsIG1faHR0cFN0YXR1c0NvZGUoMCkKLSAgICAsIG1fY2FjaGVDb250cm9sTWF4QWdl
KDApCiAgICAgLCBtX2FnZSgwKQogICAgICwgbV9kYXRlKDApCiAgICAgLCBtX2V4cGlyZXMoMCkK
QEAgLTU5LDkgKzU3LDYgQEAgUmVzb3VyY2VSZXNwb25zZUJhc2U6OlJlc291cmNlUmVzcG9uc2VC
YQogICAgICwgbV9oYXZlUGFyc2VkRGF0ZUhlYWRlcihmYWxzZSkKICAgICAsIG1faGF2ZVBhcnNl
ZEV4cGlyZXNIZWFkZXIoZmFsc2UpCiAgICAgLCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFk
ZXIoZmFsc2UpCi0gICAgLCBtX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZShmYWxzZSkKLSAg
ICAsIG1fY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlKGZhbHNlKQotICAgICwgbV9jYWNoZUNv
bnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlKGZhbHNlKQogICAgICwgbV9zb3VyY2UoU291cmNl
OjpVbmtub3duKQogewogfQpAQCAtNzMsNyArNjgsNiBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgLCBtX3RleHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5n
TmFtZSkKICAgICAsIG1faW5jbHVkZXNDZXJ0aWZpY2F0ZUluZm8odHJ1ZSkgLy8gRW1wdHkgYnV0
IHZhbGlkIGZvciBzeW50aGV0aWMgcmVzcG9uc2VzLgogICAgICwgbV9odHRwU3RhdHVzQ29kZSgw
KQotICAgICwgbV9jYWNoZUNvbnRyb2xNYXhBZ2UoMCkKICAgICAsIG1fYWdlKDApCiAgICAgLCBt
X2RhdGUoMCkKICAgICAsIG1fZXhwaXJlcygwKQpAQCAtODQsOSArNzgsNiBAQCBSZXNvdXJjZVJl
c3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhCiAgICAgLCBtX2hhdmVQYXJzZWREYXRlSGVh
ZGVyKGZhbHNlKQogICAgICwgbV9oYXZlUGFyc2VkRXhwaXJlc0hlYWRlcihmYWxzZSkKICAgICAs
IG1faGF2ZVBhcnNlZExhc3RNb2RpZmllZEhlYWRlcihmYWxzZSkKLSAgICAsIG1fY2FjaGVDb250
cm9sQ29udGFpbnNOb0NhY2hlKGZhbHNlKQotICAgICwgbV9jYWNoZUNvbnRyb2xDb250YWluc05v
U3RvcmUoZmFsc2UpCi0gICAgLCBtX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUo
ZmFsc2UpCiAgICAgLCBtX3NvdXJjZShTb3VyY2U6OlVua25vd24pCiB7CiB9CkBAIC0zNTgsNjkg
KzM0OSwyOSBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2VCYXNlOjpwYXJzZUNhY2hlQ29uCiAKICAg
ICBsYXp5SW5pdChDb21tb25GaWVsZHNPbmx5KTsKIAorICAgIG1fY2FjaGVDb250cm9sRGlyZWN0
aXZlcyA9IFdlYkNvcmU6OnBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcyhtX2h0dHBIZWFkZXJG
aWVsZHMpOwogICAgIG1faGF2ZVBhcnNlZENhY2hlQ29udHJvbEhlYWRlciA9IHRydWU7Ci0KLSAg
ICBtX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUgPSBmYWxzZTsKLSAgICBtX2Nh
Y2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSA9IGZhbHNlOwotICAgIG1fY2FjaGVDb250cm9sTWF4
QWdlID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKLQotICAgIFN0
cmluZyBjYWNoZUNvbnRyb2xWYWx1ZSA9IG1faHR0cEhlYWRlckZpZWxkcy5nZXQoSFRUUEhlYWRl
ck5hbWU6OkNhY2hlQ29udHJvbCk7Ci0gICAgaWYgKCFjYWNoZUNvbnRyb2xWYWx1ZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGRpcmVjdGl2
ZXM7Ci0gICAgICAgIHBhcnNlQ2FjaGVIZWFkZXIoY2FjaGVDb250cm9sVmFsdWUsIGRpcmVjdGl2
ZXMpOwotCi0gICAgICAgIHNpemVfdCBkaXJlY3RpdmVzU2l6ZSA9IGRpcmVjdGl2ZXMuc2l6ZSgp
OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRpcmVjdGl2ZXNTaXplOyArK2kpIHsK
LSAgICAgICAgICAgIC8vIFJGQzI2MTYgMTQuOS4xOiBBIG5vLWNhY2hlIGRpcmVjdGl2ZSB3aXRo
IGEgdmFsdWUgaXMgb25seSBtZWFuaW5nZnVsIGZvciBwcm94eSBjYWNoZXMuCi0gICAgICAgICAg
ICAvLyBJdCBzaG91bGQgYmUgaWdub3JlZCBieSBhIGJyb3dzZXIgbGV2ZWwgY2FjaGUuCi0gICAg
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm5vLWNh
Y2hlIikgJiYgZGlyZWN0aXZlc1tpXS5zZWNvbmQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
IG1fY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3QsICJuby1zdG9yZSIpKQot
ICAgICAgICAgICAgICAgIG1fY2FjaGVDb250cm9sQ29udGFpbnNOb1N0b3JlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGRpcmVjdGl2ZXNbaV0uZmlyc3Qs
ICJtdXN0LXJldmFsaWRhdGUiKSkKLSAgICAgICAgICAgICAgICBtX2NhY2hlQ29udHJvbENvbnRh
aW5zTXVzdFJldmFsaWRhdGUgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoZGlyZWN0aXZlc1tpXS5maXJzdCwgIm1heC1hZ2UiKSkgewotICAgICAgICAgICAg
ICAgIGlmICghc3RkOjppc25hbihtX2NhY2hlQ29udHJvbE1heEFnZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gRmlyc3QgbWF4LWFnZSBkaXJlY3RpdmUgd2lucyBpZiB0aGVyZSBhcmUgbXVs
dGlwbGUgb25lcy4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgZG91YmxlIG1h
eEFnZSA9IGRpcmVjdGl2ZXNbaV0uc2Vjb25kLnRvRG91YmxlKCZvayk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG9rKQotICAgICAgICAgICAgICAgICAgICBtX2NhY2hlQ29udHJvbE1heEFnZSA9IG1h
eEFnZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbV9jYWNo
ZUNvbnRyb2xDb250YWluc05vQ2FjaGUpIHsKLSAgICAgICAgLy8gSGFuZGxlIFByYWdtYTogbm8t
Y2FjaGUKLSAgICAgICAgLy8gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCBlcXVpdmFsZW50IHRvIENh
Y2hlLWNvbnRyb2w6IG5vLWNhY2hlCi0gICAgICAgIC8vIERvbid0IGJvdGhlciB0b2tlbml6aW5n
IHRoZSB2YWx1ZSwgaXQgaXMgbm90IGltcG9ydGFudAotICAgICAgICBTdHJpbmcgcHJhZ21hVmFs
dWUgPSBtX2h0dHBIZWFkZXJGaWVsZHMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpQcmFnbWEpOwotCi0g
ICAgICAgIG1fY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlID0gcHJhZ21hVmFsdWUuY29udGFp
bnMoIm5vLWNhY2hlIiwgZmFsc2UpOwotICAgIH0KIH0KICAgICAKIGJvb2wgUmVzb3VyY2VSZXNw
b25zZUJhc2U6OmNhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNoZSgpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAgICAgIHBhcnNlQ2FjaGVDb250
cm9sRGlyZWN0aXZlcygpOwotICAgIHJldHVybiBtX2NhY2hlQ29udHJvbENvbnRhaW5zTm9DYWNo
ZTsKKyAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm5vQ2FjaGU7CiB9CiAKIGJv
b2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAgICAg
IHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZlcygpOwotICAgIHJldHVybiBtX2NhY2hlQ29udHJv
bENvbnRhaW5zTm9TdG9yZTsKKyAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm5v
U3RvcmU7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvbENvbnRh
aW5zTXVzdFJldmFsaWRhdGUoKSBjb25zdAogewogICAgIGlmICghbV9oYXZlUGFyc2VkQ2FjaGVD
b250cm9sSGVhZGVyKQogICAgICAgICBwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMoKTsKLSAg
ICByZXR1cm4gbV9jYWNoZUNvbnRyb2xDb250YWluc011c3RSZXZhbGlkYXRlOworICAgIHJldHVy
biBtX2NhY2hlQ29udHJvbERpcmVjdGl2ZXMubXVzdFJldmFsaWRhdGU7CiB9CiAKIGJvb2wgUmVz
b3VyY2VSZXNwb25zZUJhc2U6Omhhc0NhY2hlVmFsaWRhdG9yRmllbGRzKCkgY29uc3QKQEAgLTQz
NCw3ICszODUsNyBAQCBkb3VibGUgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNhY2hlQ29udHJvCiB7
CiAgICAgaWYgKCFtX2hhdmVQYXJzZWRDYWNoZUNvbnRyb2xIZWFkZXIpCiAgICAgICAgIHBhcnNl
Q2FjaGVDb250cm9sRGlyZWN0aXZlcygpOwotICAgIHJldHVybiBtX2NhY2hlQ29udHJvbE1heEFn
ZTsKKyAgICByZXR1cm4gbV9jYWNoZUNvbnRyb2xEaXJlY3RpdmVzLm1heEFnZTsKIH0KIAogc3Rh
dGljIGRvdWJsZSBwYXJzZURhdGVWYWx1ZUluSGVhZGVyKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIEhUVFBIZWFkZXJOYW1lIGhlYWRlck5hbWUpCkBAIC01NTUsOTkgKzUwNiw0IEBAIGJv
b2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvbXBhcmUoY29uc3QKICAgICByZXR1cm4gUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCi1zdGF0aWMgYm9vbCBpc0Nh
Y2hlSGVhZGVyU2VwYXJhdG9yKFVDaGFyIGMpCi17Ci0gICAgLy8gU2VlIFJGQyAyNjE2LCBTZWN0
aW9uIDIuMgotICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlICcoJzoKLSAgICAgICAgY2Fz
ZSAnKSc6Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICBjYXNlICc+JzoKLSAgICAgICAgY2Fz
ZSAnQCc6Ci0gICAgICAgIGNhc2UgJywnOgotICAgICAgICBjYXNlICc7JzoKLSAgICAgICAgY2Fz
ZSAnOic6Ci0gICAgICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgY2FzZSAnIic6Ci0gICAgICAgIGNh
c2UgJy8nOgotICAgICAgICBjYXNlICdbJzoKLSAgICAgICAgY2FzZSAnXSc6Ci0gICAgICAgIGNh
c2UgJz8nOgotICAgICAgICBjYXNlICc9JzoKLSAgICAgICAgY2FzZSAneyc6Ci0gICAgICAgIGNh
c2UgJ30nOgotICAgICAgICBjYXNlICcgJzoKLSAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBpc0NvbnRyb2xDaGFyYWN0ZXIoVUNoYXIgYykK
LXsKLSAgICByZXR1cm4gYyA8ICcgJyB8fCBjID09IDEyNzsKLX0KLQotc3RhdGljIGlubGluZSBT
dHJpbmcgdHJpbVRvTmV4dFNlcGFyYXRvcihjb25zdCBTdHJpbmcmIHN0cikKLXsKLSAgICByZXR1
cm4gc3RyLnN1YnN0cmluZygwLCBzdHIuZmluZChpc0NhY2hlSGVhZGVyU2VwYXJhdG9yKSk7Ci19
Ci0KLXN0YXRpYyB2b2lkIHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFZl
Y3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgcmVzdWx0KQotewotICAgIGNvbnN0IFN0
cmluZyBzYWZlSGVhZGVyID0gaGVhZGVyLnJlbW92ZUNoYXJhY3RlcnMoaXNDb250cm9sQ2hhcmFj
dGVyKTsKLSAgICB1bnNpZ25lZCBtYXggPSBzYWZlSGVhZGVyLmxlbmd0aCgpOwotICAgIGZvciAo
dW5zaWduZWQgcG9zID0gMDsgcG9zIDwgbWF4OyAvKiBwb3MgaW5jcmVtZW50ZWQgaW4gbG9vcCAq
LykgewotICAgICAgICBzaXplX3QgbmV4dENvbW1hUG9zaXRpb24gPSBzYWZlSGVhZGVyLmZpbmQo
JywnLCBwb3MpOwotICAgICAgICBzaXplX3QgbmV4dEVxdWFsU2lnblBvc2l0aW9uID0gc2FmZUhl
YWRlci5maW5kKCc9JywgcG9zKTsKLSAgICAgICAgaWYgKG5leHRFcXVhbFNpZ25Qb3NpdGlvbiAh
PSBub3RGb3VuZCAmJiAobmV4dEVxdWFsU2lnblBvc2l0aW9uIDwgbmV4dENvbW1hUG9zaXRpb24g
fHwgbmV4dENvbW1hUG9zaXRpb24gPT0gbm90Rm91bmQpKSB7Ci0gICAgICAgICAgICAvLyBHZXQg
ZGlyZWN0aXZlIG5hbWUsIHBhcnNlIHJpZ2h0IGhhbmQgc2lkZSBvZiBlcXVhbCBzaWduLCB0aGVu
IGFkZCB0byBtYXAKLSAgICAgICAgICAgIFN0cmluZyBkaXJlY3RpdmUgPSB0cmltVG9OZXh0U2Vw
YXJhdG9yKHNhZmVIZWFkZXIuc3Vic3RyaW5nKHBvcywgbmV4dEVxdWFsU2lnblBvc2l0aW9uIC0g
cG9zKS5zdHJpcFdoaXRlU3BhY2UoKSk7Ci0gICAgICAgICAgICBwb3MgKz0gbmV4dEVxdWFsU2ln
blBvc2l0aW9uIC0gcG9zICsgMTsKLQotICAgICAgICAgICAgU3RyaW5nIHZhbHVlID0gc2FmZUhl
YWRlci5zdWJzdHJpbmcocG9zLCBtYXggLSBwb3MpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAg
ICAgICAgaWYgKHZhbHVlWzBdID09ICciJykgewotICAgICAgICAgICAgICAgIC8vIFRoZSB2YWx1
ZSBpcyBhIHF1b3RlZCBzdHJpbmcKLSAgICAgICAgICAgICAgICBzaXplX3QgbmV4dERvdWJsZVF1
b3RlUG9zaXRpb24gPSB2YWx1ZS5maW5kKCciJywgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKG5l
eHREb3VibGVRdW90ZVBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFN0b3JlIHRoZSB2YWx1ZSBhcyBhIHF1b3RlZCBzdHJpbmcgd2l0aG91dCBxdW90ZXMKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+
KGRpcmVjdGl2ZSwgdmFsdWUuc3Vic3RyaW5nKDEsIG5leHREb3VibGVRdW90ZVBvc2l0aW9uIC0g
MSkuc3RyaXBXaGl0ZVNwYWNlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcG9zICs9IChzYWZl
SGVhZGVyLmZpbmQoJyInLCBwb3MpIC0gcG9zKSArIG5leHREb3VibGVRdW90ZVBvc2l0aW9uICsg
MTsKLSAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBwYXN0IG5leHQgY29tbWEsIGlmIHRoZXJl
IGlzIG9uZQotICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmV4dENvbW1hUG9zaXRpb24yID0g
c2FmZUhlYWRlci5maW5kKCcsJywgcG9zKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRD
b21tYVBvc2l0aW9uMiAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcyAr
PSBuZXh0Q29tbWFQb3NpdGlvbjIgLSBwb3MgKyAxOwotICAgICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIFBhcnNlIGVycm9yIGlmIHRoZXJl
IGlzIGFueXRoaW5nIGxlZnQgd2l0aCBubyBjb21tYQotICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIGVycm9yOyBqdXN0IHVzZSB0aGUgcmVzdCBh
cyB0aGUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+KGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZS5zdWJz
dHJpbmcoMSwgdmFsdWUubGVuZ3RoKCkgLSAxKS5zdHJpcFdoaXRlU3BhY2UoKSkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGEgdG9rZW4gdW50aWwgdGhl
IG5leHQgY29tbWEKLSAgICAgICAgICAgICAgICBzaXplX3QgbmV4dENvbW1hUG9zaXRpb24yID0g
dmFsdWUuZmluZCgnLCcpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFQb3NpdGlvbjIg
IT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGRlbGlt
aXRlZCBieSB0aGUgbmV4dCBjb21tYQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4oZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9y
KHZhbHVlLnN1YnN0cmluZygwLCBuZXh0Q29tbWFQb3NpdGlvbjIpLnN0cmlwV2hpdGVTcGFjZSgp
KSkpOwotICAgICAgICAgICAgICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmluZCgnLCcsIHBv
cykgLSBwb3MpICsgMTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgcmVzdCBpcyB0aGUgdmFsdWU7IG5vIGNoYW5nZSB0byB2YWx1ZSBuZWVkZWQK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+KGRpcmVjdGl2ZSwgdHJpbVRvTmV4dFNlcGFyYXRvcih2YWx1ZSkpKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlIGlmIChuZXh0Q29tbWFQb3NpdGlvbiAhPSBub3RGb3VuZCAmJiAobmV4dENvbW1h
UG9zaXRpb24gPCBuZXh0RXF1YWxTaWduUG9zaXRpb24gfHwgbmV4dEVxdWFsU2lnblBvc2l0aW9u
ID09IG5vdEZvdW5kKSkgewotICAgICAgICAgICAgLy8gQWRkIGRpcmVjdGl2ZSB0byBtYXAgd2l0
aCBlbXB0eSBzdHJpbmcgYXMgdmFsdWUKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPih0cmltVG9OZXh0U2VwYXJhdG9yKHNhZmVIZWFkZXIuc3Vic3Ry
aW5nKHBvcywgbmV4dENvbW1hUG9zaXRpb24gLSBwb3MpLnN0cmlwV2hpdGVTcGFjZSgpKSwgIiIp
KTsKLSAgICAgICAgICAgIHBvcyArPSBuZXh0Q29tbWFQb3NpdGlvbiAtIHBvcyArIDE7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBBZGQgbGFzdCBkaXJlY3RpdmUgdG8gbWFwIHdp
dGggZW1wdHkgc3RyaW5nIGFzIHZhbHVlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0ZDo6
cGFpcjxTdHJpbmcsIFN0cmluZz4odHJpbVRvTmV4dFNlcGFyYXRvcihzYWZlSGVhZGVyLnN1YnN0
cmluZyhwb3MsIG1heCAtIHBvcykuc3RyaXBXaGl0ZVNwYWNlKCkpLCAiIikpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oCShy
ZXZpc2lvbiAxODIwMDgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgUmVzb3VyY2VSZXNwb25zZUJhc2VfaAogI2RlZmluZSBSZXNvdXJjZVJlc3BvbnNlQmFzZV9o
CiAKKyNpbmNsdWRlICJDYWNoZVZhbGlkYXRpb24uaCIKICNpbmNsdWRlICJDZXJ0aWZpY2F0ZUlu
Zm8uaCIKICNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCiAjaW5jbHVkZSAiVVJMLmgiCkBAIC0x
NjAsMTEgKzE2MSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgaW50IG1faHR0cFN0YXR1c0NvZGU7CiAK
IHByaXZhdGU6Ci0gICAgbXV0YWJsZSBkb3VibGUgbV9jYWNoZUNvbnRyb2xNYXhBZ2U7CiAgICAg
bXV0YWJsZSBkb3VibGUgbV9hZ2U7CiAgICAgbXV0YWJsZSBkb3VibGUgbV9kYXRlOwogICAgIG11
dGFibGUgZG91YmxlIG1fZXhwaXJlczsKICAgICBtdXRhYmxlIGRvdWJsZSBtX2xhc3RNb2RpZmll
ZDsKKyAgICBtdXRhYmxlIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgbV9jYWNoZUNvbnRyb2xEaXJl
Y3RpdmVzOwogCiBwdWJsaWM6CiAgICAgYm9vbCBtX2lzTnVsbCA6IDE7CkBAIC0xODAsMTAgKzE4
MSw2IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBib29sIG1faGF2ZVBhcnNlZEV4cGlyZXNIZWFk
ZXIgOiAxOwogICAgIG11dGFibGUgYm9vbCBtX2hhdmVQYXJzZWRMYXN0TW9kaWZpZWRIZWFkZXIg
OiAxOwogCi0gICAgbXV0YWJsZSBib29sIG1fY2FjaGVDb250cm9sQ29udGFpbnNOb0NhY2hlIDog
MTsKLSAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUgOiAxOwot
ICAgIG11dGFibGUgYm9vbCBtX2NhY2hlQ29udHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUgOiAx
OwotCiAgICAgU291cmNlIG1fc291cmNlOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MTgyMDQzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTUtMDMtMjYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29t
PgorCisgICAgICAgIFJlc3BlY3QgY2FjaGUtY29udHJvbCBkaXJlY3RpdmVzIGluIHJlcXVlc3QK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzEyMQor
ICAgICAgICByZGFyOi8vcHJvYmxlbS8xOTcxNDA0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEJldHRlciBzdXBwb3J0IGZvciBodHRwczovL3Rvb2xz
LmlldGYub3JnL2h0bWwvcmZjNzIzNCNzZWN0aW9uLTUuMi4xCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OmNhblVzZSk6CisKKyAgICAgICAgICAgIENvbnNpZGVyIHJlcXVlc3RzIHdpdGggQ2Fj
aGUtY29udHJvbDogbm8tY2FjaGUgYW5kIG1heC1hZ2U9MCBleHBpcmVkLgorCisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y2FuU3RvcmUpOgorCisgICAgICAgICAgICBEb24ndCBzdG9y
ZSByZXF1ZXN0cyB3aXRoIENhY2hlLWNvbnRyb2w6IG5vLXN0b3JlLgorCisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6Q2FjaGU6OnN0b3JlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdGF0aXN0aWNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6c3RvcmVEZWNpc2lvblRvRGlhZ25vc3RpY0tleSk6CisKIDIwMTUtMDMtMjYgIEVucmlj
YSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxODA3
Njg5KTogU2xvd2VyIHN0YXJ0dXAgdGltZSBmb3IgV0tXZWJWaWV3LgpJbmRleDogU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCShy
ZXZpc2lvbiAxODIwMTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzcsNyArMTc3LDE3IEBAIHN0YXRp
YyBVc2VEZWNpc2lvbiBjYW5Vc2UoY29uc3QgRW50cnkmIGUKICAgICB9CiAKICAgICAvLyBXZSBu
ZXZlciByZXZhbGlkYXRlIGluIHRoZSBjYXNlIG9mIGEgaGlzdG9yeSBuYXZpZ2F0aW9uIChpLmUu
IGNhY2hlUG9saWN5QWxsb3dzRXhwaXJlZCgpIHJldHVybnMgdHJ1ZSkuCi0gICAgYm9vbCBuZWVk
c1JldmFsaWRhdGlvbiA9ICFjYWNoZVBvbGljeUFsbG93c0V4cGlyZWQocmVxdWVzdC5jYWNoZVBv
bGljeSgpKSAmJiByZXNwb25zZUhhc0V4cGlyZWQoZW50cnkucmVzcG9uc2UoKSwgZW50cnkudGlt
ZVN0YW1wKCkpOworICAgIGlmIChjYWNoZVBvbGljeUFsbG93c0V4cGlyZWQocmVxdWVzdC5jYWNo
ZVBvbGljeSgpKSkKKyAgICAgICAgcmV0dXJuIFVzZURlY2lzaW9uOjpVc2U7CisKKyAgICBib29s
IG5lZWRzUmV2YWxpZGF0aW9uID0gcmVzcG9uc2VIYXNFeHBpcmVkKGVudHJ5LnJlc3BvbnNlKCks
IGVudHJ5LnRpbWVTdGFtcCgpKTsKKworICAgIGlmICghbmVlZHNSZXZhbGlkYXRpb24pIHsKKyAg
ICAgICAgYXV0byByZXF1ZXN0Q2FjaGVDb250cm9sID0gV2ViQ29yZTo6cGFyc2VDYWNoZUNvbnRy
b2xEaXJlY3RpdmVzKHJlcXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKTsKKyAgICAgICAgLy8gRm9y
IHJlcXVlc3RzIHdlIGlnbm9yZSBtYXgtYWdlIHZhbHVlcyBvdGhlciB0aGFuIHplcm8uCisgICAg
ICAgIG5lZWRzUmV2YWxpZGF0aW9uID0gcmVxdWVzdENhY2hlQ29udHJvbC5ub0NhY2hlIHx8IHJl
cXVlc3RDYWNoZUNvbnRyb2wubWF4QWdlID09IDA7CisgICAgfQorCiAgICAgaWYgKCFuZWVkc1Jl
dmFsaWRhdGlvbikKICAgICAgICAgcmV0dXJuIFVzZURlY2lzaW9uOjpVc2U7CiAKQEAgLTI2Niwx
NCArMjc2LDE4IEBAIHZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc28KIAog
c3RhdGljIFN0b3JlRGVjaXNpb24gY2FuU3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQogewotICAgIGlmICghb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhU
VFBGYW1pbHkoKSB8fCAhcmVzcG9uc2UuaXNIVFRQKCkpIHsKLSAgICAgICAgTE9HKE5ldHdvcmtD
YWNoZSwgIihOZXR3b3JrUHJvY2Vzcykgbm90IEhUVFAiKTsKKyAgICBpZiAoIW9yaWdpbmFsUmVx
dWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgIXJlc3BvbnNlLmlzSFRUUCgp
KQogICAgICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6Tm9EdWVUb1Byb3RvY29sOwotICAgIH0K
LSAgICBpZiAob3JpZ2luYWxSZXF1ZXN0Lmh0dHBNZXRob2QoKSAhPSAiR0VUIikgewotICAgICAg
ICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBtZXRob2QgJXMiLCBvcmlnaW5h
bFJlcXVlc3QuaHR0cE1ldGhvZCgpLnV0ZjgoKS5kYXRhKCkpOworCisgICAgaWYgKG9yaWdpbmFs
UmVxdWVzdC5odHRwTWV0aG9kKCkgIT0gIkdFVCIpCiAgICAgICAgIHJldHVybiBTdG9yZURlY2lz
aW9uOjpOb0R1ZVRvSFRUUE1ldGhvZDsKLSAgICB9CisKKyAgICBhdXRvIGNhY2hlQ29udHJvbERp
cmVjdGl2ZXMgPSBXZWJDb3JlOjpwYXJzZUNhY2hlQ29udHJvbERpcmVjdGl2ZXMob3JpZ2luYWxS
ZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSk7CisgICAgaWYgKGNhY2hlQ29udHJvbERpcmVjdGl2
ZXMubm9TdG9yZSkKKyAgICAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9Ob1N0b3Jl
UmVxdWVzdDsKKworICAgIGlmIChyZXNwb25zZS5jYWNoZUNvbnRyb2xDb250YWluc05vU3RvcmUo
KSkKKyAgICAgICAgcmV0dXJuIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9Ob1N0b3JlUmVzcG9uc2U7
CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpIHsKICAgICBjYXNlIDIw
MDogLy8gT0sKQEAgLTI4NCwxMCArMjk4LDYgQEAgc3RhdGljIFN0b3JlRGVjaXNpb24gY2FuU3Rv
cmUoY29uc3QgV2ViQwogICAgIGNhc2UgMzA3OiAvLyBUZW1wb3JhcnkgUmVkaXJlY3QKICAgICBj
YXNlIDQwNDogLy8gTm90IEZvdW5kCiAgICAgY2FzZSA0MTA6IC8vIEdvbmUKLSAgICAgICAgaWYg
KHJlc3BvbnNlLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgpKSB7Ci0gICAgICAgICAgICBM
T0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBDYWNoZS1jb250cm9sOm5vLXN0b3Jl
Iik7Ci0gICAgICAgICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6Tm9EdWVUb05vU3RvcmVSZXNw
b25zZTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gU3RvcmVEZWNpc2lvbjo6WWVzOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIHN0
YXR1cyBjb2RlICVkIiwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CkBAIC0zMDUsNyArMzE1
LDcgQEAgdm9pZCBDYWNoZTo6c3RvcmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyYwogCiAgICAgU3Rv
cmVEZWNpc2lvbiBzdG9yZURlY2lzaW9uID0gY2FuU3RvcmUob3JpZ2luYWxSZXF1ZXN0LCByZXNw
b25zZSk7CiAgICAgaWYgKHN0b3JlRGVjaXNpb24gIT0gU3RvcmVEZWNpc2lvbjo6WWVzKSB7Ci0g
ICAgICAgIExPRyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIGRpZG4ndCBzdG9yZSIp
OworICAgICAgICBMT0coTmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBkaWRuJ3Qgc3Rv
cmUsIHN0b3JlRGVjaXNpb249JWQiLCBzdG9yZURlY2lzaW9uKTsKICAgICAgICAgaWYgKG1fc3Rh
dGlzdGljcykgewogICAgICAgICAgICAgYXV0byBrZXkgPSBtYWtlQ2FjaGVLZXkob3JpZ2luYWxS
ZXF1ZXN0KTsKICAgICAgICAgICAgIG1fc3RhdGlzdGljcy0+cmVjb3JkTm90Q2FjaGluZ1Jlc3Bv
bnNlKGtleSwgc3RvcmVEZWNpc2lvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAkocmV2aXNpb24gMTgyMDE4KQorKysg
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDggQEAgZW51bSBjbGFzcyBTdG9yZURlY2lzaW9uIHsKICAg
ICBOb0R1ZVRvSFRUUE1ldGhvZCwKICAgICBOb0R1ZVRvQXR0YWNobWVudFJlc3BvbnNlLAogICAg
IE5vRHVlVG9Ob1N0b3JlUmVzcG9uc2UsCi0gICAgTm9EdWVUb0hUVFBTdGF0dXNDb2RlCisgICAg
Tm9EdWVUb0hUVFBTdGF0dXNDb2RlLAorICAgIE5vRHVlVG9Ob1N0b3JlUmVxdWVzdAogfTsKIAog
ZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RhdGlzdGlj
c0NvY29hLm1tCShyZXZpc2lvbiAxODIwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdGF0aXN0aWNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIzNiw2ICsyMzYsNyBAQCBzdGF0aWMgU3RyaW5nIHN0b3JlRGVjaXNpb25Ub0RpYWdub3N0
aWNLCiAgICAgY2FzZSBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvQXR0YWNobWVudFJlc3BvbnNlOgog
ICAgICAgICByZXR1cm4gV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppc0F0dGFjaG1l
bnRLZXkoKTsKICAgICBjYXNlIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9Ob1N0b3JlUmVzcG9uc2U6
CisgICAgY2FzZSBTdG9yZURlY2lzaW9uOjpOb0R1ZVRvTm9TdG9yZVJlcXVlc3Q6CiAgICAgICAg
IHJldHVybiBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNhY2hlQ29udHJvbE5vU3Rv
cmVLZXkoKTsKICAgICBjYXNlIFN0b3JlRGVjaXNpb246Ok5vRHVlVG9IVFRQU3RhdHVzQ29kZToK
ICAgICAgICAgcmV0dXJuIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6dW5jYWNoZWFi
bGVTdGF0dXNDb2RlS2V5KCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODIwNDMpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMy0y
NiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzcGVjdCBj
YWNoZS1jb250cm9sIGRpcmVjdGl2ZXMgaW4gcmVxdWVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUv
ZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMu
aHRtbDogQWRkZWQuCisKIDIwMTUtMDMtMjYgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBcHBseSBibHVyIGVmZmVjdCB0byBtZWRpYSBjb250cm9sIGJhY2tn
cm91bmQuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlz
ay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXJlcXVlc3QtaGVh
ZGVycy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA1IEBACitUZXN0IHBlcm11dGF0aW9ucyBvZiB2
YXJpb3VzIGNhY2hlIGhlYWRlcnMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3J1
bm5pbmcgMjQgdGVzdHMKKworcmVzcG9uc2UgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibWF4
LWFnZT0wIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25zZSBoZWFkZXJzOiB7
IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTEwMCJ9CityZXNwb25zZSBzb3VyY2U6IERpc2sgY2Fj
aGUKKworcmVzcG9uc2UgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibWF4LWFnZT0wIn0KK3Jl
cXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibm8tY2FjaGUifQorcmVzcG9uc2Ugc291
cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1h
Z2U9MTAwIn0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibm8tY2FjaGUifQor
cmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29u
dHJvbCI6Im1heC1hZ2U9MCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im5v
LXN0b3JlIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25zZSBoZWFkZXJzOiB7
IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTEwMCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsiQ2FjaGUt
Y29udHJvbCI6Im5vLXN0b3JlIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25z
ZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTAifQorcmVxdWVzdCBoZWFkZXJz
OiB7IkNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSwgbm8tc3RvcmUifQorcmVzcG9uc2Ugc291cmNl
OiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9
MTAwIn0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibm8tY2FjaGUsIG5vLXN0
b3JlIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25zZSBoZWFkZXJzOiB7IkNh
Y2hlLWNvbnRyb2wiOiJtYXgtYWdlPTAifQorcmVxdWVzdCBoZWFkZXJzOiB7IkNhY2hlLWNvbnRy
b2wiOiJtYXgtYWdlPTAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhl
YWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MTAwIn0KK3JlcXVlc3QgaGVhZGVyczog
eyJDYWNoZS1jb250cm9sIjoibWF4LWFnZT0wIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yawor
CityZXNwb25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTAifQorcmVxdWVz
dCBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSwgbWF4LWFnZT0wIn0KK3Jlc3Bv
bnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wi
OiJtYXgtYWdlPTEwMCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im5vLWNh
Y2hlLCBtYXgtYWdlPTAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhl
YWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsi
Q2FjaGUtY29udHJvbCI6Im5vLXN0b3JlLCBtYXgtYWdlPTAifQorcmVzcG9uc2Ugc291cmNlOiBO
ZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MTAw
In0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibm8tc3RvcmUsIG1heC1hZ2U9
MCJ9CityZXNwb25zZSBzb3VyY2U6IE5ldHdvcmsKKworcmVzcG9uc2UgaGVhZGVyczogeyJDYWNo
ZS1jb250cm9sIjoibWF4LWFnZT0wIn0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9s
Ijoibm8tY2FjaGUsIG5vLXN0b3JlLCBtYXgtYWdlPTAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3
b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MTAwIn0K
K3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoibm8tY2FjaGUsIG5vLXN0b3JlLCBt
YXgtYWdlPTAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6
IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsiQ2FjaGUt
Y29udHJvbCI6Im1heC1hZ2U9MTAwIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNw
b25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTEwMCJ9CityZXF1ZXN0IGhl
YWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MTAwIn0KK3Jlc3BvbnNlIHNvdXJjZTog
RGlzayBjYWNoZQorCityZXNwb25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdl
PTAifQorcmVxdWVzdCBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSwgbWF4LWFn
ZT0xMDAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsi
Q2FjaGUtY29udHJvbCI6Im1heC1hZ2U9MTAwIn0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1j
b250cm9sIjoibm8tY2FjaGUsIG1heC1hZ2U9MTAwIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29y
aworCityZXNwb25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTAifQorcmVx
dWVzdCBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJuby1zdG9yZSwgbWF4LWFnZT0xMDAifQor
cmVzcG9uc2Ugc291cmNlOiBOZXR3b3JrCisKK3Jlc3BvbnNlIGhlYWRlcnM6IHsiQ2FjaGUtY29u
dHJvbCI6Im1heC1hZ2U9MTAwIn0KK3JlcXVlc3QgaGVhZGVyczogeyJDYWNoZS1jb250cm9sIjoi
bm8tc3RvcmUsIG1heC1hZ2U9MTAwIn0KK3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNw
b25zZSBoZWFkZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJtYXgtYWdlPTAifQorcmVxdWVzdCBoZWFk
ZXJzOiB7IkNhY2hlLWNvbnRyb2wiOiJuby1jYWNoZSwgbm8tc3RvcmUsIG1heC1hZ2U9MTAwIn0K
K3Jlc3BvbnNlIHNvdXJjZTogTmV0d29yaworCityZXNwb25zZSBoZWFkZXJzOiB7IkNhY2hlLWNv
bnRyb2wiOiJtYXgtYWdlPTEwMCJ9CityZXF1ZXN0IGhlYWRlcnM6IHsiQ2FjaGUtY29udHJvbCI6
Im5vLWNhY2hlLCBuby1zdG9yZSwgbWF4LWFnZT0xMDAifQorcmVzcG9uc2Ugc291cmNlOiBOZXR3
b3JrCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNo
ZS1yZXF1ZXN0LWhlYWRlcnMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1yZXF1ZXN0LWhlYWRlcnMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNr
LWNhY2hlLXJlcXVlc3QtaGVhZGVycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzcg
QEAKKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYWNoZS10ZXN0LmpzIj48L3NjcmlwdD4KKzxi
b2R5PgorPHNjcmlwdD4KKwordmFyIHRlc3RNYXRyaXggPQorWworIFsKKyAgeyByZXNwb25zZUhl
YWRlcnM6IHsnQ2FjaGUtY29udHJvbCc6ICdtYXgtYWdlPTAnIH0gfSwKKyAgeyByZXNwb25zZUhl
YWRlcnM6IHsnQ2FjaGUtY29udHJvbCc6ICdtYXgtYWdlPTEwMCcgfSB9LAorICBdLAorIFsKKyAg
e30sCisgIHsgcmVxdWVzdEhlYWRlcnM6IHsnQ2FjaGUtY29udHJvbCc6ICduby1jYWNoZScgfSB9
LAorICBdLAorIFsKKyAge30sCisgIHsgcmVxdWVzdEhlYWRlcnM6IHsnQ2FjaGUtY29udHJvbCc6
ICduby1zdG9yZScgfSB9LAorICBdLAorIFsKKyAge30sCisgIHsgcmVxdWVzdEhlYWRlcnM6IHsn
Q2FjaGUtY29udHJvbCc6ICdtYXgtYWdlPTAnIH0gfSwKKyAgeyByZXF1ZXN0SGVhZGVyczogeydD
YWNoZS1jb250cm9sJzogJ21heC1hZ2U9MTAwJyB9IH0sCisgIF0sCisgXTsKKworZGVzY3JpcHRp
b24oIlRlc3QgcGVybXV0YXRpb25zIG9mIHZhcmlvdXMgY2FjaGUgaGVhZGVycyIpOworCit2YXIg
dGVzdHMgPSBnZW5lcmF0ZVRlc3RzKHRlc3RNYXRyaXgpOworCitkZWJ1ZygicnVubmluZyAiICsg
dGVzdHMubGVuZ3RoICsgIiB0ZXN0cyIpOworZGVidWcoIiIpOworCitydW5UZXN0cyh0ZXN0cyk7
CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0Pgo=
</data>
<flag name="review"
          id="274364"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>