<?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>193926</bug_id>
          
          <creation_ts>2019-01-28 14:56:46 -0800</creation_ts>
          <short_desc>[WebGPU] Fix and add validation to WebGPURenderPipeline and MTLVertexDescriptor</short_desc>
          <delta_ts>2019-01-29 12:50:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGPU</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="Justin Fan">justin_fan</reporter>
          <assigned_to name="Justin Fan">justin_fan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1499201</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-28 14:56:46 -0800</bug_when>
    <thetext>[WebGPU] Fix and add validation to WebGPURenderPipeline and MTLVertexDescriptor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499202</commentid>
    <comment_count>1</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-28 14:58:47 -0800</bug_when>
    <thetext>&lt;rdar://problem/47327648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499203</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-28 14:59:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/47612384&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499204</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-28 14:59:04 -0800</bug_when>
    <thetext>&lt;rdar://problem/47612385&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499210</commentid>
    <comment_count>4</comment_count>
      <attachid>360380</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-28 15:09:29 -0800</bug_when>
    <thetext>Created attachment 360380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499216</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-28 15:12:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/47327648&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499351</commentid>
    <comment_count>6</comment_count>
      <attachid>360380</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-28 19:03:21 -0800</bug_when>
    <thetext>Comment on attachment 360380
Patch

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

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:123
&gt; +    auto attributeArray = retainPtr(mtlVertexDescriptor.get().attributes);

Are you sure our style guide permits use of Objective-C dot syntax?

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:128
&gt; +        if (location &gt; 30) {

I think this limit needs to be 16, not 30. It is/will be in the spec.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:133
&gt; +        if (attributes[i].inputSlot &gt; 30) {

Ditto.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:145
&gt; +        mtlAttributeDesc.get().offset = attributes[i].offset; // FIXME: Setting this to an invalidly large value causes pipelineState creation to SIGABT.

This offset, plus the byte size of the data type, need to be less than or equal to the buffer&apos;s stride.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:156
&gt; +        if (inputs[j].inputSlot &gt; 30) {

Ditto about 16

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:205
&gt; +    populateMtlDescriptorSuccess = setFunctionsForPipelineDescriptor(functionName, mtlDescriptor.get(), descriptor)
&gt; +        &amp;&amp; setInputStateForPipelineDescriptor(functionName, mtlDescriptor.get(), descriptor);

I would separate these out into separate statements.

&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:219
&gt; +    NSError *error = [NSError errorWithDomain:@&quot;com.apple.WebKit.GPU&quot; code:1 userInfo:nil];

wat</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499626</commentid>
    <comment_count>7</comment_count>
      <attachid>360380</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-29 11:49:29 -0800</bug_when>
    <thetext>Comment on attachment 360380
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:123
&gt;&gt; +    auto attributeArray = retainPtr(mtlVertexDescriptor.get().attributes);
&gt; 
&gt; Are you sure our style guide permits use of Objective-C dot syntax?

Our style guide doesn&apos;t mention ObjC dot vs bracket. I use [object methodCall] and object.property.

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:145
&gt;&gt; +        mtlAttributeDesc.get().offset = attributes[i].offset; // FIXME: Setting this to an invalidly large value causes pipelineState creation to SIGABT.
&gt; 
&gt; This offset, plus the byte size of the data type, need to be less than or equal to the buffer&apos;s stride.

I could process the vertex buffer layouts first to determine the stride of the attribute&apos;s buffer. However, we won&apos;t know the size of the vertex buffer, so I&apos;m not sure how to validate stride, because it has the same issue as the offset value here.

&gt;&gt; Source/WebCore/platform/graphics/gpu/cocoa/GPURenderPipelineMetal.mm:219
&gt;&gt; +    NSError *error = [NSError errorWithDomain:@&quot;com.apple.WebKit.GPU&quot; code:1 userInfo:nil];
&gt; 
&gt; wat

error is an autoreleased NSError * created via the way we did it in WebMetal ¯\_(ツ)_/¯. Useful for debugging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499641</commentid>
    <comment_count>8</comment_count>
      <attachid>360485</attachid>
    <who name="Justin Fan">justin_fan</who>
    <bug_when>2019-01-29 12:11:15 -0800</bug_when>
    <thetext>Created attachment 360485
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499658</commentid>
    <comment_count>9</comment_count>
      <attachid>360485</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-29 12:50:23 -0800</bug_when>
    <thetext>Comment on attachment 360485
Patch for landing

Clearing flags on attachment: 360485

Committed r240672: &lt;https://trac.webkit.org/changeset/240672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1499659</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-29 12:50:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360380</attachid>
            <date>2019-01-28 15:09:29 -0800</date>
            <delta_ts>2019-01-29 12:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193926-20190128150928.patch</filename>
            <type>text/plain</type>
            <size>11709</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU0ZWYwNjE1Mjk5NGVk
ZDgwYjc0NmVhYzRlYzBhMmQ5MjMyNzhlZC4uNjllMjI5MmI5ZDA4YmE1Yzc1MTg4OTQyOTJkODhh
NTUyZGQ1MGZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAxLTI4ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRml4IGFu
ZCBhZGQgdmFsaWRhdGlvbiB0byBXZWJHUFVSZW5kZXJQaXBlbGluZSBhbmQgTVRMVmVydGV4RGVz
Y3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzOTI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzMyNzY0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdmVydGV4IGlucHV0IHRv
IHByb3Blcmx5IHV0aWxpemUgaW5wdXRTbG90IGFuZCBzaGFkZXJMb2NhdGlvbiBmaWVsZHMsIGFu
ZCBhZGQgc29tZSB2YWxpZGF0aW9uLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS92ZXJ0ZXgtYnVm
ZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNldElucHV0U3RhdGVGb3JQaXBlbGluZURlc2NyaXB0b3IpOiBQcm9wZXJseSByZXRhaW4g
TWV0YWwgdHlwZXMuCisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRl
KTogUHJvdmlkZSBlcnJvciBsb2dnaW5nIGZvciBNVExSZW5kZXJQaXBlbGluZVN0YXRlIGNyZWF0
aW9uLgorCiAyMDE5LTAxLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFjdGl2YXRlIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgaW4g
dGhlIE5ldHdvcmtQcm9jZXNzIGFuZCBkZWFjdGl2YXRlIGl0IGluIHRoZSBVSVByb2Nlc3MuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BVVmVy
dGV4SW5wdXREZXNjcmlwdG9yLmlkbAppbmRleCAzMDdlMzE1MzA0OWUzNDU5NWQxODg3ZDY4ODg2
Zjk4Njg0ZDk4MmU0Li44NzJmMzUzNWIwZjI0MDQ1NmM4ZGY1ZDk0YjNiZDlmM2Q5YTQxYjZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVWZXJ0ZXhJbnB1
dERlc2NyaXB0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dlYkdQ
VVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiB1MzIg
V2ViR1BVSW5wdXRTdGVwTW9kZUVudW07CiAgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAogICAgIEVu
YWJsZWRBdFJ1bnRpbWU9V2ViR1BVCiBdIGRpY3Rpb25hcnkgV2ViR1BVVmVydGV4SW5wdXREZXNj
cmlwdG9yIHsKKyAgICB1MzIgaW5wdXRTbG90OwogICAgIHUzMiBzdHJpZGU7CiAgICAgV2ViR1BV
SW5wdXRTdGVwTW9kZUVudW0gc3RlcE1vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRv
ci5oCmluZGV4IDA2MTliMjI2ZTgzYjU5MTU3OWMxOGQyNTIwZTg0MWIzOWJiZDBlYmIuLmM2ZmZl
Y2RmNmUyYjk4YWU5OThlYzk1NjczZmU1NjA1ZTExZmY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogfTsKIAogc3RydWN0IEdQVVZl
cnRleElucHV0RGVzY3JpcHRvciB7CisgICAgdW5zaWduZWQgbG9uZyBpbnB1dFNsb3Q7CiAgICAg
dW5zaWduZWQgbG9uZyBzdHJpZGU7CiAgICAgR1BVSW5wdXRTdGVwTW9kZUVudW0gc3RlcE1vZGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L2Nv
Y29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQppbmRleCA4MjMyYjk2
N2Y3NTNlODI2NDNmNWRiYmVkODk0NjUyMjlmODhlM2YwLi5mYTJlMDY0ZmY5NmY1Y2JjYzg5NWU4
YTBlY2JkNjhhMTU4ZmYwYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRh
bC5tbQpAQCAtMTE4LDQyICsxMTgsNTYgQEAgc3RhdGljIGJvb2wgc2V0SW5wdXRTdGF0ZUZvclBp
cGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE0KICNlbmRp
ZgogICAgIGF1dG8gbXRsVmVydGV4RGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFZlcnRleERlc2Ny
aXB0b3IgbmV3XSk7CiAKLSAgICAvLyBQb3B1bGF0ZSB2ZXJ0ZXggYXR0cmlidXRlcywgaWYgYW55
LgogICAgIGNvbnN0IGF1dG8mIGF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmlucHV0U3RhdGUuYXR0
cmlidXRlczsKIAotICAgIC8vIEZJWE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRhdGlvbiBpcyBuZWVk
ZWQgaGVyZT8KLSAgICBNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkgKmF0dHJpYnV0
ZUFycmF5ID0gbXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5hdHRyaWJ1dGVzOworICAgIGF1dG8g
YXR0cmlidXRlQXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5hdHRy
aWJ1dGVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5zaXplKCk7
ICsraSkgeworICAgICAgICBhdXRvIGxvY2F0aW9uID0gYXR0cmlidXRlc1tpXS5zaGFkZXJMb2Nh
dGlvbjsKKyAgICAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgdmVydGV4IGF0dHJpYnV0ZXMgc3Vw
cG9ydGVkIG9uIGFsbCBNZXRhbCBwbGF0Zm9ybXMuCisgICAgICAgIGlmIChsb2NhdGlvbiA+IDMw
KSB7CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc2hhZGVyTG9jYXRpb24g
JWx1IGZvciB2ZXJ0ZXggYXR0cmlidXRlISIsIGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIE1heGltdW0gbnVt
YmVyIG9mIHZlcnRleCBidWZmZXJzIHN1cHBvcnRlZCBvbiBhbGwgTWV0YWwgcGxhdGZvcm1zLgor
ICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5pbnB1dFNsb3QgPiAzMCkgeworICAgICAgICAgICAg
TE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIGlucHV0U2xvdCAlbHUgZm9yIHZlcnRleCBhdHRyaWJ1
dGUgJWx1ISIsIGZ1bmN0aW9uTmFtZSwgYXR0cmlidXRlc1tpXS5pbnB1dFNsb3QsIGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBhdXRvIG10
bEZvcm1hdCA9IHZhbGlkYXRlQW5kQ29udmVydFZlcnRleEZvcm1hdFRvTVRMVmVydGV4Rm9ybWF0
KGF0dHJpYnV0ZXNbaV0uZm9ybWF0KTsKICAgICAgICAgaWYgKCFtdGxGb3JtYXQpIHsKLSAgICAg
ICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBXZWJHUFVWZXJ0ZXhGb3JtYXRFbnVtIGZv
ciB2ZXJ0ZXggYXR0cmlidXRlISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICBMT0coV2Vi
R1BVLCAiJXM6IEludmFsaWQgV2ViR1BVVmVydGV4Rm9ybWF0RW51bSBmb3IgdmVydGV4IGF0dHJp
YnV0ZSAlbHUhIiwgZnVuY3Rpb25OYW1lLCBsb2NhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9y
ICptdGxBdHRyaWJ1dGVEZXNjID0gW2F0dHJpYnV0ZUFycmF5IG9iamVjdEF0SW5kZXhlZFN1YnNj
cmlwdDppXTsKLSAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5mb3JtYXQgPSAqbXRsRm9ybWF0Owot
ICAgICAgICBtdGxBdHRyaWJ1dGVEZXNjLm9mZnNldCA9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0Owot
ICAgICAgICBtdGxBdHRyaWJ1dGVEZXNjLmJ1ZmZlckluZGV4ID0gYXR0cmlidXRlc1tpXS5pbnB1
dFNsb3Q7Ci0gICAgICAgIFttdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgpLmF0dHJpYnV0ZXMgc2V0
T2JqZWN0Om10bEF0dHJpYnV0ZURlc2MgYXRJbmRleGVkU3Vic2NyaXB0OmldOworICAgICAgICBh
dXRvIG10bEF0dHJpYnV0ZURlc2MgPSByZXRhaW5QdHIoW2F0dHJpYnV0ZUFycmF5IG9iamVjdEF0
SW5kZXhlZFN1YnNjcmlwdDpsb2NhdGlvbl0pOworICAgICAgICBtdGxBdHRyaWJ1dGVEZXNjLmdl
dCgpLmZvcm1hdCA9ICptdGxGb3JtYXQ7CisgICAgICAgIG10bEF0dHJpYnV0ZURlc2MuZ2V0KCku
b2Zmc2V0ID0gYXR0cmlidXRlc1tpXS5vZmZzZXQ7IC8vIEZJWE1FOiBTZXR0aW5nIHRoaXMgdG8g
YW4gaW52YWxpZGx5IGxhcmdlIHZhbHVlIGNhdXNlcyBwaXBlbGluZVN0YXRlIGNyZWF0aW9uIHRv
IFNJR0FCVC4KKyAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5nZXQoKS5idWZmZXJJbmRleCA9IGF0
dHJpYnV0ZXNbaV0uaW5wdXRTbG90OworICAgICAgICBbbXRsVmVydGV4RGVzY3JpcHRvci5nZXQo
KS5hdHRyaWJ1dGVzIHNldE9iamVjdDptdGxBdHRyaWJ1dGVEZXNjLmdldCgpIGF0SW5kZXhlZFN1
YnNjcmlwdDpsb2NhdGlvbl07CiAgICAgfQogCi0gICAgLy8gUG9wdWxhdGUgdmVydGV4IGJ1ZmZl
ciBsYXlvdXRzLCBpZiBhbnkuCiAgICAgY29uc3QgYXV0byYgaW5wdXRzID0gZGVzY3JpcHRvci5p
bnB1dFN0YXRlLmlucHV0czsKIAotICAgIE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3JB
cnJheSAqbGF5b3V0QXJyYXkgPSBtdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgpLmxheW91dHM7Cisg
ICAgYXV0byBsYXlvdXRBcnJheSA9IHJldGFpblB0cihtdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgp
LmxheW91dHMpOwogCiAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBpbnB1dHMuc2l6ZSgpOyAr
K2opIHsKKyAgICAgICAgYXV0byBzbG90ID0gaW5wdXRzW2pdLmlucHV0U2xvdDsKKyAgICAgICAg
aWYgKGlucHV0c1tqXS5pbnB1dFNsb3QgPiAzMCkgeworICAgICAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBJbnZhbGlkIGlucHV0U2xvdCAlZCBmb3IgdmVydGV4IGJ1ZmZlciEiLCBmdW5jdGlvbk5h
bWUsIHNsb3QpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAg
ICAgYXV0byBtdGxTdGVwRnVuY3Rpb24gPSB2YWxpZGF0ZUFuZENvbnZlcnRTdGVwTW9kZVRvTVRM
U3RlcEZ1bmN0aW9uKGlucHV0c1tqXS5zdGVwTW9kZSk7CiAgICAgICAgIGlmICghbXRsU3RlcEZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgV2ViR1BVSW5w
dXRTdGVwTW9kZSBmb3IgdmVydGV4IGlucHV0ISIsIGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAg
ICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgV2ViR1BVSW5wdXRTdGVwTW9kZSBmb3IgdmVydGV4
IGJ1ZmZlciBhdCBzbG90ICVsdSEiLCBmdW5jdGlvbk5hbWUsIHNsb3QpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgTVRMVmVydGV4QnVmZmVyTGF5b3V0
RGVzY3JpcHRvciAqbXRsTGF5b3V0RGVzYyA9IFtsYXlvdXRBcnJheSBvYmplY3RBdEluZGV4ZWRT
dWJzY3JpcHQ6al07Ci0gICAgICAgIG10bExheW91dERlc2Muc3RlcEZ1bmN0aW9uID0gKm10bFN0
ZXBGdW5jdGlvbjsKLSAgICAgICAgbXRsTGF5b3V0RGVzYy5zdHJpZGUgPSBpbnB1dHNbal0uc3Ry
aWRlOwotICAgICAgICBbbXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzIHNldE9iamVj
dDptdGxMYXlvdXREZXNjIGF0SW5kZXhlZFN1YnNjcmlwdDpqXTsKKyAgICAgICAgYXV0byBtdGxM
YXlvdXREZXNjID0gcmV0YWluUHRyKFtsYXlvdXRBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3Jp
cHQ6c2xvdF0pOworICAgICAgICBtdGxMYXlvdXREZXNjLmdldCgpLnN0ZXBGdW5jdGlvbiA9ICpt
dGxTdGVwRnVuY3Rpb247CisgICAgICAgIG10bExheW91dERlc2MuZ2V0KCkuc3RyaWRlID0gaW5w
dXRzW2pdLnN0cmlkZTsKKyAgICAgICAgW210bFZlcnRleERlc2NyaXB0b3IuZ2V0KCkubGF5b3V0
cyBzZXRPYmplY3Q6bXRsTGF5b3V0RGVzYy5nZXQoKSBhdEluZGV4ZWRTdWJzY3JpcHQ6c2xvdF07
CiAgICAgfQogCiAgICAgbXRsRGVzY3JpcHRvci52ZXJ0ZXhEZXNjcmlwdG9yID0gbXRsVmVydGV4
RGVzY3JpcHRvci5nZXQoKTsKQEAgLTE4Myw4ICsxOTcsMTYgQEAgUmVmUHRyPEdQVVJlbmRlclBp
cGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNl
LCBHUFUKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYgKCFzZXRGdW5j
dGlvbnNGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdl
dCgpLCBkZXNjcmlwdG9yKQotICAgICAgICB8fCAhc2V0SW5wdXRTdGF0ZUZvclBpcGVsaW5lRGVz
Y3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIGRlc2NyaXB0b3IpKQor
ICAgIGJvb2wgcG9wdWxhdGVNdGxEZXNjcmlwdG9yU3VjY2VzcyA9IGZhbHNlOworCisgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOworCisgICAgcG9wdWxhdGVNdGxEZXNjcmlwdG9yU3Vj
Y2VzcyA9IHNldEZ1bmN0aW9uc0ZvclBpcGVsaW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10
bERlc2NyaXB0b3IuZ2V0KCksIGRlc2NyaXB0b3IpCisgICAgICAgICYmIHNldElucHV0U3RhdGVG
b3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBk
ZXNjcmlwdG9yKTsKKworICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBpZiAo
IXBvcHVsYXRlTXRsRGVzY3JpcHRvclN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gRklYTUU6IEdldCB0aGUgcGl4ZWxGb3JtYXQgYXMgY29uZmlndXJlZCBmb3IgdGhl
IGNvbnRleHQvQ0FNZXRhbExheWVyLgpAQCAtMTk0LDE0ICsyMTYsMTUgQEAgUmVmUHRyPEdQVVJl
bmRlclBpcGVsaW5lPiBHUFVSZW5kZXJQaXBlbGluZTo6Y3JlYXRlKGNvbnN0IEdQVURldmljZSYg
ZGV2aWNlLCBHUFUKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIHBp
cGVsaW5lID0gYWRvcHROUyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3UmVuZGVyUGlwZWxp
bmVTdGF0ZVdpdGhEZXNjcmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6bmlsXSk7Cisg
ICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBwbGUu
V2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07CisgICAgcGlwZWxpbmUgPSBhZG9wdE5T
KFtkZXZpY2UucGxhdGZvcm1EZXZpY2UoKSBuZXdSZW5kZXJQaXBlbGluZVN0YXRlV2l0aERlc2Ny
aXB0b3I6bXRsRGVzY3JpcHRvci5nZXQoKSBlcnJvcjomZXJyb3JdKTsKKyAgICBpZiAoIXBpcGVs
aW5lKQorICAgICAgICBMT0coV2ViR1BVLCAiJXM6ICVzISIsIGZ1bmN0aW9uTmFtZSwgZXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb24uVVRGOFN0cmluZyk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogCi0gICAgaWYgKCFwaXBlbGluZSkgewotICAgICAgICBMT0coV2ViR1BVLCAi
JXM6IEVycm9yIGNyZWF0aW5nIE1UTFJlbmRlclBpcGVsaW5lU3RhdGUhIiwgZnVuY3Rpb25OYW1l
KTsKKyAgICBpZiAoIXBpcGVsaW5lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CiAK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdQVVJlbmRlclBpcGVsaW5lKFdURk1vdmUocGlwZWxp
bmUpLCBXVEZNb3ZlKGRlc2NyaXB0b3IpKSk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDNmMzQ0NWU4M2NjMGVjYjM4
M2MzZjc4NjNhZjMzMGQ3YzFkNWQyMi4uOWQ4MDAyZDU5NmUzYjc5MzJlNWY0YzNmNWQ3YWVhZDU0
MzRmZGRkYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAxLTI4ICBKdXN0aW4gRmFuICA8
anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRml4IGFuZCBhZGQgdmFs
aWRhdGlvbiB0byBXZWJHUFVSZW5kZXJQaXBlbGluZSBhbmQgTVRMVmVydGV4RGVzY3JpcHRvcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzOTI2Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzMyNzY0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRlc3QgZm9yIG5ldyB2ZXJ0ZXggaW5w
dXQgbG9naWMuIE5vdyBwcm92aWRlcyBjb2xvciBhcyBhIHZlcnRleCBhdHRyaWJ1dGUuCisKKyAg
ICAgICAgKiB3ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sOgorCiAyMDE5
LTAxLTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGlPUzog
aW5wdXRtb2RlPSJub25lIiBkaXNhYmxlcyBoYXJkd2FyZSBrZXlib2FyZCdzIGdsb2JlIGtleQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3Ry
aXAuaHRtbCBiL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlw
Lmh0bWwKaW5kZXggNjExZmVlNGEyMTU0MjJiZDg3MWZiZDAxOWQ3ODU2NGZmYTNiNjg3My4uNjY3
YTBhNWE1NzIwYmJhY2FlMWEyNTQ4OTIwNWFkNTNmZWIzMzVmMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1zdHJpcC5odG1sCkBAIC0xNSw1
MiArMTUsNDYgQEAgdXNpbmcgbmFtZXNwYWNlIG1ldGFsOwogc3RydWN0IFZlcnRleEluCiB7CiAg
ICAgZmxvYXQ0IHBvc2l0aW9uIFtbYXR0cmlidXRlKDApXV07CisgICAgZmxvYXQgZ3JlZW4gW1th
dHRyaWJ1dGUoMSldXTsKIH07CiAKIHN0cnVjdCBWZXJ0ZXhPdXQKIHsKICAgICBmbG9hdDQgcG9z
aXRpb24gW1twb3NpdGlvbl1dOworICAgIGZsb2F0NCBjb2xvcjsKIH07CiAKIHZlcnRleCBWZXJ0
ZXhPdXQgdmVydGV4X21haW4oVmVydGV4SW4gdmVydGV4SW4gW1tzdGFnZV9pbl1dKQogewogICAg
IFZlcnRleE91dCB2T3V0OwogICAgIHZPdXQucG9zaXRpb24gPSB2ZXJ0ZXhJbi5wb3NpdGlvbjsK
KyAgICB2T3V0LmNvbG9yID0gZmxvYXQ0KDAsIHZlcnRleEluLmdyZWVuLCAwLCAxKTsKICAgICBy
ZXR1cm4gdk91dDsKIH0KIAotZnJhZ21lbnQgZmxvYXQ0IGZyYWdtZW50X21haW4oKQorZnJhZ21l
bnQgZmxvYXQ0IGZyYWdtZW50X21haW4oVmVydGV4T3V0IHYgW1tzdGFnZV9pbl1dKQogewotICAg
IHJldHVybiBmbG9hdDQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKKyAgICByZXR1cm4gdi5jb2xvcjsK
IH0KIGAKIAogZnVuY3Rpb24gY3JlYXRlVmVydGV4QnVmZmVyKGRldmljZSkgewotICAgIGNvbnN0
IGJ1ZmZlclNpemUgPSA0ICogNCAqIDQ7CisgICAgY29uc3QgYnVmZmVyU2l6ZSA9IDQgKiA1ICog
NDsKICAgICBjb25zdCBidWZmZXIgPSBkZXZpY2UuY3JlYXRlQnVmZmVyKHsgc2l6ZTogYnVmZmVy
U2l6ZSwgdXNhZ2U6IFdlYkdQVUJ1ZmZlclVzYWdlLk1BUF9XUklURSB9KTsKICAgICAKLSAgICBs
ZXQgYXJyYXlCdWZmZXIgPSBidWZmZXIubWFwcGluZzsKLSAgICBsZXQgZmxvYXRBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoYXJyYXlCdWZmZXIpOworICAgIGxldCBmbG9hdEFycmF5ID0gbmV3IEZs
b2F0MzJBcnJheShidWZmZXIubWFwcGluZyk7CiAKLSAgICBmbG9hdEFycmF5WzBdID0gLTE7Ci0g
ICAgZmxvYXRBcnJheVsxXSA9IDE7Ci0gICAgZmxvYXRBcnJheVsyXSA9IDA7Ci0gICAgZmxvYXRB
cnJheVszXSA9IDE7CisgICAgY29uc3QgdmVydGljZXMgPSBbCisgICAgICAgIC8vIGZsb2F0NCB4
eXp3LCBmbG9hdCBnCisgICAgICAgIC0xLCAxLCAwLCAxLCAxLAorICAgICAgICAtMSwgLTEsIDAs
IDEsIDEsCisgICAgICAgIDEsIDEsIDAsIDEsIDEsCisgICAgICAgIDEsIC0xLCAwLCAxLCAxCisg
ICAgXTsKIAotICAgIGZsb2F0QXJyYXlbNF0gPSAtMTsKLSAgICBmbG9hdEFycmF5WzVdID0gLTE7
Ci0gICAgZmxvYXRBcnJheVs2XSA9IDA7Ci0gICAgZmxvYXRBcnJheVs3XSA9IDE7Ci0KLSAgICBm
bG9hdEFycmF5WzhdID0gMTsKLSAgICBmbG9hdEFycmF5WzldID0gMTsKLSAgICBmbG9hdEFycmF5
WzEwXSA9IDA7Ci0gICAgZmxvYXRBcnJheVsxMV0gPSAxOwotCi0gICAgZmxvYXRBcnJheVsxMl0g
PSAxOwotICAgIGZsb2F0QXJyYXlbMTNdID0gLTE7Ci0gICAgZmxvYXRBcnJheVsxNF0gPSAwOwot
ICAgIGZsb2F0QXJyYXlbMTVdID0gMTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlcnRpY2Vz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZsb2F0QXJyYXlbaV0gPSB2ZXJ0aWNlc1tpXTsKKyAg
ICB9CiAKICAgICByZXR1cm4gYnVmZmVyOwogfQpAQCAtNzMsOSArNjcsMTUgQEAgZnVuY3Rpb24g
Y3JlYXRlSW5wdXRTdGF0ZURlc2NyaXB0b3IoKSB7CiAgICAgICAgICAgICBpbnB1dFNsb3Q6IDAs
CiAgICAgICAgICAgICBvZmZzZXQ6IDAsCiAgICAgICAgICAgICBmb3JtYXQ6IFdlYkdQVVZlcnRl
eEZvcm1hdC5GTE9BVF9SMzJfRzMyX0IzMl9BMzIKKyAgICAgICAgfSwgeworICAgICAgICAgICAg
c2hhZGVyTG9jYXRpb246IDEsCisgICAgICAgICAgICBpbnB1dFNsb3Q6IDAsCisgICAgICAgICAg
ICBvZmZzZXQ6IDQgKiA0LAorICAgICAgICAgICAgZm9ybWF0OiBXZWJHUFVWZXJ0ZXhGb3JtYXQu
RkxPQVRfUjMyCiAgICAgICAgIH1dLAogICAgICAgICBpbnB1dHM6IFt7Ci0gICAgICAgICAgICBz
dHJpZGU6IDQgKiA0LAorICAgICAgICAgICAgaW5wdXRTbG90OiAwLAorICAgICAgICAgICAgc3Ry
aWRlOiA0ICogNSwKICAgICAgICAgICAgIHN0ZXBNb2RlOiBXZWJHUFVJbnB1dFN0ZXBNb2RlLlZF
UlRFWAogICAgICAgICB9XQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>360485</attachid>
            <date>2019-01-29 12:11:15 -0800</date>
            <delta_ts>2019-01-29 12:50:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-193926-20190129121113.patch</filename>
            <type>text/plain</type>
            <size>11713</size>
            <attacher name="Justin Fan">justin_fan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwNDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU0ZWYwNjE1Mjk5NGVk
ZDgwYjc0NmVhYzRlYzBhMmQ5MjMyNzhlZC4uMGViNGJkMDUxMDhhNjE3YjY3ZjUwOTFhZGFlNThk
NTg3NWU3OGM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTAxLTI4ICBKdXN0
aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQVV0gRml4IGFu
ZCBhZGQgdmFsaWRhdGlvbiB0byBXZWJHUFVSZW5kZXJQaXBlbGluZSBhbmQgTVRMVmVydGV4RGVz
Y3JpcHRvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkzOTI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NzMyNzY0OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBNeWxlcyBDLiBNYXhmaWVsZC4KKworICAgICAgICBVcGRhdGUgdmVydGV4IGlucHV0
IHRvIHByb3Blcmx5IHV0aWxpemUgaW5wdXRTbG90IGFuZCBzaGFkZXJMb2NhdGlvbiBmaWVsZHMs
IGFuZCBhZGQgc29tZSB2YWxpZGF0aW9uLgorCisgICAgICAgIFRlc3Q6IHdlYmdwdS92ZXJ0ZXgt
YnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dl
YkdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGw6IAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnNldElucHV0U3RhdGVGb3JQaXBlbGluZURlc2NyaXB0b3IpOiBQcm9wZXJseSByZXRh
aW4gTWV0YWwgdHlwZXMuCisgICAgICAgIChXZWJDb3JlOjpHUFVSZW5kZXJQaXBlbGluZTo6Y3Jl
YXRlKTogUHJvdmlkZSBlcnJvciBsb2dnaW5nIGZvciBNVExSZW5kZXJQaXBlbGluZVN0YXRlIGNy
ZWF0aW9uLgorCiAyMDE5LTAxLTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIEFjdGl2YXRlIHRoZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
aW4gdGhlIE5ldHdvcmtQcm9jZXNzIGFuZCBkZWFjdGl2YXRlIGl0IGluIHRoZSBVSVByb2Nlc3Mu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV2ViR1BV
VmVydGV4SW5wdXREZXNjcmlwdG9yLmlkbAppbmRleCAzMDdlMzE1MzA0OWUzNDU5NWQxODg3ZDY4
ODg2Zjk4Njg0ZDk4MmU0Li44NzJmMzUzNWIwZjI0MDQ1NmM4ZGY1ZDk0YjNiZDlmM2Q5YTQxYjZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XZWJHUFVWZXJ0ZXhJ
bnB1dERlc2NyaXB0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dl
YkdQVVZlcnRleElucHV0RGVzY3JpcHRvci5pZGwKQEAgLTMxLDYgKzMxLDcgQEAgdHlwZWRlZiB1
MzIgV2ViR1BVSW5wdXRTdGVwTW9kZUVudW07CiAgICAgQ29uZGl0aW9uYWw9V0VCR1BVLAogICAg
IEVuYWJsZWRBdFJ1bnRpbWU9V2ViR1BVCiBdIGRpY3Rpb25hcnkgV2ViR1BVVmVydGV4SW5wdXRE
ZXNjcmlwdG9yIHsKKyAgICB1MzIgaW5wdXRTbG90OwogICAgIHUzMiBzdHJpZGU7CiAgICAgV2Vi
R1BVSW5wdXRTdGVwTW9kZUVudW0gc3RlcE1vZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0dQVVZlcnRleElucHV0RGVzY3Jp
cHRvci5oCmluZGV4IDA2MTliMjI2ZTgzYjU5MTU3OWMxOGQyNTIwZTg0MWIzOWJiZDBlYmIuLmM2
ZmZlY2RmNmUyYjk4YWU5OThlYzk1NjczZmU1NjA1ZTExZmY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9HUFVWZXJ0ZXhJbnB1dERlc2NyaXB0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvR1BVVmVydGV4SW5w
dXREZXNjcmlwdG9yLmgKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogfTsKIAogc3RydWN0IEdQ
VVZlcnRleElucHV0RGVzY3JpcHRvciB7CisgICAgdW5zaWduZWQgbG9uZyBpbnB1dFNsb3Q7CiAg
ICAgdW5zaWduZWQgbG9uZyBzdHJpZGU7CiAgICAgR1BVSW5wdXRTdGVwTW9kZUVudW0gc3RlcE1v
ZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L2NvY29hL0dQVVJlbmRlclBpcGVsaW5lTWV0YWwubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQppbmRleCA4MjMy
Yjk2N2Y3NTNlODI2NDNmNWRiYmVkODk0NjUyMjlmODhlM2YwLi5iNGU4NzYwYjVjY2NkMjEyODI0
MTRlMDllYWY1NmI1YzBmNzE5MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVNZXRhbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvY29jb2EvR1BVUmVuZGVyUGlwZWxpbmVN
ZXRhbC5tbQpAQCAtMTE4LDQyICsxMTgsNTYgQEAgc3RhdGljIGJvb2wgc2V0SW5wdXRTdGF0ZUZv
clBpcGVsaW5lRGVzY3JpcHRvcihjb25zdCBjaGFyKiBjb25zdCBmdW5jdGlvbk5hbWUsIE0KICNl
bmRpZgogICAgIGF1dG8gbXRsVmVydGV4RGVzY3JpcHRvciA9IGFkb3B0TlMoW01UTFZlcnRleERl
c2NyaXB0b3IgbmV3XSk7CiAKLSAgICAvLyBQb3B1bGF0ZSB2ZXJ0ZXggYXR0cmlidXRlcywgaWYg
YW55LgogICAgIGNvbnN0IGF1dG8mIGF0dHJpYnV0ZXMgPSBkZXNjcmlwdG9yLmlucHV0U3RhdGUu
YXR0cmlidXRlczsKIAotICAgIC8vIEZJWE1FOiBXaGF0IGtpbmQgb2YgdmFsaWRhdGlvbiBpcyBu
ZWVkZWQgaGVyZT8KLSAgICBNVExWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdG9yQXJyYXkgKmF0dHJp
YnV0ZUFycmF5ID0gbXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5hdHRyaWJ1dGVzOworICAgIGF1
dG8gYXR0cmlidXRlQXJyYXkgPSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5h
dHRyaWJ1dGVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBhdXRvIGxvY2F0aW9uID0gYXR0cmlidXRlc1tpXS5zaGFkZXJM
b2NhdGlvbjsKKyAgICAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgdmVydGV4IGF0dHJpYnV0ZXMg
dG8gYmUgc3VwcG9ydGVkIGJ5IFdlYiBHUFUuCisgICAgICAgIGlmIChsb2NhdGlvbiA+IDE2KSB7
CisgICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IEludmFsaWQgc2hhZGVyTG9jYXRpb24gJWx1
IGZvciB2ZXJ0ZXggYXR0cmlidXRlISIsIGZ1bmN0aW9uTmFtZSwgbG9jYXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIE1heGltdW0gbnVtYmVy
IG9mIHZlcnRleCBidWZmZXJzIHN1cHBvcnRlZC4KKyAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0u
aW5wdXRTbG90ID4gMTYpIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBp
bnB1dFNsb3QgJWx1IGZvciB2ZXJ0ZXggYXR0cmlidXRlICVsdSEiLCBmdW5jdGlvbk5hbWUsIGF0
dHJpYnV0ZXNbaV0uaW5wdXRTbG90LCBsb2NhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KICAgICAgICAgYXV0byBtdGxGb3JtYXQgPSB2YWxpZGF0ZUFuZENvbnZl
cnRWZXJ0ZXhGb3JtYXRUb01UTFZlcnRleEZvcm1hdChhdHRyaWJ1dGVzW2ldLmZvcm1hdCk7CiAg
ICAgICAgIGlmICghbXRsRm9ybWF0KSB7Ci0gICAgICAgICAgICBMT0coV2ViR1BVLCAiJXM6IElu
dmFsaWQgV2ViR1BVVmVydGV4Rm9ybWF0RW51bSBmb3IgdmVydGV4IGF0dHJpYnV0ZSEiLCBmdW5j
dGlvbk5hbWUpOworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIFdlYkdQVVZl
cnRleEZvcm1hdEVudW0gZm9yIHZlcnRleCBhdHRyaWJ1dGUgJWx1ISIsIGZ1bmN0aW9uTmFtZSwg
bG9jYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAg
ICAgTVRMVmVydGV4QXR0cmlidXRlRGVzY3JpcHRvciAqbXRsQXR0cmlidXRlRGVzYyA9IFthdHRy
aWJ1dGVBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6aV07Ci0gICAgICAgIG10bEF0dHJp
YnV0ZURlc2MuZm9ybWF0ID0gKm10bEZvcm1hdDsKLSAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5v
ZmZzZXQgPSBhdHRyaWJ1dGVzW2ldLm9mZnNldDsKLSAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5i
dWZmZXJJbmRleCA9IGF0dHJpYnV0ZXNbaV0uaW5wdXRTbG90OwotICAgICAgICBbbXRsVmVydGV4
RGVzY3JpcHRvci5nZXQoKS5hdHRyaWJ1dGVzIHNldE9iamVjdDptdGxBdHRyaWJ1dGVEZXNjIGF0
SW5kZXhlZFN1YnNjcmlwdDppXTsKKyAgICAgICAgYXV0byBtdGxBdHRyaWJ1dGVEZXNjID0gcmV0
YWluUHRyKFthdHRyaWJ1dGVBcnJheSBvYmplY3RBdEluZGV4ZWRTdWJzY3JpcHQ6bG9jYXRpb25d
KTsKKyAgICAgICAgbXRsQXR0cmlidXRlRGVzYy5nZXQoKS5mb3JtYXQgPSAqbXRsRm9ybWF0Owor
ICAgICAgICBtdGxBdHRyaWJ1dGVEZXNjLmdldCgpLm9mZnNldCA9IGF0dHJpYnV0ZXNbaV0ub2Zm
c2V0OyAvLyBGSVhNRTogQWZ0ZXIgYWRkaW5nIG1vcmUgdmVydGV4IGZvcm1hdHMsIGVuc3VyZSBv
ZmZzZXQgPCBidWZmZXIncyBzdHJpZGUgKyBmb3JtYXQncyBkYXRhIHNpemUuCisgICAgICAgIG10
bEF0dHJpYnV0ZURlc2MuZ2V0KCkuYnVmZmVySW5kZXggPSBhdHRyaWJ1dGVzW2ldLmlucHV0U2xv
dDsKKyAgICAgICAgW210bFZlcnRleERlc2NyaXB0b3IuZ2V0KCkuYXR0cmlidXRlcyBzZXRPYmpl
Y3Q6bXRsQXR0cmlidXRlRGVzYy5nZXQoKSBhdEluZGV4ZWRTdWJzY3JpcHQ6bG9jYXRpb25dOwog
ICAgIH0KIAotICAgIC8vIFBvcHVsYXRlIHZlcnRleCBidWZmZXIgbGF5b3V0cywgaWYgYW55Lgog
ICAgIGNvbnN0IGF1dG8mIGlucHV0cyA9IGRlc2NyaXB0b3IuaW5wdXRTdGF0ZS5pbnB1dHM7CiAK
LSAgICBNVExWZXJ0ZXhCdWZmZXJMYXlvdXREZXNjcmlwdG9yQXJyYXkgKmxheW91dEFycmF5ID0g
bXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzOworICAgIGF1dG8gbGF5b3V0QXJyYXkg
PSByZXRhaW5QdHIobXRsVmVydGV4RGVzY3JpcHRvci5nZXQoKS5sYXlvdXRzKTsKIAogICAgIGZv
ciAoc2l6ZV90IGogPSAwOyBqIDwgaW5wdXRzLnNpemUoKTsgKytqKSB7CisgICAgICAgIGF1dG8g
c2xvdCA9IGlucHV0c1tqXS5pbnB1dFNsb3Q7CisgICAgICAgIGlmIChpbnB1dHNbal0uaW5wdXRT
bG90ID4gMTYpIHsKKyAgICAgICAgICAgIExPRyhXZWJHUFUsICIlczogSW52YWxpZCBpbnB1dFNs
b3QgJWQgZm9yIHZlcnRleCBidWZmZXIhIiwgZnVuY3Rpb25OYW1lLCBzbG90KTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAgIGF1dG8gbXRsU3RlcEZ1bmN0
aW9uID0gdmFsaWRhdGVBbmRDb252ZXJ0U3RlcE1vZGVUb01UTFN0ZXBGdW5jdGlvbihpbnB1dHNb
al0uc3RlcE1vZGUpOwogICAgICAgICBpZiAoIW10bFN0ZXBGdW5jdGlvbikgewotICAgICAgICAg
ICAgTE9HKFdlYkdQVSwgIiVzOiBJbnZhbGlkIFdlYkdQVUlucHV0U3RlcE1vZGUgZm9yIHZlcnRl
eCBpbnB1dCEiLCBmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiBJ
bnZhbGlkIFdlYkdQVUlucHV0U3RlcE1vZGUgZm9yIHZlcnRleCBidWZmZXIgYXQgc2xvdCAlbHUh
IiwgZnVuY3Rpb25OYW1lLCBzbG90KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogCi0gICAgICAgIE1UTFZlcnRleEJ1ZmZlckxheW91dERlc2NyaXB0b3IgKm10bExheW91
dERlc2MgPSBbbGF5b3V0QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OmpdOwotICAgICAg
ICBtdGxMYXlvdXREZXNjLnN0ZXBGdW5jdGlvbiA9ICptdGxTdGVwRnVuY3Rpb247Ci0gICAgICAg
IG10bExheW91dERlc2Muc3RyaWRlID0gaW5wdXRzW2pdLnN0cmlkZTsKLSAgICAgICAgW210bFZl
cnRleERlc2NyaXB0b3IuZ2V0KCkubGF5b3V0cyBzZXRPYmplY3Q6bXRsTGF5b3V0RGVzYyBhdElu
ZGV4ZWRTdWJzY3JpcHQ6al07CisgICAgICAgIGF1dG8gbXRsTGF5b3V0RGVzYyA9IHJldGFpblB0
cihbbGF5b3V0QXJyYXkgb2JqZWN0QXRJbmRleGVkU3Vic2NyaXB0OnNsb3RdKTsKKyAgICAgICAg
bXRsTGF5b3V0RGVzYy5nZXQoKS5zdGVwRnVuY3Rpb24gPSAqbXRsU3RlcEZ1bmN0aW9uOworICAg
ICAgICBtdGxMYXlvdXREZXNjLmdldCgpLnN0cmlkZSA9IGlucHV0c1tqXS5zdHJpZGU7CisgICAg
ICAgIFttdGxWZXJ0ZXhEZXNjcmlwdG9yLmdldCgpLmxheW91dHMgc2V0T2JqZWN0Om10bExheW91
dERlc2MuZ2V0KCkgYXRJbmRleGVkU3Vic2NyaXB0OnNsb3RdOwogICAgIH0KIAogICAgIG10bERl
c2NyaXB0b3IudmVydGV4RGVzY3JpcHRvciA9IG10bFZlcnRleERlc2NyaXB0b3IuZ2V0KCk7CkBA
IC0xODMsOCArMTk3LDE2IEBAIFJlZlB0cjxHUFVSZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlw
ZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2UmIGRldmljZSwgR1BVCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGlmICghc2V0RnVuY3Rpb25zRm9yUGlwZWxpbmVEZXNj
cmlwdG9yKGZ1bmN0aW9uTmFtZSwgbXRsRGVzY3JpcHRvci5nZXQoKSwgZGVzY3JpcHRvcikKLSAg
ICAgICAgfHwgIXNldElucHV0U3RhdGVGb3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1l
LCBtdGxEZXNjcmlwdG9yLmdldCgpLCBkZXNjcmlwdG9yKSkKKyAgICBib29sIGRpZFNldEZ1bmN0
aW9ucyA9IGZhbHNlLCBkaWRTZXRJbnB1dFN0YXRlID0gZmFsc2U7CisKKyAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CisKKyAgICBkaWRTZXRGdW5jdGlvbnMgPSBzZXRGdW5jdGlvbnNG
b3JQaXBlbGluZURlc2NyaXB0b3IoZnVuY3Rpb25OYW1lLCBtdGxEZXNjcmlwdG9yLmdldCgpLCBk
ZXNjcmlwdG9yKTsKKyAgICBkaWRTZXRJbnB1dFN0YXRlID0gc2V0SW5wdXRTdGF0ZUZvclBpcGVs
aW5lRGVzY3JpcHRvcihmdW5jdGlvbk5hbWUsIG10bERlc2NyaXB0b3IuZ2V0KCksIGRlc2NyaXB0
b3IpOworCisgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKKworICAgIGlmICghZGlkU2V0
RnVuY3Rpb25zIHx8ICFkaWRTZXRJbnB1dFN0YXRlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIC8vIEZJWE1FOiBHZXQgdGhlIHBpeGVsRm9ybWF0IGFzIGNvbmZpZ3VyZWQgZm9yIHRo
ZSBjb250ZXh0L0NBTWV0YWxMYXllci4KQEAgLTE5NCwxNCArMjE2LDE1IEBAIFJlZlB0cjxHUFVS
ZW5kZXJQaXBlbGluZT4gR1BVUmVuZGVyUGlwZWxpbmU6OmNyZWF0ZShjb25zdCBHUFVEZXZpY2Um
IGRldmljZSwgR1BVCiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBw
aXBlbGluZSA9IGFkb3B0TlMoW2RldmljZS5wbGF0Zm9ybURldmljZSgpIG5ld1JlbmRlclBpcGVs
aW5lU3RhdGVXaXRoRGVzY3JpcHRvcjptdGxEZXNjcmlwdG9yLmdldCgpIGVycm9yOm5pbF0pOwor
ICAgIE5TRXJyb3IgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiY29tLmFwcGxl
LldlYktpdC5HUFUiIGNvZGU6MSB1c2VySW5mbzpuaWxdOworICAgIHBpcGVsaW5lID0gYWRvcHRO
UyhbZGV2aWNlLnBsYXRmb3JtRGV2aWNlKCkgbmV3UmVuZGVyUGlwZWxpbmVTdGF0ZVdpdGhEZXNj
cmlwdG9yOm10bERlc2NyaXB0b3IuZ2V0KCkgZXJyb3I6JmVycm9yXSk7CisgICAgaWYgKCFwaXBl
bGluZSkKKyAgICAgICAgTE9HKFdlYkdQVSwgIiVzOiAlcyEiLCBmdW5jdGlvbk5hbWUsIGVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uLlVURjhTdHJpbmcpOwogCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIAotICAgIGlmICghcGlwZWxpbmUpIHsKLSAgICAgICAgTE9HKFdlYkdQVSwg
IiVzOiBFcnJvciBjcmVhdGluZyBNVExSZW5kZXJQaXBlbGluZVN0YXRlISIsIGZ1bmN0aW9uTmFt
ZSk7CisgICAgaWYgKCFwaXBlbGluZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQog
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHUFVSZW5kZXJQaXBlbGluZShXVEZNb3ZlKHBpcGVs
aW5lKSwgV1RGTW92ZShkZXNjcmlwdG9yKSkpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQzZjM0NDVlODNjYzBlY2Iz
ODNjM2Y3ODYzYWYzMzBkN2MxZDVkMjIuLmM3MWY0YTgxMTdlN2UzNjgyOTY2MDMyMDBmOTU5ZGQw
ZmUzNzc0YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMS0yOCAgSnVzdGluIEZhbiAg
PGp1c3Rpbl9mYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJHUFVdIEZpeCBhbmQgYWRkIHZh
bGlkYXRpb24gdG8gV2ViR1BVUmVuZGVyUGlwZWxpbmUgYW5kIE1UTFZlcnRleERlc2NyaXB0b3IK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzkyNgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDczMjc2NDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TXlsZXMgQy4gTWF4ZmllbGQuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IGZvciBuZXcgdmVydGV4
IGlucHV0IGxvZ2ljLiBOb3cgcHJvdmlkZXMgY29sb3IgYXMgYSB2ZXJ0ZXggYXR0cmlidXRlLgor
CisgICAgICAgICogd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbDoKKwog
MjAxOS0wMS0yNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBp
T1M6IGlucHV0bW9kZT0ibm9uZSIgZGlzYWJsZXMgaGFyZHdhcmUga2V5Ym9hcmQncyBnbG9iZSBr
ZXkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xl
LXN0cmlwLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJncHUvdmVydGV4LWJ1ZmZlci10cmlhbmdsZS1z
dHJpcC5odG1sCmluZGV4IDYxMWZlZTRhMjE1NDIyYmQ4NzFmYmQwMTlkNzg1NjRmZmEzYjY4NzMu
LjY2N2EwYTVhNTcyMGJiYWNhZTFhMjU0ODkyMDVhZDUzZmViMzM1ZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmdwdS92ZXJ0ZXgtYnVmZmVyLXRyaWFuZ2xlLXN0cmlwLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvd2ViZ3B1L3ZlcnRleC1idWZmZXItdHJpYW5nbGUtc3RyaXAuaHRtbApAQCAt
MTUsNTIgKzE1LDQ2IEBAIHVzaW5nIG5hbWVzcGFjZSBtZXRhbDsKIHN0cnVjdCBWZXJ0ZXhJbgog
ewogICAgIGZsb2F0NCBwb3NpdGlvbiBbW2F0dHJpYnV0ZSgwKV1dOworICAgIGZsb2F0IGdyZWVu
IFtbYXR0cmlidXRlKDEpXV07CiB9OwogCiBzdHJ1Y3QgVmVydGV4T3V0CiB7CiAgICAgZmxvYXQ0
IHBvc2l0aW9uIFtbcG9zaXRpb25dXTsKKyAgICBmbG9hdDQgY29sb3I7CiB9OwogCiB2ZXJ0ZXgg
VmVydGV4T3V0IHZlcnRleF9tYWluKFZlcnRleEluIHZlcnRleEluIFtbc3RhZ2VfaW5dXSkKIHsK
ICAgICBWZXJ0ZXhPdXQgdk91dDsKICAgICB2T3V0LnBvc2l0aW9uID0gdmVydGV4SW4ucG9zaXRp
b247CisgICAgdk91dC5jb2xvciA9IGZsb2F0NCgwLCB2ZXJ0ZXhJbi5ncmVlbiwgMCwgMSk7CiAg
ICAgcmV0dXJuIHZPdXQ7CiB9CiAKLWZyYWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKCkKK2Zy
YWdtZW50IGZsb2F0NCBmcmFnbWVudF9tYWluKFZlcnRleE91dCB2IFtbc3RhZ2VfaW5dXSkKIHsK
LSAgICByZXR1cm4gZmxvYXQ0KDAuMCwgMS4wLCAwLjAsIDEuMCk7CisgICAgcmV0dXJuIHYuY29s
b3I7CiB9CiBgCiAKIGZ1bmN0aW9uIGNyZWF0ZVZlcnRleEJ1ZmZlcihkZXZpY2UpIHsKLSAgICBj
b25zdCBidWZmZXJTaXplID0gNCAqIDQgKiA0OworICAgIGNvbnN0IGJ1ZmZlclNpemUgPSA0ICog
NSAqIDQ7CiAgICAgY29uc3QgYnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcih7IHNpemU6IGJ1
ZmZlclNpemUsIHVzYWdlOiBXZWJHUFVCdWZmZXJVc2FnZS5NQVBfV1JJVEUgfSk7CiAgICAgCi0g
ICAgbGV0IGFycmF5QnVmZmVyID0gYnVmZmVyLm1hcHBpbmc7Ci0gICAgbGV0IGZsb2F0QXJyYXkg
PSBuZXcgRmxvYXQzMkFycmF5KGFycmF5QnVmZmVyKTsKKyAgICBsZXQgZmxvYXRBcnJheSA9IG5l
dyBGbG9hdDMyQXJyYXkoYnVmZmVyLm1hcHBpbmcpOwogCi0gICAgZmxvYXRBcnJheVswXSA9IC0x
OwotICAgIGZsb2F0QXJyYXlbMV0gPSAxOwotICAgIGZsb2F0QXJyYXlbMl0gPSAwOwotICAgIGZs
b2F0QXJyYXlbM10gPSAxOworICAgIGNvbnN0IHZlcnRpY2VzID0gWworICAgICAgICAvLyBmbG9h
dDQgeHl6dywgZmxvYXQgZworICAgICAgICAtMSwgMSwgMCwgMSwgMSwKKyAgICAgICAgLTEsIC0x
LCAwLCAxLCAxLAorICAgICAgICAxLCAxLCAwLCAxLCAxLAorICAgICAgICAxLCAtMSwgMCwgMSwg
MQorICAgIF07CiAKLSAgICBmbG9hdEFycmF5WzRdID0gLTE7Ci0gICAgZmxvYXRBcnJheVs1XSA9
IC0xOwotICAgIGZsb2F0QXJyYXlbNl0gPSAwOwotICAgIGZsb2F0QXJyYXlbN10gPSAxOwotCi0g
ICAgZmxvYXRBcnJheVs4XSA9IDE7Ci0gICAgZmxvYXRBcnJheVs5XSA9IDE7Ci0gICAgZmxvYXRB
cnJheVsxMF0gPSAwOwotICAgIGZsb2F0QXJyYXlbMTFdID0gMTsKLQotICAgIGZsb2F0QXJyYXlb
MTJdID0gMTsKLSAgICBmbG9hdEFycmF5WzEzXSA9IC0xOwotICAgIGZsb2F0QXJyYXlbMTRdID0g
MDsKLSAgICBmbG9hdEFycmF5WzE1XSA9IDE7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0
aWNlcy5sZW5ndGg7ICsraSkgeworICAgICAgICBmbG9hdEFycmF5W2ldID0gdmVydGljZXNbaV07
CisgICAgfQogCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KQEAgLTczLDkgKzY3LDE1IEBAIGZ1bmN0
aW9uIGNyZWF0ZUlucHV0U3RhdGVEZXNjcmlwdG9yKCkgewogICAgICAgICAgICAgaW5wdXRTbG90
OiAwLAogICAgICAgICAgICAgb2Zmc2V0OiAwLAogICAgICAgICAgICAgZm9ybWF0OiBXZWJHUFVW
ZXJ0ZXhGb3JtYXQuRkxPQVRfUjMyX0czMl9CMzJfQTMyCisgICAgICAgIH0sIHsKKyAgICAgICAg
ICAgIHNoYWRlckxvY2F0aW9uOiAxLAorICAgICAgICAgICAgaW5wdXRTbG90OiAwLAorICAgICAg
ICAgICAgb2Zmc2V0OiA0ICogNCwKKyAgICAgICAgICAgIGZvcm1hdDogV2ViR1BVVmVydGV4Rm9y
bWF0LkZMT0FUX1IzMgogICAgICAgICB9XSwKICAgICAgICAgaW5wdXRzOiBbewotICAgICAgICAg
ICAgc3RyaWRlOiA0ICogNCwKKyAgICAgICAgICAgIGlucHV0U2xvdDogMCwKKyAgICAgICAgICAg
IHN0cmlkZTogNCAqIDUsCiAgICAgICAgICAgICBzdGVwTW9kZTogV2ViR1BVSW5wdXRTdGVwTW9k
ZS5WRVJURVgKICAgICAgICAgfV0KICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>