<?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>169798</bug_id>
          
          <creation_ts>2017-03-16 17:05:01 -0700</creation_ts>
          <short_desc>WebGL: Improve index validation when using uint index values</short_desc>
          <delta_ts>2017-03-16 17:52:44 -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>New Bugs</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288850</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:05:01 -0700</bug_when>
    <thetext>WebGL: Improve index validation when using uint index values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288853</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:05:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/31083056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288856</commentid>
    <comment_count>2</comment_count>
      <attachid>304725</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:10:28 -0700</bug_when>
    <thetext>Created attachment 304725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288857</commentid>
    <comment_count>3</comment_count>
      <attachid>304725</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-16 17:15:22 -0700</bug_when>
    <thetext>Comment on attachment 304725
Patch

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

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1758
&gt; +                maxIndex = std::max(maxIndex.value(), static_cast&lt;unsigned&gt;(p[i]));

Won&apos;t maxIndex.value() assert the first time you use it because the optional is still nullopt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288868</commentid>
    <comment_count>4</comment_count>
      <attachid>304728</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:34:26 -0700</bug_when>
    <thetext>Created attachment 304728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288869</commentid>
    <comment_count>5</comment_count>
      <attachid>304728</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-16 17:36:59 -0700</bug_when>
    <thetext>Comment on attachment 304728
Patch

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

&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1782
&gt; +    if (maxIndex) {

You could early return here: if (!maxIndex) return false;

&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:757
&gt; +    std::optional&lt;unsigned&gt; maxIndex = elementArrayBuffer-&gt;getCachedMaxIndex(type);

Why am I seeing all this code twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288877</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:51:51 -0700</bug_when>
    <thetext>Committed r214086: &lt;http://trac.webkit.org/changeset/214086&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288878</commentid>
    <comment_count>7</comment_count>
      <attachid>304728</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-03-16 17:52:44 -0700</bug_when>
    <thetext>Comment on attachment 304728
Patch

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

&gt;&gt; Source/WebCore/html/canvas/WebGL2RenderingContext.cpp:1782
&gt;&gt; +    if (maxIndex) {
&gt; 
&gt; You could early return here: if (!maxIndex) return false;

done.

&gt;&gt; Source/WebCore/html/canvas/WebGLRenderingContext.cpp:757
&gt;&gt; +    std::optional&lt;unsigned&gt; maxIndex = elementArrayBuffer-&gt;getCachedMaxIndex(type);
&gt; 
&gt; Why am I seeing all this code twice?

Blame myles :)

I think we could share most of it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304725</attachid>
            <date>2017-03-16 17:10:28 -0700</date>
            <delta_ts>2017-03-16 17:34:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169798-20170317111025.patch</filename>
            <type>text/plain</type>
            <size>13763</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI1Nzg5YTIzMTc4YWEz
NGM4NmI1YzgxMjExNDhkODViMDkzMzZlNi4uNjA1NGFmOTYyY2Q0ZDY0MDRiMmJmYjQyZmIxNWQ4
OTIxMGVjNmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAzLTE2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTDogSW1wcm92ZSBpbmRl
eCB2YWxpZGF0aW9uIHdoZW4gdXNpbmcgdWludCBpbmRleCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHdlIHRlc3Qg
aW5kZXggdmFsaWRhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuCisgICAgICAgIEFsc28gc3Rv
cCB1c2luZyAtMSBpbiBXZWJHTEJ1ZmZlciB0byBpbmRpY2F0ZSBub24tZXhpc3RhbnQgdmFsdWVz
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9m
LWJvdW5kcy11aW50LWluZGV4Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKTogVXNlIG9wdGlvbmFsPD4gYW5k
CisgICAgICAgIHVuc2lnbmVkIHZhbHVlcy4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5jcHA6IFVzZSB1bnNpZ25lZCBmb3IgbWF4SW5kZXggKHRoZXkgY2FuJ3QgYmUgbmVnYXRp
dmUpCisgICAgICAgIGFuZCBvcHRpb25hbDw+IHRvIGluZGljYXRlIHVua25vd24gdmFsdWUuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldENhY2hlZE1heEluZGV4KToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSk6IFVzZSBvcHRpb25hbDw+IGFuZAor
ICAgICAgICB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMpOiBObyBuZWVkIHRvIGNoZWNrIGlm
CisgICAgICAgIGFuIHVuc2lnbmVkIHZhbHVlIGlzIGxlc3MgdGhhbiB6ZXJvLgorCiAyMDE3LTAz
LTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xp
Yl0gQWRkIFNTTEtleUdlbmVyYXRvckdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGNkYjJhMzU4Nzgw
M2RlMTQ2ZjYwM2RhZGU1NjNiZGUzMjBkNWU3NTguLjk4MWQ5MzkzMjdhYzZjNjNmZDU4ZDViNjA4
ZDRmNjAxODQ4NTIyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNzQ4LDQxICsxNzQ4LDQzIEBAIGJvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdD
M0RlbnVtIHR5cGUsIHVuc2lnCiAgICAgYXV0byogYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVy
LT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICAKLSAgICBp
bnQgbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUp
OwotICAgIGlmIChtYXhJbmRleCA8IDApIHsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
YXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7Cisg
ICAgaWYgKCFtYXhJbmRleCkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4
IGluIHRoZSBlbnRpcmUgYnVmZmVyIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KICAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEU6IHsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0
PGNvbnN0IEdDM0R1Ynl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0Mz
RHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBt
YXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHBbaV0pKTsKKyAg
ICAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LnZhbHVlKCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwW2ldKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9TSE9SVDogewogICAgICAg
ICAgICAgbnVtRWxlbWVudHMgLz0gc2l6ZW9mKEdDM0R1c2hvcnQpOwogICAgICAgICAgICAgY29u
c3QgR0MzRHVzaG9ydCogcCA9IHN0YXRpY19jYXN0PGNvbnN0IEdDM0R1c2hvcnQqPihidWZmZXIt
PmRhdGEoKSk7CiAgICAgICAgICAgICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVs
ZW1lbnRzOyBpKyspCi0gICAgICAgICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRl
eCwgc3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAgICAgICAgbWF4SW5kZXggPSBz
dGQ6Om1heChtYXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfSU5UOiB7CiAgICAgICAgICAgICBudW1FbGVtZW50cyAvPSBzaXplb2Yo
R0MzRHVpbnQpOwogICAgICAgICAgICAgY29uc3QgR0MzRHVpbnQqIHAgPSBzdGF0aWNfY2FzdDxj
b25zdCBHQzNEdWludCo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0MzRHNp
emVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJ
bmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHBbaV0pKTsKKyAgICAg
ICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LnZhbHVlKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihwW2ldKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAg
ICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgodHlwZSwgbWF4SW5kZXgp
OworICAgICAgICBlbGVtZW50QXJyYXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1h
eEluZGV4LnZhbHVlKCkpOwogICAgIH0KICAgICAKLSAgICBpZiAobWF4SW5kZXggPj0gMCkgewor
ICAgIGlmIChtYXhJbmRleCkgewogICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIHJlcXVpcmVkIGVs
ZW1lbnRzIGlzIG9uZSBtb3JlIHRoYW4gdGhlIG1heGltdW0KICAgICAgICAgLy8gaW5kZXggdGhh
dCB3aWxsIGJlIGFjY2Vzc2VkLgotICAgICAgICBudW1FbGVtZW50c1JlcXVpcmVkID0gbWF4SW5k
ZXggKyAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbnVtRWxlbWVudHNSZXF1aXJl
ZCA9IG1heEluZGV4LnZhbHVlKCkgKyAxOworCisgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxv
dy4KKyAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRzUmVxdWlyZWQgPiAwOwogICAgIH0KICAgICAK
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZl
ci5jcHAKaW5kZXggYmRiODFkNmU1NWZkNzQzZWViN2QwN2EzMmI0MDI0MzBlMzljNjliNy4uYmM5
MTRhNGE3ODJmY2U0MTA3ODIxMWZmY2MxZTgwYTFlOTkzZTJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmNwcApAQCAtMjI4LDE2ICsyMjgsMTYgQEAgR0MzRHNp
emVpcHRyIFdlYkdMQnVmZmVyOjpieXRlTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9ieXRl
TGVuZ3RoOwogfQogCi1pbnQgV2ViR0xCdWZmZXI6OmdldENhY2hlZE1heEluZGV4KEdDM0RlbnVt
IHR5cGUpCitzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4
SW5kZXgoR0MzRGVudW0gdHlwZSkKIHsKICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9tYXhJbmRl
eENhY2hlKSB7CiAgICAgICAgIGlmIChjYWNoZS50eXBlID09IHR5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gY2FjaGUubWF4SW5kZXg7CiAgICAgfQotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogfQogCi12b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChH
QzNEZW51bSB0eXBlLCBpbnQgdmFsdWUpCit2b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJ
bmRleChHQzNEZW51bSB0eXBlLCB1bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBmb3IgKGF1dG8mIGNh
Y2hlIDogbV9tYXhJbmRleENhY2hlKSB7CiAgICAgICAgIGlmIChjYWNoZS50eXBlID09IHR5cGUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IGQzYmQ5YTAz
OGVjYjhkNzBjN2QwNDc4ZWM0MDhjOTIxYTQ3OTMwZTkuLjdiOWVhNTVmMDdiYzA1MmY2MmVlYzIx
MDYxMDhlYzI0MDRmNWU5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZm
ZXIuaApAQCAtNTIsMTEgKzUyLDEwIEBAIHB1YmxpYzoKICAgICBHQzNEc2l6ZWlwdHIgYnl0ZUxl
bmd0aCgpIGNvbnN0OwogICAgIGNvbnN0IEpTQzo6QXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1
ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9CiAKLSAg
ICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4gUmV0dXJu
cyAtMSBpZgotICAgIC8vIG5vbmUgaGFzIGJlZW4gc2V0LgotICAgIGludCBnZXRDYWNoZWRNYXhJ
bmRleChHQzNEZW51bSB0eXBlKTsKKyAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZv
ciB0aGUgZ2l2ZW4gdHlwZSBpZiBvbmUgaGFzIGJlZW4gc2V0LgorICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGdldENhY2hlZE1heEluZGV4KEdDM0RlbnVtIHR5cGUpOwogICAgIC8vIFNldHMg
dGhlIGNhY2hlZCBtYXggaW5kZXggZm9yIHRoZSBnaXZlbiB0eXBlLgotICAgIHZvaWQgc2V0Q2Fj
aGVkTWF4SW5kZXgoR0MzRGVudW0gdHlwZSwgaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldENhY2hl
ZE1heEluZGV4KEdDM0RlbnVtIHR5cGUsIHVuc2lnbmVkIHZhbHVlKTsKIAogICAgIEdDM0RlbnVt
IGdldFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CiAgICAgdm9pZCBzZXRUYXJn
ZXQoR0MzRGVudW0sIGJvb2wgZm9yV2ViR0wyKTsKQEAgLTgzLDExICs4MiwxMCBAQCBwcml2YXRl
OgogICAgIC8vIHRoYXQgc2l6ZS4KICAgICBzdHJ1Y3QgTWF4SW5kZXhDYWNoZUVudHJ5IHsKICAg
ICAgICAgR0MzRGVudW0gdHlwZTsKLSAgICAgICAgaW50IG1heEluZGV4OworICAgICAgICB1bnNp
Z25lZCBtYXhJbmRleDsKICAgICB9OwogICAgIC8vIE9wZW5HTCBFUyAyLjAgb25seSBoYXMgdHdv
IHZhbGlkIGluZGV4IHR5cGVzIChVTlNJR05FRF9CWVRFCi0gICAgLy8gYW5kIFVOU0lHTkVEX1NI
T1JUKSwgYnV0IG1pZ2h0IGFzIHdlbGwgbGVhdmUgb3BlbiB0aGUKLSAgICAvLyBwb3NzaWJpbGl0
eSBvZiBhZGRpbmcgb3RoZXJzLgorICAgIC8vIGFuZCBVTlNJR05FRF9TSE9SVCkgcGx1cyBvbmUg
ZXh0ZW5zaW9uIChVTlNJR05FRF9JTlQpLgogICAgIE1heEluZGV4Q2FjaGVFbnRyeSBtX21heElu
ZGV4Q2FjaGVbNF07CiAgICAgdW5zaWduZWQgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSB7IDAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggODQ0N2NjNTc5MmIzZWU5MjU2ZTNhZjYwMzcwYTU1MDQ3NjU2Njgw
ZS4uMjUyNWE5ODEwY2E4ZmUzZTEzMWJiYTJlNmM0OTA2ODk2ODZmNTQ4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC03NTQsMjEgKzc1NCwyMSBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJ
bmRleEFycmF5Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAgIGNvbnN0IEFy
cmF5QnVmZmVyKiBidWZmZXIgPSBlbGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZl
cigpOwogICAgIEFTU0VSVChidWZmZXIpOwogICAgIAotICAgIGludCBtYXhJbmRleCA9IGVsZW1l
bnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7Ci0gICAgaWYgKG1heEluZGV4
IDwgMCkgeworICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IG1heEluZGV4ID0gZWxlbWVudEFy
cmF5QnVmZmVyLT5nZXRDYWNoZWRNYXhJbmRleCh0eXBlKTsKKyAgICBpZiAoIW1heEluZGV4KSB7
CiAgICAgICAgIC8vIENvbXB1dGUgdGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZm
ZXIgZm9yIHRoZSBnaXZlbiB0eXBlIG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURTogewogICAgICAg
ICAgICAgY29uc3QgR0MzRHVieXRlKiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVieXRlKj4o
YnVmZmVyLT5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkg
PCBudW1FbGVtZW50czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgo
bWF4SW5kZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkpOworICAgICAgICAgICAgICAgIG1heElu
ZGV4ID0gc3RkOjptYXgobWF4SW5kZXgudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBb
aV0pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUOiB7CiAgICAgICAgICAgICBudW1FbGVtZW50cyAv
PSBzaXplb2YoR0MzRHVzaG9ydCk7CiAgICAgICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBwID0g
c3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9ydCo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAg
ICAgIGZvciAoR0MzRHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAg
ICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+
KHBbaV0pKTsKKyAgICAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LnZh
bHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9JTlQ6
IHsKQEAgLTc3NywyMCArNzc3LDIyIEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2YWxp
ZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVudW0gdHlwZSwgdW5zaWduCiAgICAgICAg
ICAgICBudW1FbGVtZW50cyAvPSBzaXplb2YoR0MzRHVpbnQpOwogICAgICAgICAgICAgY29uc3Qg
R0MzRHVpbnQqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdWludCo+KGJ1ZmZlci0+ZGF0YSgp
KTsKICAgICAgICAgICAgIGZvciAoR0MzRHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7
IGkrKykKLSAgICAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0
aWNfY2FzdDxpbnQ+KHBbaV0pKTsKKyAgICAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4
KG1heEluZGV4LnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2Fj
aGVkTWF4SW5kZXgodHlwZSwgbWF4SW5kZXgpOworICAgICAgICBlbGVtZW50QXJyYXlCdWZmZXIt
PnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4LnZhbHVlKCkpOwogICAgIH0KICAgICAK
LSAgICBpZiAobWF4SW5kZXggPj0gMCkgeworICAgIGlmIChtYXhJbmRleCkgewogICAgICAgICAv
LyBUaGUgbnVtYmVyIG9mIHJlcXVpcmVkIGVsZW1lbnRzIGlzIG9uZSBtb3JlIHRoYW4gdGhlIG1h
eGltdW0KICAgICAgICAgLy8gaW5kZXggdGhhdCB3aWxsIGJlIGFjY2Vzc2VkLgotICAgICAgICBu
dW1FbGVtZW50c1JlcXVpcmVkID0gbWF4SW5kZXggKyAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgbnVtRWxlbWVudHNSZXF1aXJlZCA9IG1heEluZGV4LnZhbHVlKCkgKyAxOworCisg
ICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KKyAgICAgICAgcmV0dXJuIG51bUVsZW1lbnRz
UmVxdWlyZWQgPiAwOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2Uu
Y3BwCmluZGV4IDg5YjAzYWEwMmM3MDNkZGI4MDBhOTg0YjA4MjM3NDNmMmY3ODNjMDguLmI2ZmIy
MGJkZDhmNDdkMzM4YzMxN2UwYmU5ZDYyMDYwNzM3YzU5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBA
IC0xNzgxLDcgKzE3ODEsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlk
YXRlVmVydGV4QXR0cmlidXRlcyh1bnNpZ25lZCBlbGVtZW50Q291bnQsCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGVsZW1lbnRDb3VudCA8PSAwKQorICAgIGlm
ICghZWxlbWVudENvdW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIExvb2sgaW4g
ZWFjaCBjb25zdW1lZCB2ZXJ0ZXggYXR0cmliIChieSB0aGUgY3VycmVudCBwcm9ncmFtKS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAyNDA2Nzg5OWEzMTI0ODNiMDEzZmVjN2E1ZjRjOTQyOWY1ZDJiNTVlLi44ZWI0YjY0Mzc0
ZTljNDlhNTQ3YWVmZTc3YmY2NjFlY2I4NTU5NTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTctMDMtMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkdM
OiBJbXByb3ZlIGluZGV4IHZhbGlkYXRpb24gd2hlbiB1c2luZyB1aW50IGluZGV4IHZhbHVlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzk4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtdWludC1pbmRleC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMt
b3V0LW9mLWJvdW5kcy11aW50LWluZGV4Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTAzLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RheSBpbnNpZGUgdGhlIGNv
bnRpbnVhdGlvbiB3aGlsZSBzZWFyY2hpbmcgZm9yIGEgY2FuZGlkYXRlIGFuY2VzdG9yIGZvciBp
bnNlcnRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3
LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtdWludC1pbmRleC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtdWludC1p
bmRleC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NDczMDA1MDIyZWU1MDJjZGZiNThhN2Rj
N2NiMzIwNWY5YjVkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50LWluZGV4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3Vu
ZHMgcGFyYW1ldGVycyB1c2luZyBPRVNfZWxlbWVudF9pbmRleF91aW50CisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LkxJTkVT
LCAxLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkgZ2VuZXJhdGVkIGV4cGVjdGVkIEdMIGVycm9y
OiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3RWxlbWVudHMoY29udGV4dC5M
SU5FUywgMSwgY29udGV4dC5VTlNJR05FRF9JTlQsIDApIGdlbmVyYXRlZCBleHBlY3RlZCBHTCBl
cnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
d2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLXVpbnQtaW5kZXguaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50
LWluZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk5YmYyY2Y1ZjE1ZTNhMmYwZGUwNjA3MDBjMGQxMWE2
ZjIxYWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmds
L2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50LWluZGV4Lmh0bWwKQEAgLTAsMCArMSw1
MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYmdsLXRlc3QuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1ldGVycyB1c2luZyBPRVNf
ZWxlbWVudF9pbmRleF91aW50Iik7CisKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR0xFcnJvcnNUb0NvbnNvbGVFbmFibGVkKGZhbHNl
KTsKKwordmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3ZhciBwcm9ncmFtID0gbG9h
ZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKKworY29udGV4dC51c2VQcm9ncmFtKHByb2dyYW0p
OworY29udGV4dC5nZXRFeHRlbnNpb24oIk9FU19lbGVtZW50X2luZGV4X3VpbnQiKTsKKwordmFy
IGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7Citjb250ZXh0LmJpbmRCdWZmZXIoY29u
dGV4dC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKK3ZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXko
MHgxMDApOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlfQlVGRkVSLCBkYXRhLCBj
b250ZXh0LlNUQVRJQ19EUkFXKTsKKworYnVmZmVyID0gY29udGV4dC5jcmVhdGVCdWZmZXIoKTsK
K2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWZmZXIp
OworCitkYXRhID0gbmV3IFVpbnQzMkFycmF5KG5ldyBBcnJheUJ1ZmZlcigweDEwKSk7CitkYXRh
WzBdID0gMHhmZmZmZmZmZjsKK2ZvciAobGV0IGkgPSAxOyBpIDwgZGF0YS5sZW5ndGg7IGkrKyl7
CisgICAgZGF0YVtpXSA9IDE7Cit9Citjb250ZXh0LmJ1ZmZlckRhdGEoY29udGV4dC5FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgZGF0YSwgY29udGV4dC5TVEFUSUNfRFJBVyk7CisKK2NvbnRleHQuZW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Citjb250ZXh0LmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KDEpOworY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEsIGNvbnRleHQuVU5TSUdORURf
QllURSwgZmFsc2UsIDAsIDApOworY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDEsIDEsIGNv
bnRleHQuVU5TSUdORURfQllURSwgZmFsc2UsIDAsIDApOworCitzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNvbnRleHQuZHJhd0VsZW1l
bnRzKGNvbnRleHQuTElORVMsIDEsIGNvbnRleHQuVU5TSUdORURfSU5ULCAwKSIpOworCitkYXRh
WzBdID0gMHhmZmZmZmZmZDsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250ZXh0LkVMRU1FTlRfQVJS
QVlfQlVGRkVSLCBkYXRhLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKKworc2hvdWxkR2VuZXJhdGVH
TEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04sICJjb250ZXh0LmRyYXdF
bGVtZW50cyhjb250ZXh0LkxJTkVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkiKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304728</attachid>
            <date>2017-03-16 17:34:26 -0700</date>
            <delta_ts>2017-03-16 17:36:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169798-20170317113423.patch</filename>
            <type>text/plain</type>
            <size>14063</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWI1Nzg5YTIzMTc4YWEz
NGM4NmI1YzgxMjExNDhkODViMDkzMzZlNi4uNjA1NGFmOTYyY2Q0ZDY0MDRiMmJmYjQyZmIxNWQ4
OTIxMGVjNmQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAzLTE2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJHTDogSW1wcm92ZSBpbmRl
eCB2YWxpZGF0aW9uIHdoZW4gdXNpbmcgdWludCBpbmRleCB2YWx1ZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0aGF0IHdlIHRlc3Qg
aW5kZXggdmFsaWRhdGlvbiB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuCisgICAgICAgIEFsc28gc3Rv
cCB1c2luZyAtMSBpbiBXZWJHTEJ1ZmZlciB0byBpbmRpY2F0ZSBub24tZXhpc3RhbnQgdmFsdWVz
LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9m
LWJvdW5kcy11aW50LWluZGV4Lmh0bWwKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKTogVXNlIG9wdGlvbmFsPD4gYW5k
CisgICAgICAgIHVuc2lnbmVkIHZhbHVlcy4KKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5jcHA6IFVzZSB1bnNpZ25lZCBmb3IgbWF4SW5kZXggKHRoZXkgY2FuJ3QgYmUgbmVnYXRp
dmUpCisgICAgICAgIGFuZCBvcHRpb25hbDw+IHRvIGluZGljYXRlIHVua25vd24gdmFsdWUuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xCdWZmZXI6OnNldENhY2hlZE1heEluZGV4KToKKyAgICAgICAgKiBo
dG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5oOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZhbGlkYXRlSW5kZXhBcnJheUNvbnNlcnZhdGl2ZSk6IFVzZSBvcHRpb25hbDw+IGFuZAor
ICAgICAgICB1bnNpZ25lZCB2YWx1ZXMuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjp2YWxpZGF0ZVZlcnRleEF0dHJpYnV0ZXMpOiBObyBuZWVkIHRvIGNoZWNrIGlm
CisgICAgICAgIGFuIHVuc2lnbmVkIHZhbHVlIGlzIGxlc3MgdGhhbiB6ZXJvLgorCiAyMDE3LTAz
LTE2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR0xp
Yl0gQWRkIFNTTEtleUdlbmVyYXRvckdMaWIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGNkYjJhMzU4Nzgw
M2RlMTQ2ZjYwM2RhZGU1NjNiZGUzMjBkNWU3NTguLmU0OGY4ZjZlOTFlYjBiMDM4MmE5NWVmMTAx
MzVlY2FkMTM2NDU2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dl
YkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0xNzQ4LDQxICsxNzQ4LDQ0IEBAIGJvb2wg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdD
M0RlbnVtIHR5cGUsIHVuc2lnCiAgICAgYXV0byogYnVmZmVyID0gZWxlbWVudEFycmF5QnVmZmVy
LT5lbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICBBU1NFUlQoYnVmZmVyKTsKICAgICAKLSAgICBp
bnQgbWF4SW5kZXggPSBlbGVtZW50QXJyYXlCdWZmZXItPmdldENhY2hlZE1heEluZGV4KHR5cGUp
OwotICAgIGlmIChtYXhJbmRleCA8IDApIHsKKyAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBt
YXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2FjaGVkTWF4SW5kZXgodHlwZSk7Cisg
ICAgaWYgKCFtYXhJbmRleCkgewogICAgICAgICAvLyBDb21wdXRlIHRoZSBtYXhpbXVtIGluZGV4
IGluIHRoZSBlbnRpcmUgYnVmZmVyIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBpbmRleC4KICAgICAg
ICAgc3dpdGNoICh0eXBlKSB7CiAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lH
TkVEX0JZVEU6IHsKICAgICAgICAgICAgIGNvbnN0IEdDM0R1Ynl0ZSogcCA9IHN0YXRpY19jYXN0
PGNvbnN0IEdDM0R1Ynl0ZSo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoR0Mz
RHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAgICAgICAgICAgICAgICBt
YXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxpbnQ+KHBbaV0pKTsKKyAg
ICAgICAgICAgICAgICBtYXhJbmRleCA9IG1heEluZGV4ID8gc3RkOjptYXgobWF4SW5kZXgudmFs
dWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihwW2ldKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR3Jh
cGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JUOiB7CiAgICAgICAgICAgICBudW1FbGVtZW50
cyAvPSBzaXplb2YoR0MzRHVzaG9ydCk7CiAgICAgICAgICAgICBjb25zdCBHQzNEdXNob3J0KiBw
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVzaG9ydCo+KGJ1ZmZlci0+ZGF0YSgpKTsKICAgICAg
ICAgICAgIGZvciAoR0MzRHNpemVpcHRyIGkgPSAwOyBpIDwgbnVtRWxlbWVudHM7IGkrKykKLSAg
ICAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBzdGF0aWNfY2FzdDxp
bnQ+KHBbaV0pKTsKKyAgICAgICAgICAgICAgICBtYXhJbmRleCA9IG1heEluZGV4ID8gc3RkOjpt
YXgobWF4SW5kZXgudmFsdWUoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pKSA6IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwW2ldKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0lOVDogewogICAgICAgICAg
ICAgbnVtRWxlbWVudHMgLz0gc2l6ZW9mKEdDM0R1aW50KTsKICAgICAgICAgICAgIGNvbnN0IEdD
M0R1aW50KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihidWZmZXItPmRhdGEoKSk7
CiAgICAgICAgICAgICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBp
KyspCi0gICAgICAgICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgc3RhdGlj
X2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAgICAgICAgbWF4SW5kZXggPSBtYXhJbmRleCA/
IHN0ZDo6bWF4KG1heEluZGV4LnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihwW2ldKSkg
OiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgodHlwZSwg
bWF4SW5kZXgpOworICAgICAgICBpZiAobWF4SW5kZXgpCisgICAgICAgICAgICBlbGVtZW50QXJy
YXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4LnZhbHVlKCkpOwogICAg
IH0KICAgICAKLSAgICBpZiAobWF4SW5kZXggPj0gMCkgeworICAgIGlmIChtYXhJbmRleCkgewog
ICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIHJlcXVpcmVkIGVsZW1lbnRzIGlzIG9uZSBtb3JlIHRo
YW4gdGhlIG1heGltdW0KICAgICAgICAgLy8gaW5kZXggdGhhdCB3aWxsIGJlIGFjY2Vzc2VkLgot
ICAgICAgICBudW1FbGVtZW50c1JlcXVpcmVkID0gbWF4SW5kZXggKyAxOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgbnVtRWxlbWVudHNSZXF1aXJlZCA9IG1heEluZGV4LnZhbHVlKCkg
KyAxOworCisgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KKyAgICAgICAgcmV0dXJuIG51
bUVsZW1lbnRzUmVxdWlyZWQgPiAwOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1ZmZlci5jcHAKaW5kZXggYmRiODFkNmU1
NWZkNzQzZWViN2QwN2EzMmI0MDI0MzBlMzljNjliNy4uYmM5MTRhNGE3ODJmY2U0MTA3ODIxMWZm
Y2MxZTgwYTFlOTkzZTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVm
ZmVyLmNwcApAQCAtMjI4LDE2ICsyMjgsMTYgQEAgR0MzRHNpemVpcHRyIFdlYkdMQnVmZmVyOjpi
eXRlTGVuZ3RoKCkgY29uc3QKICAgICByZXR1cm4gbV9ieXRlTGVuZ3RoOwogfQogCi1pbnQgV2Vi
R0xCdWZmZXI6OmdldENhY2hlZE1heEluZGV4KEdDM0RlbnVtIHR5cGUpCitzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBXZWJHTEJ1ZmZlcjo6Z2V0Q2FjaGVkTWF4SW5kZXgoR0MzRGVudW0gdHlwZSkK
IHsKICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9tYXhJbmRleENhY2hlKSB7CiAgICAgICAgIGlm
IChjYWNoZS50eXBlID09IHR5cGUpCiAgICAgICAgICAgICByZXR1cm4gY2FjaGUubWF4SW5kZXg7
CiAgICAgfQotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi12
b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChHQzNEZW51bSB0eXBlLCBpbnQgdmFs
dWUpCit2b2lkIFdlYkdMQnVmZmVyOjpzZXRDYWNoZWRNYXhJbmRleChHQzNEZW51bSB0eXBlLCB1
bnNpZ25lZCB2YWx1ZSkKIHsKICAgICBmb3IgKGF1dG8mIGNhY2hlIDogbV9tYXhJbmRleENhY2hl
KSB7CiAgICAgICAgIGlmIChjYWNoZS50eXBlID09IHR5cGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTEJ1ZmZlci5oCmluZGV4IGQzYmQ5YTAzOGVjYjhkNzBjN2QwNDc4ZWM0MDhj
OTIxYTQ3OTMwZTkuLjdiOWVhNTVmMDdiYzA1MmY2MmVlYzIxMDYxMDhlYzI0MDRmNWU5NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNTIsMTEgKzUyLDEw
IEBAIHB1YmxpYzoKICAgICBHQzNEc2l6ZWlwdHIgYnl0ZUxlbmd0aCgpIGNvbnN0OwogICAgIGNv
bnN0IEpTQzo6QXJyYXlCdWZmZXIqIGVsZW1lbnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOyB9CiAKLSAgICAvLyBHZXRzIHRoZSBjYWNoZWQg
bWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZS4gUmV0dXJucyAtMSBpZgotICAgIC8vIG5vbmUg
aGFzIGJlZW4gc2V0LgotICAgIGludCBnZXRDYWNoZWRNYXhJbmRleChHQzNEZW51bSB0eXBlKTsK
KyAgICAvLyBHZXRzIHRoZSBjYWNoZWQgbWF4IGluZGV4IGZvciB0aGUgZ2l2ZW4gdHlwZSBpZiBv
bmUgaGFzIGJlZW4gc2V0LgorICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGdldENhY2hlZE1h
eEluZGV4KEdDM0RlbnVtIHR5cGUpOwogICAgIC8vIFNldHMgdGhlIGNhY2hlZCBtYXggaW5kZXgg
Zm9yIHRoZSBnaXZlbiB0eXBlLgotICAgIHZvaWQgc2V0Q2FjaGVkTWF4SW5kZXgoR0MzRGVudW0g
dHlwZSwgaW50IHZhbHVlKTsKKyAgICB2b2lkIHNldENhY2hlZE1heEluZGV4KEdDM0RlbnVtIHR5
cGUsIHVuc2lnbmVkIHZhbHVlKTsKIAogICAgIEdDM0RlbnVtIGdldFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGFyZ2V0OyB9CiAgICAgdm9pZCBzZXRUYXJnZXQoR0MzRGVudW0sIGJvb2wgZm9y
V2ViR0wyKTsKQEAgLTgzLDExICs4MiwxMCBAQCBwcml2YXRlOgogICAgIC8vIHRoYXQgc2l6ZS4K
ICAgICBzdHJ1Y3QgTWF4SW5kZXhDYWNoZUVudHJ5IHsKICAgICAgICAgR0MzRGVudW0gdHlwZTsK
LSAgICAgICAgaW50IG1heEluZGV4OworICAgICAgICB1bnNpZ25lZCBtYXhJbmRleDsKICAgICB9
OwogICAgIC8vIE9wZW5HTCBFUyAyLjAgb25seSBoYXMgdHdvIHZhbGlkIGluZGV4IHR5cGVzIChV
TlNJR05FRF9CWVRFCi0gICAgLy8gYW5kIFVOU0lHTkVEX1NIT1JUKSwgYnV0IG1pZ2h0IGFzIHdl
bGwgbGVhdmUgb3BlbiB0aGUKLSAgICAvLyBwb3NzaWJpbGl0eSBvZiBhZGRpbmcgb3RoZXJzLgor
ICAgIC8vIGFuZCBVTlNJR05FRF9TSE9SVCkgcGx1cyBvbmUgZXh0ZW5zaW9uIChVTlNJR05FRF9J
TlQpLgogICAgIE1heEluZGV4Q2FjaGVFbnRyeSBtX21heEluZGV4Q2FjaGVbNF07CiAgICAgdW5z
aWduZWQgbV9uZXh0QXZhaWxhYmxlQ2FjaGVFbnRyeSB7IDAgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggODQ0
N2NjNTc5MmIzZWU5MjU2ZTNhZjYwMzcwYTU1MDQ3NjU2NjgwZS4uMjRlNmEwMTQ1NzliZjRlYTYw
MDIwZTlmZGQ0NmQ5YmMwNzVlOWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC03NTQsMjEgKzc1NCwyMSBAQCBi
b29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZl
KEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAgIGNvbnN0IEFycmF5QnVmZmVyKiBidWZmZXIgPSBl
bGVtZW50QXJyYXlCdWZmZXItPmVsZW1lbnRBcnJheUJ1ZmZlcigpOwogICAgIEFTU0VSVChidWZm
ZXIpOwogICAgIAotICAgIGludCBtYXhJbmRleCA9IGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0Q2Fj
aGVkTWF4SW5kZXgodHlwZSk7Ci0gICAgaWYgKG1heEluZGV4IDwgMCkgeworICAgIHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IG1heEluZGV4ID0gZWxlbWVudEFycmF5QnVmZmVyLT5nZXRDYWNoZWRN
YXhJbmRleCh0eXBlKTsKKyAgICBpZiAoIW1heEluZGV4KSB7CiAgICAgICAgIC8vIENvbXB1dGUg
dGhlIG1heGltdW0gaW5kZXggaW4gdGhlIGVudGlyZSBidWZmZXIgZm9yIHRoZSBnaXZlbiB0eXBl
IG9mIGluZGV4LgogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICAgY2FzZSBHcmFwaGlj
c0NvbnRleHQzRDo6VU5TSUdORURfQllURTogewogICAgICAgICAgICAgY29uc3QgR0MzRHVieXRl
KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVieXRlKj4oYnVmZmVyLT5kYXRhKCkpOwogICAg
ICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKQot
ICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5kZXgsIHN0YXRpY19jYXN0
PGludD4ocFtpXSkpOworICAgICAgICAgICAgICAgIG1heEluZGV4ID0gbWF4SW5kZXggPyBzdGQ6
Om1heChtYXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSkpIDogc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfU0hPUlQ6IHsKICAgICAg
ICAgICAgIG51bUVsZW1lbnRzIC89IHNpemVvZihHQzNEdXNob3J0KTsKICAgICAgICAgICAgIGNv
bnN0IEdDM0R1c2hvcnQqIHAgPSBzdGF0aWNfY2FzdDxjb25zdCBHQzNEdXNob3J0Kj4oYnVmZmVy
LT5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChHQzNEc2l6ZWlwdHIgaSA9IDA7IGkgPCBudW1F
bGVtZW50czsgaSsrKQotICAgICAgICAgICAgICAgIG1heEluZGV4ID0gc3RkOjptYXgobWF4SW5k
ZXgsIHN0YXRpY19jYXN0PGludD4ocFtpXSkpOworICAgICAgICAgICAgICAgIG1heEluZGV4ID0g
bWF4SW5kZXggPyBzdGQ6Om1heChtYXhJbmRleC52YWx1ZSgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocFtpXSkpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBbaV0pOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
SU5UOiB7CkBAIC03NzcsMjAgKzc3NywyMyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbgogICAg
ICAgICAgICAgbnVtRWxlbWVudHMgLz0gc2l6ZW9mKEdDM0R1aW50KTsKICAgICAgICAgICAgIGNv
bnN0IEdDM0R1aW50KiBwID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0MzRHVpbnQqPihidWZmZXItPmRh
dGEoKSk7CiAgICAgICAgICAgICBmb3IgKEdDM0RzaXplaXB0ciBpID0gMDsgaSA8IG51bUVsZW1l
bnRzOyBpKyspCi0gICAgICAgICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwg
c3RhdGljX2Nhc3Q8aW50PihwW2ldKSk7CisgICAgICAgICAgICAgICAgbWF4SW5kZXggPSBtYXhJ
bmRleCA/IHN0ZDo6bWF4KG1heEluZGV4LnZhbHVlKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
W2ldKSkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocFtpXSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9Ci0gICAgICAgIGVsZW1lbnRBcnJheUJ1ZmZlci0+c2V0Q2FjaGVkTWF4SW5kZXgo
dHlwZSwgbWF4SW5kZXgpOworICAgICAgICBpZiAobWF4SW5kZXgpCisgICAgICAgICAgICBlbGVt
ZW50QXJyYXlCdWZmZXItPnNldENhY2hlZE1heEluZGV4KHR5cGUsIG1heEluZGV4LnZhbHVlKCkp
OwogICAgIH0KICAgICAKLSAgICBpZiAobWF4SW5kZXggPj0gMCkgeworICAgIGlmIChtYXhJbmRl
eCkgewogICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIHJlcXVpcmVkIGVsZW1lbnRzIGlzIG9uZSBt
b3JlIHRoYW4gdGhlIG1heGltdW0KICAgICAgICAgLy8gaW5kZXggdGhhdCB3aWxsIGJlIGFjY2Vz
c2VkLgotICAgICAgICBudW1FbGVtZW50c1JlcXVpcmVkID0gbWF4SW5kZXggKyAxOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgbnVtRWxlbWVudHNSZXF1aXJlZCA9IG1heEluZGV4LnZh
bHVlKCkgKyAxOworCisgICAgICAgIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KKyAgICAgICAgcmV0
dXJuIG51bUVsZW1lbnRzUmVxdWlyZWQgPiAwOwogICAgIH0KICAgICAKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IDg5YjAzYWEwMmM3MDNkZGI4MDBhOTg0YjA4MjM3NDNm
MmY3ODNjMDguLmI2ZmIyMGJkZDhmNDdkMzM4YzMxN2UwYmU5ZDYyMDYwNzM3YzU5YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwCkBAIC0xNzgxLDcgKzE3ODEsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OnZhbGlkYXRlVmVydGV4QXR0cmlidXRlcyh1bnNpZ25lZCBlbGVtZW50Q291bnQs
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGVsZW1lbnRDb3Vu
dCA8PSAwKQorICAgIGlmICghZWxlbWVudENvdW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIExvb2sgaW4gZWFjaCBjb25zdW1lZCB2ZXJ0ZXggYXR0cmliIChieSB0aGUgY3VycmVu
dCBwcm9ncmFtKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCAyNDA2Nzg5OWEzMTI0ODNiMDEzZmVjN2E1ZjRjOTQyOWY1ZDJi
NTVlLi44ZWI0YjY0Mzc0ZTljNDlhNTQ3YWVmZTc3YmY2NjFlY2I4NTU5NTNjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTctMDMtMTYgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYkdMOiBJbXByb3ZlIGluZGV4IHZhbGlkYXRpb24gd2hlbiB1c2luZyB1aW50
IGluZGV4IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY5Nzk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtdWlu
dC1pbmRleC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmds
L2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50LWluZGV4Lmh0bWw6IEFkZGVkLgorCiAy
MDE3LTAzLTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Rh
eSBpbnNpZGUgdGhlIGNvbnRpbnVhdGlvbiB3aGlsZSBzZWFyY2hpbmcgZm9yIGEgY2FuZGlkYXRl
IGFuY2VzdG9yIGZvciBpbnNlcnRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nh
bnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1vZi1ib3VuZHMtdWludC1pbmRleC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9kcmF3LWVsZW1lbnRzLW91dC1v
Zi1ib3VuZHMtdWludC1pbmRleC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY0NDczMDA1MDIy
ZWU1MDJjZGZiNThhN2RjN2NiMzIwNWY5YjVkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50LWlu
ZGV4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0IG9mIGRyYXdFbGVtZW50cyB3
aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1ldGVycyB1c2luZyBPRVNfZWxlbWVudF9pbmRleF91aW50
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBjb250ZXh0LmRyYXdFbGVtZW50
cyhjb250ZXh0LkxJTkVTLCAxLCBjb250ZXh0LlVOU0lHTkVEX0lOVCwgMCkgZ2VuZXJhdGVkIGV4
cGVjdGVkIEdMIGVycm9yOiBJTlZBTElEX09QRVJBVElPTi4KK1BBU1MgY29udGV4dC5kcmF3RWxl
bWVudHMoY29udGV4dC5MSU5FUywgMSwgY29udGV4dC5VTlNJR05FRF9JTlQsIDApIGdlbmVyYXRl
ZCBleHBlY3RlZCBHTCBlcnJvcjogSU5WQUxJRF9PUEVSQVRJT04uCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jYW52YXMvd2ViZ2wvZHJhdy1lbGVtZW50cy1vdXQtb2YtYm91bmRzLXVpbnQtaW5k
ZXguaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0
LW9mLWJvdW5kcy11aW50LWluZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk5YmYyY2Y1ZjE1ZTNhMmYw
ZGUwNjA3MDBjMGQxMWE2ZjIxYWMzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3dlYmdsL2RyYXctZWxlbWVudHMtb3V0LW9mLWJvdW5kcy11aW50LWluZGV4Lmh0
bWwKQEAgLTAsMCArMSw1MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYmdsLXRlc3QuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNj
cmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0IG9mIGRyYXdFbGVtZW50cyB3aXRoIG91dC1vZi1ib3VuZHMgcGFyYW1l
dGVycyB1c2luZyBPRVNfZWxlbWVudF9pbmRleF91aW50Iik7CisKK2lmICh3aW5kb3cuaW50ZXJu
YWxzKQorICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0V2ViR0xFcnJvcnNUb0NvbnNv
bGVFbmFibGVkKGZhbHNlKTsKKwordmFyIGNvbnRleHQgPSBjcmVhdGUzRENvbnRleHQoKTsKK3Zh
ciBwcm9ncmFtID0gbG9hZFN0YW5kYXJkUHJvZ3JhbShjb250ZXh0KTsKKworY29udGV4dC51c2VQ
cm9ncmFtKHByb2dyYW0pOworY29udGV4dC5nZXRFeHRlbnNpb24oIk9FU19lbGVtZW50X2luZGV4
X3VpbnQiKTsKKwordmFyIGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7Citjb250ZXh0
LmJpbmRCdWZmZXIoY29udGV4dC5BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7CisKK3ZhciBkYXRhID0g
bmV3IFVpbnQ4QXJyYXkoMHgxMDApOworY29udGV4dC5idWZmZXJEYXRhKGNvbnRleHQuQVJSQVlf
QlVGRkVSLCBkYXRhLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKKworYnVmZmVyID0gY29udGV4dC5j
cmVhdGVCdWZmZXIoKTsKK2NvbnRleHQuYmluZEJ1ZmZlcihjb250ZXh0LkVMRU1FTlRfQVJSQVlf
QlVGRkVSLCBidWZmZXIpOworCitkYXRhID0gbmV3IFVpbnQzMkFycmF5KG5ldyBBcnJheUJ1ZmZl
cigweDEwKSk7CitkYXRhWzBdID0gMHhmZmZmZmZmZjsKK2ZvciAobGV0IGkgPSAxOyBpIDwgZGF0
YS5sZW5ndGg7IGkrKyl7CisgICAgZGF0YVtpXSA9IDE7Cit9Citjb250ZXh0LmJ1ZmZlckRhdGEo
Y29udGV4dC5FTEVNRU5UX0FSUkFZX0JVRkZFUiwgZGF0YSwgY29udGV4dC5TVEFUSUNfRFJBVyk7
CisKK2NvbnRleHQuZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Citjb250ZXh0LmVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDEpOworY29udGV4dC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDEsIGNv
bnRleHQuVU5TSUdORURfQllURSwgZmFsc2UsIDAsIDApOworY29udGV4dC52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKDEsIDEsIGNvbnRleHQuVU5TSUdORURfQllURSwgZmFsc2UsIDAsIDApOworCitzaG91
bGRHZW5lcmF0ZUdMRXJyb3IoY29udGV4dCwgY29udGV4dC5JTlZBTElEX09QRVJBVElPTiwgImNv
bnRleHQuZHJhd0VsZW1lbnRzKGNvbnRleHQuTElORVMsIDEsIGNvbnRleHQuVU5TSUdORURfSU5U
LCAwKSIpOworCitkYXRhWzBdID0gMHhmZmZmZmZmZDsKK2NvbnRleHQuYnVmZmVyRGF0YShjb250
ZXh0LkVMRU1FTlRfQVJSQVlfQlVGRkVSLCBkYXRhLCBjb250ZXh0LlNUQVRJQ19EUkFXKTsKKwor
c2hvdWxkR2VuZXJhdGVHTEVycm9yKGNvbnRleHQsIGNvbnRleHQuSU5WQUxJRF9PUEVSQVRJT04s
ICJjb250ZXh0LmRyYXdFbGVtZW50cyhjb250ZXh0LkxJTkVTLCAxLCBjb250ZXh0LlVOU0lHTkVE
X0lOVCwgMCkiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="326234"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>