<?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>167942</bug_id>
          
          <creation_ts>2017-02-07 09:34:01 -0800</creation_ts>
          <short_desc>Add kUTTypeUTF8PlainText and kUTTypeJPEG to the list of compatible content types in DragData</short_desc>
          <delta_ts>2017-02-08 20:27:29 -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>WebKit Misc.</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1274030</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-07 09:34:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/30315079&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274032</commentid>
    <comment_count>1</comment_count>
      <attachid>300815</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-07 09:38:42 -0800</bug_when>
    <thetext>Created attachment 300815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274039</commentid>
    <comment_count>2</comment_count>
      <attachid>300815</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-02-07 09:59:34 -0800</bug_when>
    <thetext>Comment on attachment 300815
Patch

Is this really only needed under ENABLE(DATA_INTERACTION)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274042</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-07 10:01:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 300815 [details]
&gt; Patch
&gt; 
&gt; Is this really only needed under ENABLE(DATA_INTERACTION)?

I believe so. In Pasteboard::read (in PasteboardMac.mm) we don&apos;t seem to support reading these types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274157</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-02-07 14:08:00 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 300815 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Is this really only needed under ENABLE(DATA_INTERACTION)?
&gt; 
&gt; I believe so. In Pasteboard::read (in PasteboardMac.mm) we don&apos;t seem to
&gt; support reading these types.

Should we? Is there a good reason to support different types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274275</commentid>
    <comment_count>5</comment_count>
      <attachid>300881</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-07 23:00:28 -0800</bug_when>
    <thetext>Created attachment 300881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274276</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-07 23:05:06 -0800</bug_when>
    <thetext>I have progress on test cases in TestWebKitAPI that use an NSView that vends only a certain UTI type (in this case, UTF8 or JPEG) when dragging. The test attempts to drag from this NSView into a web view and observe the inserted contents, but sending mouse dragged events isn&apos;t resulting in any dragging taking place for some reason. Into AppKit to find out why...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274532</commentid>
    <comment_count>7</comment_count>
      <attachid>300949</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-08 13:18:38 -0800</bug_when>
    <thetext>Created attachment 300949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274536</commentid>
    <comment_count>8</comment_count>
      <attachid>300951</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-08 13:23:33 -0800</bug_when>
    <thetext>Created attachment 300951
Build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274557</commentid>
    <comment_count>9</comment_count>
      <attachid>300958</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-08 14:08:57 -0800</bug_when>
    <thetext>Created attachment 300958
Move ivars to interface declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274571</commentid>
    <comment_count>10</comment_count>
      <attachid>300958</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-02-08 14:20:31 -0800</bug_when>
    <thetext>Comment on attachment 300958
Move ivars to interface declaration.

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

&gt; Tools/TestWebKitAPI/Tests/mac/DragAndDropPasteboardTests.mm:36
&gt; +    dispatch_block_t _completionBlock;

No BlockPtr love?

&gt; Tools/TestWebKitAPI/Tests/mac/DragAndDropPasteboardTests.mm:223
&gt; +    [hostWindow setFrameOrigin:NSMakePoint(0, 0)];

Is this on-screen? We probably don&apos;t want that. Does it have to be?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274586</commentid>
    <comment_count>11</comment_count>
      <attachid>300970</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-08 14:54:24 -0800</bug_when>
    <thetext>Created attachment 300970
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274602</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-02-08 15:18:26 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 300958 [details]
&gt; Move ivars to interface declaration.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=300958&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/mac/DragAndDropPasteboardTests.mm:36
&gt; &gt; +    dispatch_block_t _completionBlock;
&gt; 
&gt; No BlockPtr love?

Changed to use BlockPtr :)

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/mac/DragAndDropPasteboardTests.mm:223
&gt; &gt; +    [hostWindow setFrameOrigin:NSMakePoint(0, 0)];
&gt; 
&gt; Is this on-screen? We probably don&apos;t want that. Does it have to be?

Good point -- removed setVisible: and makeKeyAndOrderFront: -- it no longer appears on screen.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274609</commentid>
    <comment_count>13</comment_count>
      <attachid>300970</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-08 15:32:25 -0800</bug_when>
    <thetext>Comment on attachment 300970
Patch for landing

Clearing flags on attachment: 300970

Committed r211906: &lt;http://trac.webkit.org/changeset/211906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300815</attachid>
            <date>2017-02-07 09:38:42 -0800</date>
            <delta_ts>2017-02-07 23:00:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167942-20170207093620.patch</filename>
            <type>text/plain</type>
            <size>1661</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZiZWZlNjQ5OWEyMzdh
N2FiZmQ3YzExNDY5NzFhMmQzNjUyZjlhZS4uMWQzMTU0ODFiNDI1MjllMDU4NjEwZDcxYmI3YjEy
OThkYTQ1YTE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyYWdE
YXRhIHNob3VsZCBjb25zaWRlciB0aGVzZSB0byBiZSBjb21wYXRpYmxlIHR5cGVzLCBzaW5jZSBQ
YXN0ZWJvYXJkOjpyZWFkIHVuZGVyc3RhbmRzIGhvdyB0byBpbnRlcnByZXQgdGhlbS4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KToKKwogMjAxNy0wMi0wNiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkIHNob3VsZCB1c2UgLXJlZ2lzdGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlk
ZXI6IHdoZW4gY3JlYXRpbmcgYSBuZXcgVUlJdGVtUHJvdmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBhYzNjNWIwNTI1OWI2NTEzZjc1NjI4ZmZj
YTIxYWNkOWVlNWVjNDk3Li45ODVjYWQwMjUwNjBlNzE1NWU4ZjgyNjRmYjUxMjhjMDkyYjgxM2Vi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yMDYs
NiArMjA2LDEwIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBj
b25zdAogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhydGZQYXN0ZWJvYXJkVHlwZSgpKQogICAg
ICAgICB8fCB0eXBlcy5jb250YWlucyhzdHJpbmdQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAgICB8
fCB0eXBlcy5jb250YWlucyhjb2xvclBhc3RlYm9hcmRUeXBlKCkpCisjaWYgRU5BQkxFKERBVEFf
SU5URVJBQ1RJT04pCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlVVRG
OFBsYWluVGV4dCkpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlSlBF
RykpCisjZW5kaWYKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVQTkcp
KTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300881</attachid>
            <date>2017-02-07 23:00:28 -0800</date>
            <delta_ts>2017-02-08 13:18:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167942-20170207225805.patch</filename>
            <type>text/plain</type>
            <size>3402</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxMjkxZjhjZTUxNDY5
MjEwZWVlNjM0N2ZhZDFiY2ZiMjQ4ZDk3Yy4uNzlhMTEzNjFhMzdlOGNjMGUwNDMwMzQzZjg3YWVh
NGZjYTBiMmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTAyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
VVRJIHR5cGVzIGZvciBkcmFnZ2luZyBVVEY4IHBsYWluIHRleHQgYW5kIEpQRUcgaW1hZ2VzIHRv
IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcyBpbiBEcmFnRGF0YU1hYy5tbS4KKyAgICAgICAg
QWxzbyBoYW5kbGVzIHJlYWRpbmcgdGhlc2UgdHlwZXMgaW4gUGFzdGVib2FyZE1hYy5tbS4gSSB2
ZXJpZmllZCBtYW51YWxseSB3aXRoIGEgdGVzdCBhcHAgdGhhdCBpZiBhIHBsYXRmb3JtCisgICAg
ICAgIE5TVmlldyB2ZW5kcyBvbmx5IFVURjggcGxhaW50ZXh0IG9yIEpQRUcgaW1hZ2VzIHdoZW4g
ZHJhZ2dpbmcsIFdlYktpdCBpcyBhYmxlIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAg
ICAgICBwYXN0ZWJvYXJkIGFzIHRleHQgYW5kIGFuIGltYWdlLCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpE
cmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFk
KToKKwogMjAxNy0wMi0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCB1c2UgLXJlZ2lzdGVy
TG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6IHdoZW4gY3JlYXRpbmcgYSBuZXcgVUlJdGVtUHJv
dmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQppbmRleCBh
YzNjNWIwNTI1OWI2NTEzZjc1NjI4ZmZjYTIxYWNkOWVlNWVjNDk3Li5iNjg3NDE0MWY0NjQ2ZTg5
NWUxNDdhNzMxN2NkYTAzMjhmNWFhZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0RyYWdEYXRhTWFjLm1tCkBAIC0yMDQsOCArMjA0LDEwIEBAIGJvb2wgRHJhZ0RhdGE6OmNvbnRh
aW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgICAgICB8fCB0eXBlcy5jb250YWlucyh1
cmxQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAgICB8fCB0eXBlcy5jb250YWlucyhydGZkUGFzdGVi
b2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMocnRmUGFzdGVib2FyZFR5cGUo
KSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVVVEY4UGxhaW5UZXh0
KSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoc3RyaW5nUGFzdGVib2FyZFR5cGUoKSkKICAg
ICAgICAgfHwgdHlwZXMuY29udGFpbnMoY29sb3JQYXN0ZWJvYXJkVHlwZSgpKQorICAgICAgICB8
fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZUpQRUcpKQogICAgICAgICB8fCB0eXBlcy5j
b250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDRmYTJjNTJjZGEyYTJiY2Q0NWQwNTIzYTUz
YWJkOTRhOGZmZmVjNGQuLmVkYmMyOWE2ZGY0ZGJhMjU2ZGJmNWUzMmEwOTE3MmY2MGI4MjBmZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC00
MTQsNiArNDE0LDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHR5cGVzLmNvbnRh
aW5zKFN0cmluZyhrVVRUeXBlSlBFRykpKSB7CisgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVKUEVHLCBtX3Bhc3Rl
Ym9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvanBlZyIpKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAodHlwZXMuY29udGFpbnMo
U3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAgICAgICAgIFVSTCB1cmwgPSBzdHJhdGVneS51
cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9IHN0cmF0ZWd5LnN0
cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2FyZE5hbWUpOwpAQCAt
NDI2LDYgKzQzMywxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVy
LnJlYWRQbGFpblRleHQoc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVVVEY4UGxhaW5UZXh0KSkpIHsKKyAg
ICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoa1VUVHlwZVVURjhQ
bGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAoIXN0cmluZy5pc051bGwo
KSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgIH0KIH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300949</attachid>
            <date>2017-02-08 13:18:38 -0800</date>
            <delta_ts>2017-02-08 13:23:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167942-20170208131614.patch</filename>
            <type>text/plain</type>
            <size>20952</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxMjkxZjhjZTUxNDY5
MjEwZWVlNjM0N2ZhZDFiY2ZiMjQ4ZDk3Yy4uOTVlNDUxZDAxZGNmZjYxMDM5MWQzOWZlNDc0YTQz
OWI0OTg2ZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
VVRJIHR5cGVzIGZvciBkcmFnZ2luZyBVVEY4IHBsYWluIHRleHQgYW5kIEpQRUcgaW1hZ2VzIHRv
IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcyBpbiBEcmFnRGF0YU1hYy5tbS4KKyAgICAgICAg
QWxzbyBoYW5kbGVzIHJlYWRpbmcgdGhlc2UgdHlwZXMgaW4gUGFzdGVib2FyZE1hYy5tbS4gSSB2
ZXJpZmllZCBtYW51YWxseSB3aXRoIGEgdGVzdCBhcHAgdGhhdCBpZiBhIHBsYXRmb3JtCisgICAg
ICAgIE5TVmlldyB2ZW5kcyBvbmx5IFVURjggcGxhaW50ZXh0IG9yIEpQRUcgaW1hZ2VzIHdoZW4g
ZHJhZ2dpbmcsIFdlYktpdCBpcyBhYmxlIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAg
ICAgICBwYXN0ZWJvYXJkIGFzIHRleHQgYW5kIGFuIGltYWdlLCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgTmV3IFRlc3RXZWJLaXRBUEkgdGVzdHMgaW4gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKwogMjAxNy0wMi0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCB1
c2UgLXJlZ2lzdGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6IHdoZW4gY3JlYXRpbmcgYSBu
ZXcgVUlJdGVtUHJvdmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCBhYzNjNWIwNTI1OWI2NTEzZjc1NjI4ZmZjYTIxYWNkOWVlNWVjNDk3Li5iNjg3
NDE0MWY0NjQ2ZTg5NWUxNDdhNzMxN2NkYTAzMjhmNWFhZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yMDQsOCArMjA0LDEwIEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgICAgICB8fCB0eXBl
cy5jb250YWlucyh1cmxQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAgICB8fCB0eXBlcy5jb250YWlu
cyhydGZkUGFzdGVib2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMocnRmUGFz
dGVib2FyZFR5cGUoKSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVV
VEY4UGxhaW5UZXh0KSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoc3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoY29sb3JQYXN0ZWJvYXJkVHlwZSgp
KQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZUpQRUcpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDRmYTJjNTJjZGEyYTJi
Y2Q0NWQwNTIzYTUzYWJkOTRhOGZmZmVjNGQuLmVkYmMyOWE2ZGY0ZGJhMjU2ZGJmNWUzMmEwOTE3
MmY2MGI4MjBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCkBAIC00MTQsNiArNDE0LDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlSlBFRykpKSB7CisgICAgICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVK
UEVHLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkSW1h
Z2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvanBlZyIpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAgICAgICAgIFVSTCB1cmwg
PSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUpOwpAQCAtNDI2LDYgKzQzMywxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVVVEY4UGxhaW5U
ZXh0KSkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUo
a1VUVHlwZVVURjhQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAoIXN0
cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KIH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODBkMzE3YTc4
M2NhZWY2ZGYyNjQ4OTZiMjAwMjgzZjQyZmMwN2ZhLi44NmMzNzY1YmIzZmU2YzcxNTFmYWYxMjg0
M2ZmMTJjZDFhMTU1ZjgxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMDItMDggIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGtVVFR5cGVVVEY4UGxhaW5UZXh0
IGFuZCBrVVRUeXBlSlBFRyB0byB0aGUgbGlzdCBvZiBjb21wYXRpYmxlIGNvbnRlbnQgdHlwZXMg
aW4gRHJhZ0RhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Nzk0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMTUwNzk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyB0ZXN0IGNh
c2UgdGhhdCBzaW11bGF0ZXMgZHJhZ2dpbmcgZnJvbSBhIHNvdXJjZSB0aGF0IG9ubHkgdmVuZHMg
SlBFRyBpbWFnZXMgb3IgVVRGOCBwbGFpbnRleHQgaW50byBhCisgICAgICAgIGNvbnRlbnRlZGl0
YWJsZSBhcmVhLiBBbiBpbWFnZSBlbGVtZW50IGFuZCB0aGUgcGxhaW4gdGV4dCBjb250ZW50LCBy
ZXNwZWN0aXZlbHksIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICBjb250ZW50
ZWRpdGFibGUgaW4gdGhlc2UgY2FzZXMuCisKKyAgICAgICAgVGhlIERyYWdTb3VyY2UgYW5kIERy
YWdJbmZvIGFyZSB1c2VkIHRvIG1vY2sgZHJhZ2dpbmcgaW50byB0aGUgV2ViVmlldy4gVGhlcmUg
aXMgbm8gcmVsaWFuY2Ugb24gdXNpbmcgbW91c2UKKyAgICAgICAgZXZlbnRzIGluIHRoaXMgdGVz
dCwgc2luY2Ugd2UgY2FsbCB0aGUgZHJhZ2dpbmcgZGVsZWdhdGUgbWV0aG9kcyAoZHJhZ2dpbmdF
bnRlcmVkOiwgZHJhZ2dpbmdVcGRhdGVkOiwgYW5kCisgICAgICAgIHBlcmZvcm1EcmFnT3BlcmF0
aW9uOikgZGlyZWN0bHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW0Zy
YW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XSk6
CisgICAgICAgICgtW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBpbml0V2l0aENvbXBsZXRp
b25CbG9jazpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGRlYWxs
b2NdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIHdlYlZpZXc6ZGlk
RmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtEcmFnU291cmNlIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBpbml0V2l0
aEltYWdlOm9mZnNldDpwYXN0ZWJvYXJkOnNvdXJjZTpkZXN0aW5hdGlvbldpbmRvdzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1h
Z2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VdKToKKyAgICAg
ICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU2VxdWVuY2VO
dW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVEcmFnZ2VkSW1hZ2VUbzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdGb3JtYXRpb25dKToKKyAgICAgICAg
KC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRBbmltYXRl
c1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZvIG51bWJlck9mVmFsaWRJdGVt
c0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9y
RHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhP
cHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAg
ICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGlnaHRdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRU
ZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0FmdGVyUGVyZm9ybWlu
Z0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxNy0wMi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBob3cgR3JhcGhpY3NMYXllcidzICJpbldpbmRvdyIg
c3RhdGUgaXMgc2V0LCBhbmQgZml4IHNvbWUgaXNzdWVzIHdpdGggUGFnZSBPdmVybGF5cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ5MjVkMzUxNzhhOGY2NDhlZDNhODMzOTY4YmRlNzNj
M2RmN2Q0Li4xMjZlZDc3MmE1MTQ5ZDQ5ZjNhZTY4YmJhMDBlMWYxN2U4ZGZkOWFhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTQ4LDYgKzU0OCw4IEBACiAJCUUxOTRFMUJEMTc3RTUzQzcw
MDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3
N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwg
Ki87IH07CiAJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNr
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAq
LzsgfTsKIAkJRjQyREE1MTYxRDhDRUZFNDAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZv
Y3VzLW9ubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCAqLzsgfTsKKwkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyog
ZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9OworCQlGNEJGQTY4RTFFNEFEMDgw
MDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTgg
LyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0QzJBQjIyMURENkQ5
NUUwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMkFCMjExREQ2RDk0
MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLzsgfTsKIAkJRjRG
MTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5o
dG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKQEAgLTYyMSw2
ICs2MjMsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGNDc3Mjg5OTFFNEFFM0MxMDA3
QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUM5OUI2NzVGMUUzOTczNkYwMEZDNkM4MCAvKiBuby1hdXRvcGxheS13aXRoLWNv
bnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzk5QjY3NUQxRTM5NzIyMDAw
RkM2QzgwIC8qIGpzLXBsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUM5OUI2NzVDMUUzOTcyMUEwMEZDNkM4MCAvKiBhdXRvcGxheS13aXRoLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMzU4LDYgKzEzNjEsOCBAQAogCQlGM0ZD
M0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5h
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDE1MDg2QzFEQTA0MEMx
MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gInBsYXktYXVkaW8tb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1m
b2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJsYXJnZS1pbnB1
dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQlGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QkZBNjhD
MUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEMyQUIyMTFERDZEOTQxMDBF
MDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1z
aXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTE1LDYgKzIxMjAsNyBAQAogCQkJCTM3RkI3Mjk1MURCMkU4MkYwMEU0
MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovLAogCQkJCTM3NzZC
QzYyMTUwOTQ2QkMwMDQzQTY2RCAvKiBEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9u
cy5tbSAqLywKIAkJCQk5MzlCQTkxNjE0MTAzNDEyMDAxQTAxQkQgLyogRGV2aWNlU2NhbGVGYWN0
b3JPbkJhY2subW0gKi8sCisJCQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmRE
cm9wUGFzdGVib2FyZFRlc3RzLm1tICovLAogCQkJCTM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAv
KiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tICovLAogCQkJCTJENTFBMEM1MUM4QkYwMDQw
MDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLywKIAkJCQk0NjM5N0I5
NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKQEAgLTIxNzcsNiArMjE4Myw3IEBA
CiAJCQkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Q2VsbEFib3ZlLmh0bWwgKi8sCiAJCQkJMzdEQzY3OEYxNDBEN0QzQTAwQUJDQ0RCIC8qIERPTVJh
bmdlT2ZTdHJpbmcuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJh
Z21lbnROYXZpZ2F0aW9uLmh0bWwgKi8sCisJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlDREJGQ0M0MjFBOUZGNDQ4
MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLywKIAkJCQk5QjRG
OEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLywK
IAkJCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJ
dGVtLmh0bWwgKi8sCkBAIC0yNzc5LDYgKzI3ODYsNyBAQAogCQkJCTdDODlEMkFDMUE2OUI4MEQw
MDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUy
RDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRl
cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxRjFBNDExQUU2MDA0NDdDNEMgLyog
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0QkZB
NjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjIwMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1BhZ2VJc1BsYXlp
bmdBdWRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcg
LyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMTFB
NDExQUU2MDA0NDdDNEMgLyogV0tQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQYXN0
ZWJvYXJkVGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzkxNDJlNTc3NzZjYjVlODdkZmRjZTllYzM1MWZj
MWQ2OWUwMjFjNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCkBAIC0wLDAgKzEsMjYwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4K
KyNpbXBvcnQgPEFwcEtpdC9OU0V2ZW50X1ByaXZhdGUuaD4KKyNpbXBvcnQgPENhcmJvbi9DYXJi
b24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJW
aWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgRnJhbWVMb2Fk
Q29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJhbWVMb2FkRGVsZWdhdGU+CisrIChp
bnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190
KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1lTG9hZENvbXBs
ZXRpb25MaXN0ZW5lciB7CisgICAgZGlzcGF0Y2hfYmxvY2tfdCBfY29tcGxldGlvbkJsb2NrOwor
fQorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRj
aF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJldHVybiBbW1tGcmFtZUxvYWRDb21w
bGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25C
bG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb21wbGV0
aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrCit7CisgICAgaWYgKHNl
bGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0aW9uQmxvY2sgPSBbY29tcGxldGlv
bkJsb2NrIGNvcHldOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICBbX2NvbXBsZXRpb25CbG9jayByZWxlYXNlXTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpbmlzaExvYWRGb3JG
cmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIGlmIChfY29tcGxldGlvbkJsb2NrKQorICAg
ICAgICBfY29tcGxldGlvbkJsb2NrKCk7Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgRHJhZ1NvdXJj
ZSA6IE5TT2JqZWN0CistIChOU0RyYWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25N
YXNrRm9yTG9jYWw6KEJPT0wpZmxhZzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERyYWdTb3Vy
Y2UKKworLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0Zvckxv
Y2FsOihCT09MKWZsYWcKK3sKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKK30KKwor
QGVuZAorCitAaW50ZXJmYWNlIERyYWdJbmZvIDogTlNPYmplY3Q8TlNEcmFnZ2luZ0luZm8+CisK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGxhc3RNb3VzZVBvc2l0aW9uOworQHByb3Bl
cnR5IChub25hdG9taWMpIFJldGFpblB0cjxOU0ltYWdlPiBpbWFnZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljKSBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBwYXN0ZWJvYXJkOworQHByb3BlcnR5IChu
b25hdG9taWMpIFJldGFpblB0cjxEcmFnU291cmNlPiBzb3VyY2U7CitAcHJvcGVydHkgKG5vbmF0
b21pYykgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3c7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNTaXplIG9mZnNldDsKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ0luZm8KKworLSAo
aWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2Ugb2Zmc2V0OihOU1NpemUpbyBwYXN0
ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihEcmFnU291cmNlICopc291cmNl
IGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Cit7CisgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2ltYWdlID0gYW5JbWFnZTsKKyAg
ICAgICAgX3Bhc3RlYm9hcmQgPSBwYm9hcmQ7CisgICAgICAgIF9zb3VyY2UgPSBzb3VyY2U7Cisg
ICAgICAgIF93aW5kb3cgPSBkZXN0aW5hdGlvbldpbmRvdzsKKyAgICAgICAgX29mZnNldCA9IG87
CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistIChOU1dpbmRvdyAqKWRyYWdnaW5nRGVz
dGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1cm4gX3dpbmRvdy5nZXQoKTsKK30KKworLSAoTlNE
cmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaworeworICAgIHJldHVybiBO
U0RyYWdPcGVyYXRpb25Db3B5OworfQorCistIChOU1BvaW50KWRyYWdnaW5nTG9jYXRpb24KK3sK
KyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistIChOU1BvaW50KWRyYWdnZWRJ
bWFnZUxvY2F0aW9uCit7CisgICAgcmV0dXJuIE5TTWFrZVBvaW50KF9sYXN0TW91c2VQb3NpdGlv
bi54ICsgX29mZnNldC53aWR0aCwgX2xhc3RNb3VzZVBvc2l0aW9uLnkgKyBfb2Zmc2V0LmhlaWdo
dCk7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UKK3sKKyAgICByZXR1cm4gX2ltYWdl
LmdldCgpOworfQorCistIChOU1Bhc3RlYm9hcmQgKilkcmFnZ2luZ1Bhc3RlYm9hcmQKK3sKKyAg
ICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0gKGlkKWRyYWdnaW5nU291cmNlCit7
CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9CisKKy0gKE5TSW50ZWdlcilkcmFnZ2luZ1Nl
cXVlbmNlTnVtYmVyCit7CisgICAgcmV0dXJuIDA7Cit9CisKKy0gKHZvaWQpc2xpZGVEcmFnZ2Vk
SW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQorCistIChOU0FycmF5ICopbmFtZXNP
ZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjooTlNVUkwgKilkcm9wRGVzdGluYXRp
b24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0RyYWdnaW5nRm9ybWF0aW9uKWRyYWdn
aW5nRm9ybWF0aW9uCit7CisgICAgcmV0dXJuIE5TRHJhZ2dpbmdGb3JtYXRpb25EZWZhdWx0Owor
fQorCistICh2b2lkKXNldERyYWdnaW5nRm9ybWF0aW9uOihOU0RyYWdnaW5nRm9ybWF0aW9uKWZv
cm1hdGlvbgoreworfQorCistIChCT09MKWFuaW1hdGVzVG9EZXN0aW5hdGlvbgoreworICAgIHJl
dHVybiBOTzsKK30KKworLSAodm9pZClzZXRBbmltYXRlc1RvRGVzdGluYXRpb246KEJPT0wpZmxh
ZworeworfQorCistIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcAoreworICAg
IHJldHVybiAxOworfQorCistICh2b2lkKXNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A6KE5T
SW50ZWdlciludW1iZXIKK3sKK30KKworLSAodm9pZCllbnVtZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0
aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRpb25zKWVudW1PcHRzIGZvclZpZXc6KE5TVmlldyAq
KXZpZXcgY2xhc3NlczooTlNBcnJheSAqKWNsYXNzQXJyYXkgc2VhcmNoT3B0aW9uczooTlNEaWN0
aW9uYXJ5ICopc2VhcmNoT3B0aW9ucyB1c2luZ0Jsb2NrOih2b2lkICheKShOU0RyYWdnaW5nSXRl
bSAqZHJhZ2dpbmdJdGVtLCBOU0ludGVnZXIgaWR4LCBCT09MICpzdG9wKSlibG9jaworeworfQor
CisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IDEwMTEwMAorCistIChOU1Nw
cmluZ0xvYWRpbmdIaWdobGlnaHQpc3ByaW5nTG9hZGluZ0hpZ2hsaWdodAoreworICAgIHJldHVy
biBOU1NwcmluZ0xvYWRpbmdIaWdobGlnaHROb25lOworfQorCistICh2b2lkKXJlc2V0U3ByaW5n
TG9hZGluZworeworfQorCisjZW5kaWYKKworQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK3N0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2UoKQoreworICAgIHJldHVybiBbW1tO
U0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9yZWxlYXNlXTsKK30KKworc3RhdGlj
IFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKE5TUGFzdGVib2Fy
ZCAqcGFzdGVib2FyZCkKK3sKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gZGVzdGluYXRpb24gPSBh
ZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gaG9zdFdpbmRvdyA9IGFkb3B0TlMo
W1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tCb3JkZXJsZXNzIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtob3N0V2luZG93IHNldEZyYW1l
T3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsKKyAgICBbaG9zdFdpbmRvdyBzZXRJc1Zpc2libGU6
WUVTXTsKKyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6ZGVzdGluYXRp
b24uZ2V0KCldOworICAgIFtob3N0V2luZG93IG1ha2VLZXlBbmRPcmRlckZyb250OmRlc3RpbmF0
aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lID0gZmFsc2U7CisgICAgW2Rlc3Rp
bmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIg
bGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7CisgICAgICAgIFJldGFpblB0cjxEcmFn
U291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJjZSBhbGxvY10gaW5pdF0pOworICAg
ICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBhZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2Nd
IGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFz
dGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCkgZGVzdGluYXRpb25XaW5kb3c6
aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5mbyBzZXRMYXN0TW91c2VQb3NpdGlvbjpO
U01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nRW50ZXJl
ZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246TlNNYWtl
UG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0aW9uIGRyYWdnaW5nVXBkYXRlZDpp
bmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJVRShbZGVzdGluYXRpb24gcGVyZm9ybURy
YWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1d
XTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
ZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsKKworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb24uZ2V0KCk7Cit9CisK
K1RFU1QoRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMsIERyb3BVVEY4UGxhaW5UZXh0KQorewor
ICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdp
dGhVbmlxdWVOYW1lXTsKKyAgICBbcGFzdGVib2FyZCBzZXREYXRhOltAIkkgYW0gYSBXZWJLaXQu
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZm9yVHlwZTooX19icmlk
Z2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dF07CisKKyAgICBSZXRhaW5QdHI8V2Vi
Vmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0
aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LmJvZHkudGV4dENv
bnRlbnQiXSBjb250YWluc1N0cmluZzpAIkkgYW0gYSBXZWJLaXQuIl0pOworfQorCitURVNUKERy
YWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBEcm9wSlBFRykKK3sKKyAgICBOU1Bhc3RlYm9hcmQg
KnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07Cisg
ICAgTlNJbWFnZSAqaWNvbiA9IGdldFRlc3RJbWFnZSgpOworICAgIE5TQml0bWFwSW1hZ2VSZXAg
KmltYWdlUmVwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1hZ2VSZXBXaXRoRGF0YTppY29uLlRJRkZS
ZXByZXNlbnRhdGlvbl07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbaW1hZ2VSZXAgcmVwcmVz
ZW50YXRpb25Vc2luZ1R5cGU6TlNKUEVHRmlsZVR5cGUgcHJvcGVydGllczpAeyBOU0ltYWdlQ29t
cHJlc3Npb25GYWN0b3I6IEAoMC45KSB9XSBmb3JUeXBlOihfX2JyaWRnZSBOU1N0cmluZyAqKWtV
VFR5cGVKUEVHXTsKKworICAgIFJldGFpblB0cjxXZWJWaWV3PiByZXN1bHRpbmdXZWJWaWV3ID0g
d2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24ocGFzdGVib2FyZCk7CisgICAgRVhQ
RUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRG
cm9tU3RyaW5nOkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaW1nJykudGFnTmFtZSA9PT0gJ0lN
RyciXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
YjM4NDQ5Y2E3OGI3NDhlNTAxZWQ0NmQ0MjA2ZTU1M2MxZjM0N2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9mdWxsLXBhZ2UtY29udGVudGVkaXRhYmxl
Lmh0bWwKQEAgLTAsMCArMSBAQAorPGJvZHkgY29udGVudGVkaXRhYmxlIHN0eWxlPSJ3aWR0aDog
MTAwJTsgaGVpZ2h0OiAxMDAlOyBtYXJnaW46IDA7Ij4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300951</attachid>
            <date>2017-02-08 13:23:33 -0800</date>
            <delta_ts>2017-02-08 14:08:54 -0800</delta_ts>
            <desc>Build fix</desc>
            <filename>bug-167942-20170208132109.patch</filename>
            <type>text/plain</type>
            <size>20859</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxMjkxZjhjZTUxNDY5
MjEwZWVlNjM0N2ZhZDFiY2ZiMjQ4ZDk3Yy4uOTVlNDUxZDAxZGNmZjYxMDM5MWQzOWZlNDc0YTQz
OWI0OTg2ZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
VVRJIHR5cGVzIGZvciBkcmFnZ2luZyBVVEY4IHBsYWluIHRleHQgYW5kIEpQRUcgaW1hZ2VzIHRv
IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcyBpbiBEcmFnRGF0YU1hYy5tbS4KKyAgICAgICAg
QWxzbyBoYW5kbGVzIHJlYWRpbmcgdGhlc2UgdHlwZXMgaW4gUGFzdGVib2FyZE1hYy5tbS4gSSB2
ZXJpZmllZCBtYW51YWxseSB3aXRoIGEgdGVzdCBhcHAgdGhhdCBpZiBhIHBsYXRmb3JtCisgICAg
ICAgIE5TVmlldyB2ZW5kcyBvbmx5IFVURjggcGxhaW50ZXh0IG9yIEpQRUcgaW1hZ2VzIHdoZW4g
ZHJhZ2dpbmcsIFdlYktpdCBpcyBhYmxlIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAg
ICAgICBwYXN0ZWJvYXJkIGFzIHRleHQgYW5kIGFuIGltYWdlLCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgTmV3IFRlc3RXZWJLaXRBUEkgdGVzdHMgaW4gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKwogMjAxNy0wMi0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCB1
c2UgLXJlZ2lzdGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6IHdoZW4gY3JlYXRpbmcgYSBu
ZXcgVUlJdGVtUHJvdmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCBhYzNjNWIwNTI1OWI2NTEzZjc1NjI4ZmZjYTIxYWNkOWVlNWVjNDk3Li5iNjg3
NDE0MWY0NjQ2ZTg5NWUxNDdhNzMxN2NkYTAzMjhmNWFhZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yMDQsOCArMjA0LDEwIEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgICAgICB8fCB0eXBl
cy5jb250YWlucyh1cmxQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAgICB8fCB0eXBlcy5jb250YWlu
cyhydGZkUGFzdGVib2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMocnRmUGFz
dGVib2FyZFR5cGUoKSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVV
VEY4UGxhaW5UZXh0KSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoc3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoY29sb3JQYXN0ZWJvYXJkVHlwZSgp
KQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZUpQRUcpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDRmYTJjNTJjZGEyYTJi
Y2Q0NWQwNTIzYTUzYWJkOTRhOGZmZmVjNGQuLmVkYmMyOWE2ZGY0ZGJhMjU2ZGJmNWUzMmEwOTE3
MmY2MGI4MjBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCkBAIC00MTQsNiArNDE0LDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlSlBFRykpKSB7CisgICAgICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVK
UEVHLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkSW1h
Z2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvanBlZyIpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAgICAgICAgIFVSTCB1cmwg
PSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUpOwpAQCAtNDI2LDYgKzQzMywxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVVVEY4UGxhaW5U
ZXh0KSkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUo
a1VUVHlwZVVURjhQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAoIXN0
cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KIH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODBkMzE3YTc4
M2NhZWY2ZGYyNjQ4OTZiMjAwMjgzZjQyZmMwN2ZhLi44NmMzNzY1YmIzZmU2YzcxNTFmYWYxMjg0
M2ZmMTJjZDFhMTU1ZjgxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMDItMDggIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGtVVFR5cGVVVEY4UGxhaW5UZXh0
IGFuZCBrVVRUeXBlSlBFRyB0byB0aGUgbGlzdCBvZiBjb21wYXRpYmxlIGNvbnRlbnQgdHlwZXMg
aW4gRHJhZ0RhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Nzk0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMTUwNzk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyB0ZXN0IGNh
c2UgdGhhdCBzaW11bGF0ZXMgZHJhZ2dpbmcgZnJvbSBhIHNvdXJjZSB0aGF0IG9ubHkgdmVuZHMg
SlBFRyBpbWFnZXMgb3IgVVRGOCBwbGFpbnRleHQgaW50byBhCisgICAgICAgIGNvbnRlbnRlZGl0
YWJsZSBhcmVhLiBBbiBpbWFnZSBlbGVtZW50IGFuZCB0aGUgcGxhaW4gdGV4dCBjb250ZW50LCBy
ZXNwZWN0aXZlbHksIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICBjb250ZW50
ZWRpdGFibGUgaW4gdGhlc2UgY2FzZXMuCisKKyAgICAgICAgVGhlIERyYWdTb3VyY2UgYW5kIERy
YWdJbmZvIGFyZSB1c2VkIHRvIG1vY2sgZHJhZ2dpbmcgaW50byB0aGUgV2ViVmlldy4gVGhlcmUg
aXMgbm8gcmVsaWFuY2Ugb24gdXNpbmcgbW91c2UKKyAgICAgICAgZXZlbnRzIGluIHRoaXMgdGVz
dCwgc2luY2Ugd2UgY2FsbCB0aGUgZHJhZ2dpbmcgZGVsZWdhdGUgbWV0aG9kcyAoZHJhZ2dpbmdF
bnRlcmVkOiwgZHJhZ2dpbmdVcGRhdGVkOiwgYW5kCisgICAgICAgIHBlcmZvcm1EcmFnT3BlcmF0
aW9uOikgZGlyZWN0bHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW0Zy
YW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XSk6
CisgICAgICAgICgtW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBpbml0V2l0aENvbXBsZXRp
b25CbG9jazpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGRlYWxs
b2NdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIHdlYlZpZXc6ZGlk
RmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtEcmFnU291cmNlIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBpbml0V2l0
aEltYWdlOm9mZnNldDpwYXN0ZWJvYXJkOnNvdXJjZTpkZXN0aW5hdGlvbldpbmRvdzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1h
Z2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VdKToKKyAgICAg
ICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU2VxdWVuY2VO
dW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVEcmFnZ2VkSW1hZ2VUbzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdGb3JtYXRpb25dKToKKyAgICAgICAg
KC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRBbmltYXRl
c1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZvIG51bWJlck9mVmFsaWRJdGVt
c0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9y
RHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhP
cHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAg
ICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGlnaHRdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRU
ZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0FmdGVyUGVyZm9ybWlu
Z0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxNy0wMi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBob3cgR3JhcGhpY3NMYXllcidzICJpbldpbmRvdyIg
c3RhdGUgaXMgc2V0LCBhbmQgZml4IHNvbWUgaXNzdWVzIHdpdGggUGFnZSBPdmVybGF5cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ5MjVkMzUxNzhhOGY2NDhlZDNhODMzOTY4YmRlNzNj
M2RmN2Q0Li4xMjZlZDc3MmE1MTQ5ZDQ5ZjNhZTY4YmJhMDBlMWYxN2U4ZGZkOWFhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTQ4LDYgKzU0OCw4IEBACiAJCUUxOTRFMUJEMTc3RTUzQzcw
MDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3
N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwg
Ki87IH07CiAJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNr
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAq
LzsgfTsKIAkJRjQyREE1MTYxRDhDRUZFNDAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZv
Y3VzLW9ubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCAqLzsgfTsKKwkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyog
ZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9OworCQlGNEJGQTY4RTFFNEFEMDgw
MDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTgg
LyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0QzJBQjIyMURENkQ5
NUUwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMkFCMjExREQ2RDk0
MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLzsgfTsKIAkJRjRG
MTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5o
dG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKQEAgLTYyMSw2
ICs2MjMsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGNDc3Mjg5OTFFNEFFM0MxMDA3
QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUM5OUI2NzVGMUUzOTczNkYwMEZDNkM4MCAvKiBuby1hdXRvcGxheS13aXRoLWNv
bnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzk5QjY3NUQxRTM5NzIyMDAw
RkM2QzgwIC8qIGpzLXBsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUM5OUI2NzVDMUUzOTcyMUEwMEZDNkM4MCAvKiBhdXRvcGxheS13aXRoLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMzU4LDYgKzEzNjEsOCBAQAogCQlGM0ZD
M0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5h
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDE1MDg2QzFEQTA0MEMx
MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gInBsYXktYXVkaW8tb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1m
b2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJsYXJnZS1pbnB1
dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQlGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QkZBNjhD
MUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEMyQUIyMTFERDZEOTQxMDBF
MDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1z
aXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTE1LDYgKzIxMjAsNyBAQAogCQkJCTM3RkI3Mjk1MURCMkU4MkYwMEU0
MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovLAogCQkJCTM3NzZC
QzYyMTUwOTQ2QkMwMDQzQTY2RCAvKiBEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9u
cy5tbSAqLywKIAkJCQk5MzlCQTkxNjE0MTAzNDEyMDAxQTAxQkQgLyogRGV2aWNlU2NhbGVGYWN0
b3JPbkJhY2subW0gKi8sCisJCQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmRE
cm9wUGFzdGVib2FyZFRlc3RzLm1tICovLAogCQkJCTM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAv
KiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tICovLAogCQkJCTJENTFBMEM1MUM4QkYwMDQw
MDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLywKIAkJCQk0NjM5N0I5
NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKQEAgLTIxNzcsNiArMjE4Myw3IEBA
CiAJCQkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Q2VsbEFib3ZlLmh0bWwgKi8sCiAJCQkJMzdEQzY3OEYxNDBEN0QzQTAwQUJDQ0RCIC8qIERPTVJh
bmdlT2ZTdHJpbmcuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJh
Z21lbnROYXZpZ2F0aW9uLmh0bWwgKi8sCisJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlDREJGQ0M0MjFBOUZGNDQ4
MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLywKIAkJCQk5QjRG
OEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLywK
IAkJCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJ
dGVtLmh0bWwgKi8sCkBAIC0yNzc5LDYgKzI3ODYsNyBAQAogCQkJCTdDODlEMkFDMUE2OUI4MEQw
MDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUy
RDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRl
cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxRjFBNDExQUU2MDA0NDdDNEMgLyog
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0QkZB
NjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjIwMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1BhZ2VJc1BsYXlp
bmdBdWRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcg
LyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMTFB
NDExQUU2MDA0NDdDNEMgLyogV0tQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQYXN0
ZWJvYXJkVGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjUwNjE0YmQ0ZmNjOGYwNTg5MjJhZmVkOGJhMTBl
MDJhNGZhYjY0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCkBAIC0wLDAgKzEsMjU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BpbnRlcmZhY2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJh
bWVMb2FkRGVsZWdhdGU+CisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJs
b2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIEZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciB7CisgICAgZGlzcGF0Y2hfYmxvY2tf
dCBfY29tcGxldGlvbkJsb2NrOworfQorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29t
cGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJl
dHVybiBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxl
dGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlv
bkJsb2NrCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0
aW9uQmxvY2sgPSBbY29tcGxldGlvbkJsb2NrIGNvcHldOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICBbX2NvbXBs
ZXRpb25CbG9jayByZWxlYXNlXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIGlmIChf
Y29tcGxldGlvbkJsb2NrKQorICAgICAgICBfY29tcGxldGlvbkJsb2NrKCk7Cit9CitAZW5kCisK
K0BpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0CistIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxhZzsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIERyYWdTb3VyY2UKKworLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWcKK3sKKyAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIERyYWdJbmZvIDogTlNPYmpl
Y3Q8TlNEcmFnZ2luZ0luZm8+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGxhc3RN
b3VzZVBvc2l0aW9uOworQHByb3BlcnR5IChub25hdG9taWMpIFJldGFpblB0cjxOU0ltYWdlPiBp
bWFnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBSZXRhaW5QdHI8TlNQYXN0ZWJvYXJkPiBwYXN0
ZWJvYXJkOworQHByb3BlcnR5IChub25hdG9taWMpIFJldGFpblB0cjxEcmFnU291cmNlPiBzb3Vy
Y2U7CitAcHJvcGVydHkgKG5vbmF0b21pYykgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3c7CitA
cHJvcGVydHkgKG5vbmF0b21pYykgTlNTaXplIG9mZnNldDsKKworQGVuZAorCitAaW1wbGVtZW50
YXRpb24gRHJhZ0luZm8KKworLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWFuSW1hZ2Ug
b2Zmc2V0OihOU1NpemUpbyBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYm9hcmQgc291cmNl
OihEcmFnU291cmNlICopc291cmNlIGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3Rp
bmF0aW9uV2luZG93Cit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAg
X2ltYWdlID0gYW5JbWFnZTsKKyAgICAgICAgX3Bhc3RlYm9hcmQgPSBwYm9hcmQ7CisgICAgICAg
IF9zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIF93aW5kb3cgPSBkZXN0aW5hdGlvbldpbmRvdzsK
KyAgICAgICAgX29mZnNldCA9IG87CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCistIChO
U1dpbmRvdyAqKWRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3cKK3sKKyAgICByZXR1cm4gX3dpbmRv
dy5nZXQoKTsKK30KKworLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291cmNlT3BlcmF0aW9u
TWFzaworeworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCistIChOU1BvaW50
KWRyYWdnaW5nTG9jYXRpb24KK3sKKyAgICByZXR1cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQor
CistIChOU1BvaW50KWRyYWdnZWRJbWFnZUxvY2F0aW9uCit7CisgICAgcmV0dXJuIE5TTWFrZVBv
aW50KF9sYXN0TW91c2VQb3NpdGlvbi54ICsgX29mZnNldC53aWR0aCwgX2xhc3RNb3VzZVBvc2l0
aW9uLnkgKyBfb2Zmc2V0LmhlaWdodCk7Cit9CisKKy0gKE5TSW1hZ2UgKilkcmFnZ2VkSW1hZ2UK
K3sKKyAgICByZXR1cm4gX2ltYWdlLmdldCgpOworfQorCistIChOU1Bhc3RlYm9hcmQgKilkcmFn
Z2luZ1Bhc3RlYm9hcmQKK3sKKyAgICByZXR1cm4gX3Bhc3RlYm9hcmQuZ2V0KCk7Cit9CisKKy0g
KGlkKWRyYWdnaW5nU291cmNlCit7CisgICAgcmV0dXJuIF9zb3VyY2UuZ2V0KCk7Cit9CisKKy0g
KE5TSW50ZWdlcilkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyCit7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky0gKHZvaWQpc2xpZGVEcmFnZ2VkSW1hZ2VUbzooTlNQb2ludClzY3JlZW5Qb2ludAoreworfQor
CistIChOU0FycmF5ICopbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlvbjoo
TlNVUkwgKilkcm9wRGVzdGluYXRpb24KK3sKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU0Ry
YWdnaW5nRm9ybWF0aW9uKWRyYWdnaW5nRm9ybWF0aW9uCit7CisgICAgcmV0dXJuIE5TRHJhZ2dp
bmdGb3JtYXRpb25EZWZhdWx0OworfQorCistICh2b2lkKXNldERyYWdnaW5nRm9ybWF0aW9uOihO
U0RyYWdnaW5nRm9ybWF0aW9uKWZvcm1hdGlvbgoreworfQorCistIChCT09MKWFuaW1hdGVzVG9E
ZXN0aW5hdGlvbgoreworICAgIHJldHVybiBOTzsKK30KKworLSAodm9pZClzZXRBbmltYXRlc1Rv
RGVzdGluYXRpb246KEJPT0wpZmxhZworeworfQorCistIChOU0ludGVnZXIpbnVtYmVyT2ZWYWxp
ZEl0ZW1zRm9yRHJvcAoreworICAgIHJldHVybiAxOworfQorCistICh2b2lkKXNldE51bWJlck9m
VmFsaWRJdGVtc0ZvckRyb3A6KE5TSW50ZWdlciludW1iZXIKK3sKK30KKworLSAodm9pZCllbnVt
ZXJhdGVEcmFnZ2luZ0l0ZW1zV2l0aE9wdGlvbnM6KE5TRW51bWVyYXRpb25PcHRpb25zKWVudW1P
cHRzIGZvclZpZXc6KE5TVmlldyAqKXZpZXcgY2xhc3NlczooTlNBcnJheSAqKWNsYXNzQXJyYXkg
c2VhcmNoT3B0aW9uczooTlNEaWN0aW9uYXJ5ICopc2VhcmNoT3B0aW9ucyB1c2luZ0Jsb2NrOih2
b2lkICheKShOU0RyYWdnaW5nSXRlbSAqZHJhZ2dpbmdJdGVtLCBOU0ludGVnZXIgaWR4LCBCT09M
ICpzdG9wKSlibG9jaworeworfQorCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VE
ID49IDEwMTEwMAorCistIChOU1NwcmluZ0xvYWRpbmdIaWdobGlnaHQpc3ByaW5nTG9hZGluZ0hp
Z2hsaWdodAoreworICAgIHJldHVybiBOU1NwcmluZ0xvYWRpbmdIaWdobGlnaHROb25lOworfQor
CistICh2b2lkKXJlc2V0U3ByaW5nTG9hZGluZworeworfQorCisjZW5kaWYKKworQGVuZAorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBOU0ltYWdlICpnZXRUZXN0SW1hZ2Uo
KQoreworICAgIHJldHVybiBbW1tOU0ltYWdlIGFsbG9jXSBpbml0V2l0aENvbnRlbnRzT2ZVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNp
b246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dIGF1dG9y
ZWxlYXNlXTsKK30KKworc3RhdGljIFdlYlZpZXcgKndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFn
T3BlcmF0aW9uKE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCkKK3sKKyAgICBSZXRhaW5QdHI8V2Vi
Vmlldz4gZGVzdGluYXRpb24gPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
aG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVj
dDpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKSBzdHlsZU1hc2s6TlNXaW5kb3dTdHlsZU1hc2tC
b3JkZXJsZXNzIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAg
IFtob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsKKyAgICBbaG9z
dFdpbmRvdyBzZXRJc1Zpc2libGU6WUVTXTsKKyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZpZXdd
IGFkZFN1YnZpZXc6ZGVzdGluYXRpb24uZ2V0KCldOworICAgIFtob3N0V2luZG93IG1ha2VLZXlB
bmRPcmRlckZyb250OmRlc3RpbmF0aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25l
ID0gZmFsc2U7CisgICAgW2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFtZUxv
YWRDb21wbGV0aW9uTGlzdGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7Cisg
ICAgICAgIFJldGFpblB0cjxEcmFnU291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1NvdXJj
ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBhZG9w
dE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zmc2V0
Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0
KCkgZGVzdGluYXRpb25XaW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5mbyBz
ZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rlc3Rp
bmF0aW9uIGRyYWdnaW5nRW50ZXJlZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0TGFz
dE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3RpbmF0
aW9uIGRyYWdnaW5nVXBkYXRlZDppbmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJVRShb
ZGVzdGluYXRpb24gcGVyZm9ybURyYWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAgICBp
c0RvbmUgPSB0cnVlOworICAgIH1dXTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0gbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dXTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4gZGVz
dGluYXRpb24uZ2V0KCk7Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMsIERy
b3BVVEY4UGxhaW5UZXh0KQoreworICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bh
c3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKKyAgICBbcGFzdGVib2FyZCBzZXRE
YXRhOltAIkkgYW0gYSBXZWJLaXQuIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dF07
CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdBZnRl
clBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVDVF9UUlVFKFtb
cmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzpA
ImRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiXSBjb250YWluc1N0cmluZzpAIkkgYW0gYSBXZWJL
aXQuIl0pOworfQorCitURVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBEcm9wSlBFRykK
K3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRXaXRoVW5pcXVlTmFtZV07CisgICAgTlNJbWFnZSAqaWNvbiA9IGdldFRlc3RJbWFnZSgpOwor
ICAgIE5TQml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1hZ2VS
ZXBXaXRoRGF0YTppY29uLlRJRkZSZXByZXNlbnRhdGlvbl07CisgICAgW3Bhc3RlYm9hcmQgc2V0
RGF0YTpbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNKUEVHRmlsZVR5cGUgcHJv
cGVydGllczpAeyBOU0ltYWdlQ29tcHJlc3Npb25GYWN0b3I6IEAoMC45KSB9XSBmb3JUeXBlOihf
X2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHXTsKKworICAgIFJldGFpblB0cjxXZWJWaWV3
PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24o
cGFzdGVib2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rvcign
aW1nJykudGFnTmFtZSA9PT0gJ0lNRyciXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJs
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZmYjM4NDQ5Y2E3OGI3NDhlNTAxZWQ0NmQ0MjA2ZTU1M2MxZjM0
N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9mdWxs
LXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSBAQAorPGJvZHkgY29udGVudGVk
aXRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBtYXJnaW46IDA7Ij4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300958</attachid>
            <date>2017-02-08 14:08:57 -0800</date>
            <delta_ts>2017-02-08 14:20:31 -0800</delta_ts>
            <desc>Move ivars to interface declaration.</desc>
            <filename>bug-167942-20170208140633.patch</filename>
            <type>text/plain</type>
            <size>20976</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNzE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzkxMjkxZjhjZTUxNDY5
MjEwZWVlNjM0N2ZhZDFiY2ZiMjQ4ZDk3Yy4uOTVlNDUxZDAxZGNmZjYxMDM5MWQzOWZlNDc0YTQz
OWI0OTg2ZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAyLTA3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMg
VVRJIHR5cGVzIGZvciBkcmFnZ2luZyBVVEY4IHBsYWluIHRleHQgYW5kIEpQRUcgaW1hZ2VzIHRv
IHRoZSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcyBpbiBEcmFnRGF0YU1hYy5tbS4KKyAgICAgICAg
QWxzbyBoYW5kbGVzIHJlYWRpbmcgdGhlc2UgdHlwZXMgaW4gUGFzdGVib2FyZE1hYy5tbS4gSSB2
ZXJpZmllZCBtYW51YWxseSB3aXRoIGEgdGVzdCBhcHAgdGhhdCBpZiBhIHBsYXRmb3JtCisgICAg
ICAgIE5TVmlldyB2ZW5kcyBvbmx5IFVURjggcGxhaW50ZXh0IG9yIEpQRUcgaW1hZ2VzIHdoZW4g
ZHJhZ2dpbmcsIFdlYktpdCBpcyBhYmxlIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAg
ICAgICBwYXN0ZWJvYXJkIGFzIHRleHQgYW5kIGFuIGltYWdlLCByZXNwZWN0aXZlbHkuCisKKyAg
ICAgICAgTmV3IFRlc3RXZWJLaXRBUEkgdGVzdHMgaW4gRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVz
dHMubW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpEcmFnRGF0YTo6Y29udGFpbnNDb21wYXRpYmxlQ29udGVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKwogMjAxNy0wMi0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNob3VsZCB1
c2UgLXJlZ2lzdGVyTG9hZEhhbmRsZXJzVG9JdGVtUHJvdmlkZXI6IHdoZW4gY3JlYXRpbmcgYSBu
ZXcgVUlJdGVtUHJvdmlkZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9EcmFnRGF0YU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQppbmRleCBhYzNjNWIwNTI1OWI2NTEzZjc1NjI4ZmZjYTIxYWNkOWVlNWVjNDk3Li5iNjg3
NDE0MWY0NjQ2ZTg5NWUxNDdhNzMxN2NkYTAzMjhmNWFhZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCkBAIC0yMDQsOCArMjA0LDEwIEBAIGJvb2wgRHJh
Z0RhdGE6OmNvbnRhaW5zQ29tcGF0aWJsZUNvbnRlbnQoKSBjb25zdAogICAgICAgICB8fCB0eXBl
cy5jb250YWlucyh1cmxQYXN0ZWJvYXJkVHlwZSgpKQogICAgICAgICB8fCB0eXBlcy5jb250YWlu
cyhydGZkUGFzdGVib2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMocnRmUGFz
dGVib2FyZFR5cGUoKSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVV
VEY4UGxhaW5UZXh0KSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoc3RyaW5nUGFzdGVib2Fy
ZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoY29sb3JQYXN0ZWJvYXJkVHlwZSgp
KQorICAgICAgICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZUpQRUcpKQogICAgICAg
ICB8fCB0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZVBORykpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDRmYTJjNTJjZGEyYTJi
Y2Q0NWQwNTIzYTUzYWJkOTRhOGZmZmVjNGQuLmVkYmMyOWE2ZGY0ZGJhMjU2ZGJmNWUzMmEwOTE3
MmY2MGI4MjBmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0
ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tCkBAIC00MTQsNiArNDE0LDEzIEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJv
YXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlSlBFRykpKSB7CisgICAgICAgIGlmIChSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGtVVFR5cGVK
UEVHLCBtX3Bhc3RlYm9hcmROYW1lKSkgeworICAgICAgICAgICAgaWYgKHJlYWRlci5yZWFkSW1h
Z2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvanBlZyIpKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAodHlw
ZXMuY29udGFpbnMoU3RyaW5nKE5TVVJMUGJvYXJkVHlwZSkpKSB7CiAgICAgICAgIFVSTCB1cmwg
PSBzdHJhdGVneS51cmwobV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIFN0cmluZyB0aXRsZSA9
IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUoV2ViVVJMTmFtZVBib2FyZFR5cGUsIG1fcGFzdGVib2Fy
ZE5hbWUpOwpAQCAtNDI2LDYgKzQzMywxMiBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgaWYgKCFzdHJpbmcuaXNOdWxs
KCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CisKKyAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVVVEY4UGxhaW5U
ZXh0KSkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHN0cmF0ZWd5LnN0cmluZ0ZvclR5cGUo
a1VUVHlwZVVURjhQbGFpblRleHQsIG1fcGFzdGVib2FyZE5hbWUpOworICAgICAgICBpZiAoIXN0
cmluZy5pc051bGwoKSAmJiByZWFkZXIucmVhZFBsYWluVGV4dChzdHJpbmcpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KIH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ODBkMzE3YTc4
M2NhZWY2ZGYyNjQ4OTZiMjAwMjgzZjQyZmMwN2ZhLi44NmMzNzY1YmIzZmU2YzcxNTFmYWYxMjg0
M2ZmMTJjZDFhMTU1ZjgxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTctMDItMDggIFdlbnNvbiBIc2llaCAgPHdl
bnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGtVVFR5cGVVVEY4UGxhaW5UZXh0
IGFuZCBrVVRUeXBlSlBFRyB0byB0aGUgbGlzdCBvZiBjb21wYXRpYmxlIGNvbnRlbnQgdHlwZXMg
aW4gRHJhZ0RhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2Nzk0MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMTUwNzk+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyB0ZXN0IGNh
c2UgdGhhdCBzaW11bGF0ZXMgZHJhZ2dpbmcgZnJvbSBhIHNvdXJjZSB0aGF0IG9ubHkgdmVuZHMg
SlBFRyBpbWFnZXMgb3IgVVRGOCBwbGFpbnRleHQgaW50byBhCisgICAgICAgIGNvbnRlbnRlZGl0
YWJsZSBhcmVhLiBBbiBpbWFnZSBlbGVtZW50IGFuZCB0aGUgcGxhaW4gdGV4dCBjb250ZW50LCBy
ZXNwZWN0aXZlbHksIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICBjb250ZW50
ZWRpdGFibGUgaW4gdGhlc2UgY2FzZXMuCisKKyAgICAgICAgVGhlIERyYWdTb3VyY2UgYW5kIERy
YWdJbmZvIGFyZSB1c2VkIHRvIG1vY2sgZHJhZ2dpbmcgaW50byB0aGUgV2ViVmlldy4gVGhlcmUg
aXMgbm8gcmVsaWFuY2Ugb24gdXNpbmcgbW91c2UKKyAgICAgICAgZXZlbnRzIGluIHRoaXMgdGVz
dCwgc2luY2Ugd2UgY2FsbCB0aGUgZHJhZ2dpbmcgZGVsZWdhdGUgbWV0aG9kcyAoZHJhZ2dpbmdF
bnRlcmVkOiwgZHJhZ2dpbmdVcGRhdGVkOiwgYW5kCisgICAgICAgIHBlcmZvcm1EcmFnT3BlcmF0
aW9uOikgZGlyZWN0bHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW0Zy
YW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6XSk6
CisgICAgICAgICgtW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBpbml0V2l0aENvbXBsZXRp
b25CbG9jazpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIGRlYWxs
b2NdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIHdlYlZpZXc6ZGlk
RmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtEcmFnU291cmNlIGRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBpbml0V2l0
aEltYWdlOm9mZnNldDpwYXN0ZWJvYXJkOnNvdXJjZTpkZXN0aW5hdGlvbldpbmRvdzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdEZXN0aW5hdGlvbldpbmRvd10pOgorICAgICAgICAo
LVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gZHJhZ2dpbmdMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1h
Z2VMb2NhdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2VkSW1hZ2VdKToKKyAgICAg
ICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdQYXN0ZWJvYXJkXSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGRyYWdnaW5nU291cmNlXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nU2VxdWVuY2VO
dW1iZXJdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2xpZGVEcmFnZ2VkSW1hZ2VUbzpdKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gbmFtZXNPZlByb21pc2VkRmlsZXNEcm9wcGVkQXREZXN0aW5hdGlv
bjpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dpbmdGb3JtYXRpb25dKToKKyAgICAgICAg
KC1bRHJhZ0luZm8gc2V0RHJhZ2dpbmdGb3JtYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGFuaW1hdGVzVG9EZXN0aW5hdGlvbl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBzZXRBbmltYXRl
c1RvRGVzdGluYXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZvIG51bWJlck9mVmFsaWRJdGVt
c0ZvckRyb3BdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9y
RHJvcDpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZW51bWVyYXRlRHJhZ2dpbmdJdGVtc1dpdGhP
cHRpb25zOmZvclZpZXc6Y2xhc3NlczpzZWFyY2hPcHRpb25zOnVzaW5nQmxvY2s6XSk6CisgICAg
ICAgICgtW0RyYWdJbmZvIHNwcmluZ0xvYWRpbmdIaWdobGlnaHRdKToKKyAgICAgICAgKC1bRHJh
Z0luZm8gcmVzZXRTcHJpbmdMb2FkaW5nXSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRU
ZXN0SW1hZ2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViVmlld0FmdGVyUGVyZm9ybWlu
Z0RyYWdPcGVyYXRpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1s
OiBBZGRlZC4KKwogMjAxNy0wMi0wNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBob3cgR3JhcGhpY3NMYXllcidzICJpbldpbmRvdyIg
c3RhdGUgaXMgc2V0LCBhbmQgZml4IHNvbWUgaXNzdWVzIHdpdGggUGFnZSBPdmVybGF5cwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzODQ5MjVkMzUxNzhhOGY2NDhlZDNhODMzOTY4YmRlNzNj
M2RmN2Q0Li4xMjZlZDc3MmE1MTQ5ZDQ5ZjNhZTY4YmJhMDBlMWYxN2U4ZGZkOWFhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNTQ4LDYgKzU0OCw4IEBACiAJCUUxOTRFMUJEMTc3RTUzQzcw
MDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTk0RTFCQzE3
N0U1MzRBMDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwg
Ki87IH07CiAJCUY0MTUwODZEMURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNr
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAq
LzsgfTsKIAkJRjQyREE1MTYxRDhDRUZFNDAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZv
Y3VzLW9ubG9hZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCAqLzsgfTsKKwkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyog
ZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9OworCQlGNEJGQTY4RTFFNEFEMDgw
MDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTgg
LyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CiAJCUY0QzJBQjIyMURENkQ5
NUUwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDMkFCMjExREQ2RDk0
MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLzsgfTsKIAkJRjRG
MTM3OTIxRDlCNjgzRTAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5o
dG1sICovOyB9OwogCQlGNEY0MDVCQzFENEMwRDFDMDA3QTk3MDcgLyogZnVsbC1zaXplLWF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEY0MDVCQTFENEMwQ0Y4MDA3QTk3MDcgLyogZnVs
bC1zaXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKQEAgLTYyMSw2
ICs2MjMsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQlGNDc3Mjg5OTFFNEFFM0MxMDA3
QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUM5OUI2NzVGMUUzOTczNkYwMEZDNkM4MCAvKiBuby1hdXRvcGxheS13aXRoLWNv
bnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJQzk5QjY3NUQxRTM5NzIyMDAw
RkM2QzgwIC8qIGpzLXBsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LAogCQkJCUM5OUI2NzVDMUUzOTcyMUEwMEZDNkM4MCAvKiBhdXRvcGxheS13aXRoLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMzU4LDYgKzEzNjEsOCBAQAogCQlGM0ZD
M0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVzdC5h
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDE1MDg2QzFEQTA0MEMx
MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gInBsYXktYXVkaW8tb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1m
b2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJsYXJnZS1pbnB1
dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OworCQlGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZ1bGwtcGFnZS1jb250
ZW50ZWRpdGFibGUuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0QkZBNjhD
MUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEMyQUIyMTFERDZEOTQxMDBF
MDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0RjEzNzkxMUQ5QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFy
Z2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjRGNDA1QkExRDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12
aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZnVsbC1z
aXplLWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTE1LDYgKzIxMjAsNyBAQAogCQkJCTM3RkI3Mjk1MURCMkU4MkYwMEU0
MUJFNCAvKiBDb250ZXh0TWVudURlZmF1bHRJdGVtc0hhdmVUYWdzLm1tICovLAogCQkJCTM3NzZC
QzYyMTUwOTQ2QkMwMDQzQTY2RCAvKiBEZXZpY2VTY2FsZUZhY3RvckluRGFzaGJvYXJkUmVnaW9u
cy5tbSAqLywKIAkJCQk5MzlCQTkxNjE0MTAzNDEyMDAxQTAxQkQgLyogRGV2aWNlU2NhbGVGYWN0
b3JPbkJhY2subW0gKi8sCisJCQkJRjRCRkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmRE
cm9wUGFzdGVib2FyZFRlc3RzLm1tICovLAogCQkJCTM3RTEwNjRBMTY5NzY3NjQwMEI3OEJEMCAv
KiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tICovLAogCQkJCTJENTFBMEM1MUM4QkYwMDQw
MDc2NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSAqLywKIAkJCQk0NjM5N0I5
NDFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSAqLywKQEAgLTIxNzcsNiArMjE4Myw3IEBA
CiAJCQkJMzdFMTA2NEIxNjk3NjdGNzAwQjc4QkQwIC8qIERPTUhUTUxUYWJsZUNlbGxFbGVtZW50
Q2VsbEFib3ZlLmh0bWwgKi8sCiAJCQkJMzdEQzY3OEYxNDBEN0QzQTAwQUJDQ0RCIC8qIERPTVJh
bmdlT2ZTdHJpbmcuaHRtbCAqLywKIAkJCQkxQTdFOEIzNTE4MTIwOTM2MDBBRUI3NEEgLyogRnJh
Z21lbnROYXZpZ2F0aW9uLmh0bWwgKi8sCisJCQkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZBIC8q
IGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlDREJGQ0M0MjFBOUZGNDQ4
MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbCAqLywKIAkJCQk5QjRG
OEZBNjE1OUQ1MkNBMDAyRDlGOTQgLyogSFRNTENvbGxlY3Rpb25OYW1lZEl0ZW0uaHRtbCAqLywK
IAkJCQk5QjI2RkNCNDE1OUQxNUU3MDBDQzM3NjUgLyogSFRNTEZvcm1Db2xsZWN0aW9uTmFtZWRJ
dGVtLmh0bWwgKi8sCkBAIC0yNzc5LDYgKzI3ODYsNyBAQAogCQkJCTdDODlEMkFDMUE2OUI4MEQw
MDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUy
RDY3M0VFMUFGQjEyNzMwMEZBMTlGRSAvKiBXS1BhZ2VDb3B5U2Vzc2lvblN0YXRlV2l0aEZpbHRl
cmluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YxRjFBNDExQUU2MDA0NDdDNEMgLyog
V0tQYWdlR2V0U2NhbGVGYWN0b3JOb3RaZXJvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0QkZB
NjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjIwMUE0MTFBRTYwMDQ0N0M0QyAvKiBXS1BhZ2VJc1BsYXlp
bmdBdWRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDAwMDY1RjFDMUY1ODlBMDA4OEU2QTcg
LyogV0tQREZWaWV3UmVzaXplQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMTFB
NDExQUU2MDA0NDdDNEMgLyogV0tQcmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2Fy
ZFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BQYXN0
ZWJvYXJkVGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE4NDhiMzFlMWQ5MmMxNTAyMjU0ZDIyMzRjZDA4
MjM1ZWNhYmIyMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCkBAIC0wLDAgKzEsMjY3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8QXBwS2l0L05TRHJhZ2dpbmcuaD4K
KyNpbXBvcnQgPFdlYktpdC9XZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BpbnRlcmZhY2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJh
bWVMb2FkRGVsZWdhdGU+IHsKKyAgICBkaXNwYXRjaF9ibG9ja190IF9jb21wbGV0aW9uQmxvY2s7
Cit9CisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOihkaXNwYXRj
aF9ibG9ja190KWNvbXBsZXRpb25CbG9jazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEZyYW1l
TG9hZENvbXBsZXRpb25MaXN0ZW5lcgorCisrIChpbnN0YW5jZXR5cGUpbGlzdGVuZXJXaXRoQ29t
cGxldGlvbkJsb2NrOihkaXNwYXRjaF9ibG9ja190KWNvbXBsZXRpb25CbG9jaworeworICAgIHJl
dHVybiBbW1tGcmFtZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoQ29tcGxl
dGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja10gYXV0b3JlbGVhc2VdOworfQorCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlv
bkJsb2NrCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF9jb21wbGV0
aW9uQmxvY2sgPSBbY29tcGxldGlvbkJsb2NrIGNvcHldOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzdXBlciBkZWFsbG9jXTsKKyAgICBbX2NvbXBs
ZXRpb25CbG9jayByZWxlYXNlXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2Vu
ZGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIGlmIChf
Y29tcGxldGlvbkJsb2NrKQorICAgICAgICBfY29tcGxldGlvbkJsb2NrKCk7Cit9CitAZW5kCisK
K0BpbnRlcmZhY2UgRHJhZ1NvdXJjZSA6IE5TT2JqZWN0CistIChOU0RyYWdPcGVyYXRpb24pZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxhZzsKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIERyYWdTb3VyY2UKKworLSAoTlNEcmFnT3BlcmF0aW9uKWRyYWdnaW5nU291
cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOihCT09MKWZsYWcKK3sKKyAgICByZXR1cm4gTlNEcmFn
T3BlcmF0aW9uQ29weTsKK30KKworQGVuZAorCitAaW50ZXJmYWNlIERyYWdJbmZvIDogTlNPYmpl
Y3Q8TlNEcmFnZ2luZ0luZm8+IHsKKyAgICBOU1BvaW50IF9sYXN0TW91c2VQb3NpdGlvbjsKKyAg
ICBSZXRhaW5QdHI8TlNJbWFnZT4gX2ltYWdlOworICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+
IF9wYXN0ZWJvYXJkOworICAgIFJldGFpblB0cjxEcmFnU291cmNlPiBfc291cmNlOworICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gX3dpbmRvdzsKKyAgICBOU1NpemUgX29mZnNldDsKK30KK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBOU1BvaW50IGxhc3RNb3VzZVBvc2l0aW9uOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gRHJhZ0luZm8KKworLSAoaWQpaW5pdFdpdGhJbWFnZTooTlNJbWFnZSAqKWlt
YWdlIG9mZnNldDooTlNTaXplKW9mZnNldCBwYXN0ZWJvYXJkOihOU1Bhc3RlYm9hcmQgKilwYXN0
ZWJvYXJkIHNvdXJjZTooRHJhZ1NvdXJjZSAqKXNvdXJjZSBkZXN0aW5hdGlvbldpbmRvdzooTlNX
aW5kb3cgKilkZXN0aW5hdGlvbldpbmRvdworeworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRd
KSB7CisgICAgICAgIF9pbWFnZSA9IGltYWdlOworICAgICAgICBfcGFzdGVib2FyZCA9IHBhc3Rl
Ym9hcmQ7CisgICAgICAgIF9zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIF93aW5kb3cgPSBkZXN0
aW5hdGlvbldpbmRvdzsKKyAgICAgICAgX29mZnNldCA9IG9mZnNldDsKKyAgICB9CisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KK3sKKyAgICByZXR1
cm4gX2xhc3RNb3VzZVBvc2l0aW9uOworfQorCistICh2b2lkKXNldExhc3RNb3VzZVBvc2l0aW9u
OihOU1BvaW50KWxhc3RNb3VzZVBvc2l0aW9uCit7CisgICAgX2xhc3RNb3VzZVBvc2l0aW9uID0g
bGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKE5TV2luZG93ICopZHJhZ2dpbmdEZXN0aW5hdGlv
bldpbmRvdworeworICAgIHJldHVybiBfd2luZG93LmdldCgpOworfQorCistIChOU0RyYWdPcGVy
YXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrCit7CisgICAgcmV0dXJuIE5TRHJhZ09w
ZXJhdGlvbkNvcHk7Cit9CisKKy0gKE5TUG9pbnQpZHJhZ2dpbmdMb2NhdGlvbgoreworICAgIHJl
dHVybiBfbGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKE5TUG9pbnQpZHJhZ2dlZEltYWdlTG9j
YXRpb24KK3sKKyAgICByZXR1cm4gTlNNYWtlUG9pbnQoX2xhc3RNb3VzZVBvc2l0aW9uLnggKyBf
b2Zmc2V0LndpZHRoLCBfbGFzdE1vdXNlUG9zaXRpb24ueSArIF9vZmZzZXQuaGVpZ2h0KTsKK30K
KworLSAoTlNJbWFnZSAqKWRyYWdnZWRJbWFnZQoreworICAgIHJldHVybiBfaW1hZ2UuZ2V0KCk7
Cit9CisKKy0gKE5TUGFzdGVib2FyZCAqKWRyYWdnaW5nUGFzdGVib2FyZAoreworICAgIHJldHVy
biBfcGFzdGVib2FyZC5nZXQoKTsKK30KKworLSAoaWQpZHJhZ2dpbmdTb3VyY2UKK3sKKyAgICBy
ZXR1cm4gX3NvdXJjZS5nZXQoKTsKK30KKworLSAoTlNJbnRlZ2VyKWRyYWdnaW5nU2VxdWVuY2VO
dW1iZXIKK3sKKyAgICByZXR1cm4gMDsKK30KKworLSAodm9pZClzbGlkZURyYWdnZWRJbWFnZVRv
OihOU1BvaW50KXNjcmVlblBvaW50Cit7Cit9CisKKy0gKE5TQXJyYXkgKiluYW1lc09mUHJvbWlz
ZWRGaWxlc0Ryb3BwZWRBdERlc3RpbmF0aW9uOihOU1VSTCAqKWRyb3BEZXN0aW5hdGlvbgorewor
ICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TRHJhZ2dpbmdGb3JtYXRpb24pZHJhZ2dpbmdGb3Jt
YXRpb24KK3sKKyAgICByZXR1cm4gTlNEcmFnZ2luZ0Zvcm1hdGlvbkRlZmF1bHQ7Cit9CisKKy0g
KHZvaWQpc2V0RHJhZ2dpbmdGb3JtYXRpb246KE5TRHJhZ2dpbmdGb3JtYXRpb24pZm9ybWF0aW9u
Cit7Cit9CisKKy0gKEJPT0wpYW5pbWF0ZXNUb0Rlc3RpbmF0aW9uCit7CisgICAgcmV0dXJuIE5P
OworfQorCistICh2b2lkKXNldEFuaW1hdGVzVG9EZXN0aW5hdGlvbjooQk9PTClmbGFnCit7Cit9
CisKKy0gKE5TSW50ZWdlciludW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wCit7CisgICAgcmV0dXJu
IDE7Cit9CisKKy0gKHZvaWQpc2V0TnVtYmVyT2ZWYWxpZEl0ZW1zRm9yRHJvcDooTlNJbnRlZ2Vy
KW51bWJlcgoreworfQorCistICh2b2lkKWVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9u
czooTlNFbnVtZXJhdGlvbk9wdGlvbnMpZW51bU9wdHMgZm9yVmlldzooTlNWaWV3ICopdmlldyBj
bGFzc2VzOihOU0FycmF5ICopY2xhc3NBcnJheSBzZWFyY2hPcHRpb25zOihOU0RpY3Rpb25hcnkg
KilzZWFyY2hPcHRpb25zIHVzaW5nQmxvY2s6KHZvaWQgKF4pKE5TRHJhZ2dpbmdJdGVtICpkcmFn
Z2luZ0l0ZW0sIE5TSW50ZWdlciBpZHgsIEJPT0wgKnN0b3ApKWJsb2NrCit7Cit9CisKKyNpZiBf
X01BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPj0gMTAxMTAwCisKKy0gKE5TU3ByaW5nTG9h
ZGluZ0hpZ2hsaWdodClzcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Cit7CisgICAgcmV0dXJuIE5TU3By
aW5nTG9hZGluZ0hpZ2hsaWdodE5vbmU7Cit9CisKKy0gKHZvaWQpcmVzZXRTcHJpbmdMb2FkaW5n
Cit7Cit9CisKKyNlbmRpZgorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
c3RhdGljIE5TSW1hZ2UgKmdldFRlc3RJbWFnZSgpCit7CisgICAgcmV0dXJuIFtbW05TSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQ29udGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV0gYXV0b3JlbGVhc2VdOworfQorCitzdGF0aWMgV2ViVmll
dyAqd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRpb24oTlNQYXN0ZWJvYXJkICpwYXN0
ZWJvYXJkKQoreworICAgIFJldGFpblB0cjxXZWJWaWV3PiBkZXN0aW5hdGlvbiA9IGFkb3B0TlMo
W1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDAp
XSk7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBob3N0V2luZG93ID0gYWRvcHROUyhbW05TV2lu
ZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDAp
IHN0eWxlTWFzazowIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwor
ICAgIFtob3N0V2luZG93IHNldEZyYW1lT3JpZ2luOk5TTWFrZVBvaW50KDAsIDApXTsKKyAgICBb
aG9zdFdpbmRvdyBzZXRJc1Zpc2libGU6WUVTXTsKKyAgICBbW2hvc3RXaW5kb3cgY29udGVudFZp
ZXddIGFkZFN1YnZpZXc6ZGVzdGluYXRpb24uZ2V0KCldOworICAgIFtob3N0V2luZG93IG1ha2VL
ZXlBbmRPcmRlckZyb250OmRlc3RpbmF0aW9uLmdldCgpXTsKKyAgICBfX2Jsb2NrIGJvb2wgaXNE
b25lID0gZmFsc2U7CisgICAgW2Rlc3RpbmF0aW9uIHNldEZyYW1lTG9hZERlbGVnYXRlOltGcmFt
ZUxvYWRDb21wbGV0aW9uTGlzdGVuZXIgbGlzdGVuZXJXaXRoQ29tcGxldGlvbkJsb2NrOl4oKSB7
CisgICAgICAgIFJldGFpblB0cjxEcmFnU291cmNlPiBzb3VyY2UgPSBhZG9wdE5TKFtbRHJhZ1Nv
dXJjZSBhbGxvY10gaW5pdF0pOworICAgICAgICBSZXRhaW5QdHI8RHJhZ0luZm8+IGluZm8gPSBh
ZG9wdE5TKFtbRHJhZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6Z2V0VGVzdEltYWdlKCkgb2Zm
c2V0Ok5TTWFrZVNpemUoMCwgMCkgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2Uu
Z2V0KCkgZGVzdGluYXRpb25XaW5kb3c6aG9zdFdpbmRvdy5nZXQoKV0pOworICAgICAgICBbaW5m
byBzZXRMYXN0TW91c2VQb3NpdGlvbjpOU01ha2VQb2ludCgwLCAyMDApXTsKKyAgICAgICAgW2Rl
c3RpbmF0aW9uIGRyYWdnaW5nRW50ZXJlZDppbmZvLmdldCgpXTsKKyAgICAgICAgW2luZm8gc2V0
TGFzdE1vdXNlUG9zaXRpb246TlNNYWtlUG9pbnQoMjAwLCAyMDApXTsKKyAgICAgICAgW2Rlc3Rp
bmF0aW9uIGRyYWdnaW5nVXBkYXRlZDppbmZvLmdldCgpXTsKKworICAgICAgICBFWFBFQ1RfVFJV
RShbZGVzdGluYXRpb24gcGVyZm9ybURyYWdPcGVyYXRpb246aW5mby5nZXQoKV0pOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dXTsKKyAgICBbW2Rlc3RpbmF0aW9uIG1haW5GcmFtZV0g
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAiZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZSIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKyAgICByZXR1cm4g
ZGVzdGluYXRpb24uZ2V0KCk7Cit9CisKK1RFU1QoRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMs
IERyb3BVVEY4UGxhaW5UZXh0KQoreworICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtO
U1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdpdGhVbmlxdWVOYW1lXTsKKyAgICBbcGFzdGVib2FyZCBz
ZXREYXRhOltAIkkgYW0gYSBXZWJLaXQuIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10gZm9yVHlwZTooX19icmlkZ2UgTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4
dF07CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5nV2ViVmlldyA9IHdlYlZpZXdB
ZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQpOworICAgIEVYUEVDVF9UUlVF
KFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
ZzpAImRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQiXSBjb250YWluc1N0cmluZzpAIkkgYW0gYSBX
ZWJLaXQuIl0pOworfQorCitURVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBEcm9wSlBF
RykKK3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmRXaXRoVW5pcXVlTmFtZV07CisgICAgTlNJbWFnZSAqaWNvbiA9IGdldFRlc3RJbWFnZSgp
OworICAgIE5TQml0bWFwSW1hZ2VSZXAgKmltYWdlUmVwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1h
Z2VSZXBXaXRoRGF0YTppY29uLlRJRkZSZXByZXNlbnRhdGlvbl07CisgICAgW3Bhc3RlYm9hcmQg
c2V0RGF0YTpbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNKUEVHRmlsZVR5cGUg
cHJvcGVydGllczpAeyBOU0ltYWdlQ29tcHJlc3Npb25GYWN0b3I6IEAoMC45KSB9XSBmb3JUeXBl
OihfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHXTsKKworICAgIFJldGFpblB0cjxXZWJW
aWV3PiByZXN1bHRpbmdXZWJWaWV3ID0gd2ViVmlld0FmdGVyUGVyZm9ybWluZ0RyYWdPcGVyYXRp
b24ocGFzdGVib2FyZCk7CisgICAgRVhQRUNUX1RSVUUoW1tyZXN1bHRpbmdXZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nOkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignaW1nJykudGFnTmFtZSA9PT0gJ0lNRyciXSBpc0VxdWFsVG9TdHJpbmc6QCJ0cnVlIl0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0YWJsZS5o
dG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRlbnRlZGl0
YWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZmYjM4NDQ5Y2E3OGI3NDhlNTAxZWQ0NmQ0MjA2ZTU1M2Mx
ZjM0N2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9m
dWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwKQEAgLTAsMCArMSBAQAorPGJvZHkgY29udGVu
dGVkaXRhYmxlIHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBtYXJnaW46IDA7Ij4K
</data>
<flag name="review"
          id="322816"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300970</attachid>
            <date>2017-02-08 14:54:24 -0800</date>
            <delta_ts>2017-02-08 15:32:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-167942-20170208145159.patch</filename>
            <type>text/plain</type>
            <size>20791</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRlYjYzOWZhNjhmYjkz
NmYxMzVhMWM3MDAyYTNjZTEwMDU0M2M4Ni4uNGY0NzQ2MDNmODlmZGJjYzA0NDM0OTQ3MTIwNDIy
NmY0YzkzMTMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTAyLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBl
VVRGOFBsYWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBj
b250ZW50IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5
PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkcyBVVEkg
dHlwZXMgZm9yIGRyYWdnaW5nIFVURjggcGxhaW4gdGV4dCBhbmQgSlBFRyBpbWFnZXMgdG8gdGhl
IGxpc3Qgb2Ygc3VwcG9ydGVkIHR5cGVzIGluIERyYWdEYXRhTWFjLm1tLgorICAgICAgICBBbHNv
IGhhbmRsZXMgcmVhZGluZyB0aGVzZSB0eXBlcyBpbiBQYXN0ZWJvYXJkTWFjLm1tLiBJIHZlcmlm
aWVkIG1hbnVhbGx5IHdpdGggYSB0ZXN0IGFwcCB0aGF0IGlmIGEgcGxhdGZvcm0KKyAgICAgICAg
TlNWaWV3IHZlbmRzIG9ubHkgVVRGOCBwbGFpbnRleHQgb3IgSlBFRyBpbWFnZXMgd2hlbiBkcmFn
Z2luZywgV2ViS2l0IGlzIGFibGUgdG8gcmVhZCB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAg
IHBhc3RlYm9hcmQgYXMgdGV4dCBhbmQgYW4gaW1hZ2UsIHJlc3BlY3RpdmVseS4KKworICAgICAg
ICBOZXcgVGVzdFdlYktpdEFQSSB0ZXN0cyBpbiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5t
bS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWQpOgorCiAyMDE3LTAyLTA4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBNb3ZlIHByaXZhdGUgbWV0aG9kcyBmcm9tIFdLR3JhcGhpY3MuaCB0
byBhIHNlcGFyYXRlIGhlYWRlciBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJh
Z0RhdGFNYWMubW0KaW5kZXggYWMzYzViMDUyNTliNjUxM2Y3NTYyOGZmY2EyMWFjZDllZTVlYzQ5
Ny4uYjY4NzQxNDFmNDY0NmU4OTVlMTQ3YTczMTdjZGEwMzI4ZjVhYWVkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQpAQCAtMjA0LDggKzIwNCwxMCBAQCBi
b29sIERyYWdEYXRhOjpjb250YWluc0NvbXBhdGlibGVDb250ZW50KCkgY29uc3QKICAgICAgICAg
fHwgdHlwZXMuY29udGFpbnModXJsUGFzdGVib2FyZFR5cGUoKSkKICAgICAgICAgfHwgdHlwZXMu
Y29udGFpbnMocnRmZFBhc3RlYm9hcmRUeXBlKCkpCiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5z
KHJ0ZlBhc3RlYm9hcmRUeXBlKCkpCisgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKFN0cmluZyhr
VVRUeXBlVVRGOFBsYWluVGV4dCkpCiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKHN0cmluZ1Bh
c3RlYm9hcmRUeXBlKCkpCiAgICAgICAgIHx8IHR5cGVzLmNvbnRhaW5zKGNvbG9yUGFzdGVib2Fy
ZFR5cGUoKSkKKyAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVKUEVHKSkK
ICAgICAgICAgfHwgdHlwZXMuY29udGFpbnMoU3RyaW5nKGtVVFR5cGVQTkcpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCA0ZmEyYzUy
Y2RhMmEyYmNkNDVkMDUyM2E1M2FiZDk0YThmZmZlYzRkLi5lZGJjMjlhNmRmNGRiYTI1NmRiZjVl
MzJhMDkxNzJmNjBiODIwZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbQpAQCAtNDE0LDYgKzQxNCwxMyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgfQogICAgIH0KIAor
ICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcoa1VUVHlwZUpQRUcpKSkgeworICAgICAgICBp
ZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kuYnVmZmVyRm9yVHlwZShr
VVRUeXBlSlBFRywgbV9wYXN0ZWJvYXJkTmFtZSkpIHsKKyAgICAgICAgICAgIGlmIChyZWFkZXIu
cmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBBU0NJSUxpdGVyYWwoImltYWdlL2pw
ZWciKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAg
aWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhOU1VSTFBib2FyZFR5cGUpKSkgewogICAgICAgICBV
UkwgdXJsID0gc3RyYXRlZ3kudXJsKG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBTdHJpbmcg
dGl0bGUgPSBzdHJhdGVneS5zdHJpbmdGb3JUeXBlKFdlYlVSTE5hbWVQYm9hcmRUeXBlLCBtX3Bh
c3RlYm9hcmROYW1lKTsKQEAgLTQyNiw2ICs0MzMsMTIgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgICAgIGlmICghc3RyaW5n
LmlzTnVsbCgpICYmIHJlYWRlci5yZWFkUGxhaW5UZXh0KHN0cmluZykpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhrVVRUeXBlVVRG
OFBsYWluVGV4dCkpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSBzdHJhdGVneS5zdHJpbmdG
b3JUeXBlKGtVVFR5cGVVVEY4UGxhaW5UZXh0LCBtX3Bhc3RlYm9hcmROYW1lKTsKKyAgICAgICAg
aWYgKCFzdHJpbmcuaXNOdWxsKCkgJiYgcmVhZGVyLnJlYWRQbGFpblRleHQoc3RyaW5nKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICB9CiB9CiAKIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgp
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTNm
MzgwZTRhNTI3NWZiYmI3MzAzNTQ3ZDU4MGQ1NjU2MjBlYmUxZi4uZTIzZjU2NmIzMWQxZmMxMDMy
NDljMmVhM2VhMDJiNDZiYmExMTIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTAyLTA4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBrVVRUeXBlVVRGOFBs
YWluVGV4dCBhbmQga1VUVHlwZUpQRUcgdG8gdGhlIGxpc3Qgb2YgY29tcGF0aWJsZSBjb250ZW50
IHR5cGVzIGluIERyYWdEYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc5NDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzE1MDc5PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQWRkcyBhIG5ldyB0ZXN0
IGNhc2UgdGhhdCBzaW11bGF0ZXMgZHJhZ2dpbmcgZnJvbSBhIHNvdXJjZSB0aGF0IG9ubHkgdmVu
ZHMgSlBFRyBpbWFnZXMgb3IgVVRGOCBwbGFpbnRleHQgaW50byBhCisgICAgICAgIGNvbnRlbnRl
ZGl0YWJsZSBhcmVhLiBBbiBpbWFnZSBlbGVtZW50IGFuZCB0aGUgcGxhaW4gdGV4dCBjb250ZW50
LCByZXNwZWN0aXZlbHksIHNob3VsZCBiZSBpbnNlcnRlZCBpbnRvIHRoZQorICAgICAgICBjb250
ZW50ZWRpdGFibGUgaW4gdGhlc2UgY2FzZXMuCisKKyAgICAgICAgVGhlIERyYWdTb3VyY2UgYW5k
IERyYWdJbmZvIGFyZSB1c2VkIHRvIG1vY2sgZHJhZ2dpbmcgaW50byB0aGUgV2ViVmlldy4gVGhl
cmUgaXMgbm8gcmVsaWFuY2Ugb24gdXNpbmcgbW91c2UKKyAgICAgICAgZXZlbnRzIGluIHRoaXMg
dGVzdCwgc2luY2Ugd2UgY2FsbCB0aGUgZHJhZ2dpbmcgZGVsZWdhdGUgbWV0aG9kcyAoZHJhZ2dp
bmdFbnRlcmVkOiwgZHJhZ2dpbmdVcGRhdGVkOiwgYW5kCisgICAgICAgIHBlcmZvcm1EcmFnT3Bl
cmF0aW9uOikgZGlyZWN0bHkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgr
W0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6
XSk6CisgICAgICAgICgtW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBpbml0V2l0aENvbXBs
ZXRpb25CbG9jazpdKToKKyAgICAgICAgKC1bRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIHdl
YlZpZXc6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtEcmFnU291cmNlIGRy
YWdnaW5nU291cmNlT3BlcmF0aW9uTWFza0ZvckxvY2FsOl0pOgorICAgICAgICAoLVtEcmFnSW5m
byBpbml0V2l0aEltYWdlOm9mZnNldDpwYXN0ZWJvYXJkOnNvdXJjZTpkZXN0aW5hdGlvbldpbmRv
dzpdKToKKyAgICAgICAgKC1bRHJhZ0luZm8gbGFzdE1vdXNlUG9zaXRpb25dKToKKyAgICAgICAg
KC1bRHJhZ0luZm8gc2V0TGFzdE1vdXNlUG9zaXRpb246XSk6CisgICAgICAgICgtW0RyYWdJbmZv
IGRyYWdnaW5nRGVzdGluYXRpb25XaW5kb3ddKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRyYWdnaW5nTG9j
YXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dlZEltYWdlTG9jYXRpb25dKToKKyAg
ICAgICAgKC1bRHJhZ0luZm8gZHJhZ2dlZEltYWdlXSk6CisgICAgICAgICgtW0RyYWdJbmZvIGRy
YWdnaW5nUGFzdGVib2FyZF0pOgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NvdXJjZV0p
OgorICAgICAgICAoLVtEcmFnSW5mbyBkcmFnZ2luZ1NlcXVlbmNlTnVtYmVyXSk6CisgICAgICAg
ICgtW0RyYWdJbmZvIHNsaWRlRHJhZ2dlZEltYWdlVG86XSk6CisgICAgICAgICgtW0RyYWdJbmZv
IG5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246XSk6CisgICAgICAgICgt
W0RyYWdJbmZvIGRyYWdnaW5nRm9ybWF0aW9uXSk6CisgICAgICAgICgtW0RyYWdJbmZvIHNldERy
YWdnaW5nRm9ybWF0aW9uOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBhbmltYXRlc1RvRGVzdGlu
YXRpb25dKToKKyAgICAgICAgKC1bRHJhZ0luZm8gc2V0QW5pbWF0ZXNUb0Rlc3RpbmF0aW9uOl0p
OgorICAgICAgICAoLVtEcmFnSW5mbyBudW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wXSk6CisgICAg
ICAgICgtW0RyYWdJbmZvIHNldE51bWJlck9mVmFsaWRJdGVtc0ZvckRyb3A6XSk6CisgICAgICAg
ICgtW0RyYWdJbmZvIGVudW1lcmF0ZURyYWdnaW5nSXRlbXNXaXRoT3B0aW9uczpmb3JWaWV3OmNs
YXNzZXM6c2VhcmNoT3B0aW9uczp1c2luZ0Jsb2NrOl0pOgorICAgICAgICAoLVtEcmFnSW5mbyBz
cHJpbmdMb2FkaW5nSGlnaGxpZ2h0XSk6CisgICAgICAgICgtW0RyYWdJbmZvIHJlc2V0U3ByaW5n
TG9hZGluZ10pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdEltYWdlKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OndlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL2Z1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbDogQWRkZWQuCisKIDIwMTct
MDItMDggIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBG
dWxsc2NyZWVuQ2xpZW50IGNyZWF0aW9uIGludG8gV2ViVmlld0ltcGwsIGZvciB1c2UgaW4gKGRl
cHJlY2F0ZWQpIFdLVmlldy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMWUyMGNhMzQ2NWYx
MWM5ZWFiYTVhYjhmNTFiMzQ0YjJlNjM3ZWI1OC4uODBjNGQxM2FhYzY1ODE0Mzc2NTZlOWRmMDA3
ZWI5MWY2NzM2NWE1NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU0OSw2ICs1NDksOCBA
QAogCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2
ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE5NEUxQkMxNzdFNTM0QTAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURp
ZFJlY2VpdmVSZXNwb25zZS5odG1sICovOyB9OwogCQlGNDE1MDg2RDFEQTA0MEM1MDA0NEJFOUIg
LyogcGxheS1hdWRpby1vbi1jbGljay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5
LWF1ZGlvLW9uLWNsaWNrLmh0bWwgKi87IH07CiAJCUY0MkRBNTE2MUQ4Q0VGRTQwMDMzNkY0MCAv
KiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDJEQTUxNTFEOENFRkRCMDAzMzZG
NDAgLyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi87IH07CisJCUY0Nzcy
ODk5MUU0QUUzQzEwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ3NzI4
OTgxRTRBRTNBRDAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsg
fTsKKwkJRjRCRkE2OEUxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRl
c3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRC
RkE2OEMxRTRBRDA4MDAwMTU0Mjk4IC8qIERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tICov
OyB9OwogCQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1z
b3VuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0QzJBQjIxMURENkQ5NDEwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNv
dW5kLmh0bWwgKi87IH07CiAJCUY0RjEzNzkyMUQ5QjY4M0UwMDJCRUM1NyAvKiBsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGMTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZp
ZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCAqLzsgfTsKIAkJRjRGNDA1QkMxRDRDMEQxQzAwN0E5
NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGNDA1QkEx
RDRDMENGODAwN0E5NzA3IC8qIGZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgKi87IH07CkBAIC02MjIsNiArNjI0LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0
QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCisJ
CQkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTlCNjc1RjFFMzk3MzZGMDBGQzZDODAg
Lyogbm8tYXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUM5OUI2NzVEMUUzOTcyMjAwMEZDNkM4MCAvKiBqcy1wbGF5LXdpdGgtY29udHJvbHMuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTlCNjc1QzFFMzk3MjFBMDBGQzZDODAgLyog
YXV0b3BsYXktd2l0aC1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTM2
MCw2ICsxMzYzLDggQEAKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZl
LmFyOyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJEQTUxNTFEOENFRkRCMDAzMzZGNDAg
LyogbGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IG5hbWUgPSAibGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkLmh0bWwiOyBwYXRoID0g
IlRlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7
IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJRjQ3NzI4OTgxRTRBRTNBRDAwN0FCRjZB
IC8qIGZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0
ZWJvYXJkVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
cmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91cy12aWRlby13aXRoLXNv
dW5kLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEYxMzc5MTFEOUI2ODMy
MDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZy5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmcuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjQwNUJBMUQ0QzBDRjgwMDdBOTcwNyAvKiBm
dWxsLXNpemUtYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImZ1bGwtc2l6ZS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExOCw2ICsyMTIzLDcgQEAKIAkJ
CQkzN0ZCNzI5NTFEQjJFODJGMDBFNDFCRTQgLyogQ29udGV4dE1lbnVEZWZhdWx0SXRlbXNIYXZl
VGFncy5tbSAqLywKIAkJCQkzNzc2QkM2MjE1MDk0NkJDMDA0M0E2NkQgLyogRGV2aWNlU2NhbGVG
YWN0b3JJbkRhc2hib2FyZFJlZ2lvbnMubW0gKi8sCiAJCQkJOTM5QkE5MTYxNDEwMzQxMjAwMUEw
MUJEIC8qIERldmljZVNjYWxlRmFjdG9yT25CYWNrLm1tICovLAorCQkJCUY0QkZBNjhDMUU0QUQw
ODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLywKIAkJCQkzN0Ux
MDY0QTE2OTc2NzY0MDBCNzhCRDAgLyogRE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbSAqLywK
IAkJCQkyRDUxQTBDNTFDOEJGMDA0MDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdyYXBw
ZXIubW0gKi8sCiAJCQkJNDYzOTdCOTQxREMyQzg1MDAwOUE3OEFFIC8qIERPTU5vZGUubW0gKi8s
CkBAIC0yMTgwLDYgKzIxODYsNyBAQAogCQkJCTM3RTEwNjRCMTY5NzY3RjcwMEI3OEJEMCAvKiBE
T01IVE1MVGFibGVDZWxsRWxlbWVudENlbGxBYm92ZS5odG1sICovLAogCQkJCTM3REM2NzhGMTQw
RDdEM0EwMEFCQ0NEQiAvKiBET01SYW5nZU9mU3RyaW5nLmh0bWwgKi8sCiAJCQkJMUE3RThCMzUx
ODEyMDkzNjAwQUVCNzRBIC8qIEZyYWdtZW50TmF2aWdhdGlvbi5odG1sICovLAorCQkJCUY0Nzcy
ODk4MUU0QUUzQUQwMDdBQkY2QSAvKiBmdWxsLXBhZ2UtY29udGVudGVkaXRhYmxlLmh0bWwgKi8s
CiAJCQkJQ0RCRkNDNDIxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZy
YW1lLmh0bWwgKi8sCiAJCQkJOUI0RjhGQTYxNTlENTJDQTAwMkQ5Rjk0IC8qIEhUTUxDb2xsZWN0
aW9uTmFtZWRJdGVtLmh0bWwgKi8sCiAJCQkJOUIyNkZDQjQxNTlEMTVFNzAwQ0MzNzY1IC8qIEhU
TUxGb3JtQ29sbGVjdGlvbk5hbWVkSXRlbS5odG1sICovLApAQCAtMjc4Myw2ICsyNzkwLDcgQEAK
IAkJCQk3Qzg5RDJBQzFBNjlCODBEMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MkQ2NzNFRTFBRkIxMjczMDBGQTE5RkUgLyogV0tQYWdlQ29w
eVNlc3Npb25TdGF0ZVdpdGhGaWx0ZXJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MUYxQTQxMUFFNjAwNDQ3QzRDIC8qIFdLUGFnZUdldFNjYWxlRmFjdG9yTm90WmVyby5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGNEJGQTY4RTFFNEFEMDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQ
YXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMDFBNDExQUU2MDA0
NDdDNEMgLyogV0tQYWdlSXNQbGF5aW5nQXVkaW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQw
MDA2NUYxQzFGNTg5QTAwODhFNkE3IC8qIFdLUERGVmlld1Jlc2l6ZUNyYXNoLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdGMjExQTQxMUFFNjAwNDQ3QzRDIC8qIFdLUHJlZmVyZW5jZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL0RyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxN2IxNWY1
ZjYwMDJkOThlY2MxNWU1M2FiMjM3ODNmOWFlNzNmOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbQpA
QCAtMCwwICsxLDI2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQg
PEFwcEtpdC9OU0RyYWdnaW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViVmlldy5oPgorI2ltcG9y
dCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZh
Y2UgRnJhbWVMb2FkQ29tcGxldGlvbkxpc3RlbmVyIDogTlNPYmplY3Q8V2ViRnJhbWVMb2FkRGVs
ZWdhdGU+IHsKKyAgICBCbG9ja1B0cjx2b2lkICh2b2lkKT4gX2NvbXBsZXRpb25CbG9jazsKK30K
KysgKGluc3RhbmNldHlwZSlsaXN0ZW5lcldpdGhDb21wbGV0aW9uQmxvY2s6KGRpc3BhdGNoX2Js
b2NrX3QpY29tcGxldGlvbkJsb2NrOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRnJhbWVMb2Fk
Q29tcGxldGlvbkxpc3RlbmVyCisKKysgKGluc3RhbmNldHlwZSlsaXN0ZW5lcldpdGhDb21wbGV0
aW9uQmxvY2s6KGRpc3BhdGNoX2Jsb2NrX3QpY29tcGxldGlvbkJsb2NrCit7CisgICAgcmV0dXJu
IFtbW0ZyYW1lTG9hZENvbXBsZXRpb25MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9u
QmxvY2s6Y29tcGxldGlvbkJsb2NrXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbXBsZXRpb25CbG9jazooZGlzcGF0Y2hfYmxvY2tfdCljb21wbGV0aW9uQmxv
Y2sKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX2NvbXBsZXRpb25C
bG9jayA9IGNvbXBsZXRpb25CbG9jazsKKworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRmluaXNoTG9hZEZvckZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lCit7CisgICAgaWYgKF9jb21wbGV0aW9uQmxvY2spCisgICAgICAgIF9jb21wbGV0
aW9uQmxvY2soKTsKK30KK0BlbmQKKworQGludGVyZmFjZSBEcmFnU291cmNlIDogTlNPYmplY3QK
Ky0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2tGb3JMb2NhbDoo
Qk9PTClmbGFnOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gRHJhZ1NvdXJjZQorCistIChOU0Ry
YWdPcGVyYXRpb24pZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrRm9yTG9jYWw6KEJPT0wpZmxh
ZworeworICAgIHJldHVybiBOU0RyYWdPcGVyYXRpb25Db3B5OworfQorCitAZW5kCisKK0BpbnRl
cmZhY2UgRHJhZ0luZm8gOiBOU09iamVjdDxOU0RyYWdnaW5nSW5mbz4geworICAgIE5TUG9pbnQg
X2xhc3RNb3VzZVBvc2l0aW9uOworICAgIFJldGFpblB0cjxOU0ltYWdlPiBfaW1hZ2U7CisgICAg
UmV0YWluUHRyPE5TUGFzdGVib2FyZD4gX3Bhc3RlYm9hcmQ7CisgICAgUmV0YWluUHRyPERyYWdT
b3VyY2U+IF9zb3VyY2U7CisgICAgUmV0YWluUHRyPE5TV2luZG93PiBfd2luZG93OworICAgIE5T
U2l6ZSBfb2Zmc2V0OworfQorQHByb3BlcnR5IChub25hdG9taWMpIE5TUG9pbnQgbGFzdE1vdXNl
UG9zaXRpb247CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBEcmFnSW5mbworCistIChpZClpbml0
V2l0aEltYWdlOihOU0ltYWdlICopaW1hZ2Ugb2Zmc2V0OihOU1NpemUpb2Zmc2V0IHBhc3RlYm9h
cmQ6KE5TUGFzdGVib2FyZCAqKXBhc3RlYm9hcmQgc291cmNlOihEcmFnU291cmNlICopc291cmNl
IGRlc3RpbmF0aW9uV2luZG93OihOU1dpbmRvdyAqKWRlc3RpbmF0aW9uV2luZG93Cit7CisgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX2ltYWdlID0gaW1hZ2U7CisgICAg
ICAgIF9wYXN0ZWJvYXJkID0gcGFzdGVib2FyZDsKKyAgICAgICAgX3NvdXJjZSA9IHNvdXJjZTsK
KyAgICAgICAgX3dpbmRvdyA9IGRlc3RpbmF0aW9uV2luZG93OworICAgICAgICBfb2Zmc2V0ID0g
b2Zmc2V0OworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoTlNQb2ludClsYXN0TW91
c2VQb3NpdGlvbgoreworICAgIHJldHVybiBfbGFzdE1vdXNlUG9zaXRpb247Cit9CisKKy0gKHZv
aWQpc2V0TGFzdE1vdXNlUG9zaXRpb246KE5TUG9pbnQpbGFzdE1vdXNlUG9zaXRpb24KK3sKKyAg
ICBfbGFzdE1vdXNlUG9zaXRpb24gPSBsYXN0TW91c2VQb3NpdGlvbjsKK30KKworLSAoTlNXaW5k
b3cgKilkcmFnZ2luZ0Rlc3RpbmF0aW9uV2luZG93Cit7CisgICAgcmV0dXJuIF93aW5kb3cuZ2V0
KCk7Cit9CisKKy0gKE5TRHJhZ09wZXJhdGlvbilkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sK
K3sKKyAgICByZXR1cm4gTlNEcmFnT3BlcmF0aW9uQ29weTsKK30KKworLSAoTlNQb2ludClkcmFn
Z2luZ0xvY2F0aW9uCit7CisgICAgcmV0dXJuIF9sYXN0TW91c2VQb3NpdGlvbjsKK30KKworLSAo
TlNQb2ludClkcmFnZ2VkSW1hZ2VMb2NhdGlvbgoreworICAgIHJldHVybiBOU01ha2VQb2ludChf
bGFzdE1vdXNlUG9zaXRpb24ueCArIF9vZmZzZXQud2lkdGgsIF9sYXN0TW91c2VQb3NpdGlvbi55
ICsgX29mZnNldC5oZWlnaHQpOworfQorCistIChOU0ltYWdlICopZHJhZ2dlZEltYWdlCit7Cisg
ICAgcmV0dXJuIF9pbWFnZS5nZXQoKTsKK30KKworLSAoTlNQYXN0ZWJvYXJkICopZHJhZ2dpbmdQ
YXN0ZWJvYXJkCit7CisgICAgcmV0dXJuIF9wYXN0ZWJvYXJkLmdldCgpOworfQorCistIChpZClk
cmFnZ2luZ1NvdXJjZQoreworICAgIHJldHVybiBfc291cmNlLmdldCgpOworfQorCistIChOU0lu
dGVnZXIpZHJhZ2dpbmdTZXF1ZW5jZU51bWJlcgoreworICAgIHJldHVybiAwOworfQorCistICh2
b2lkKXNsaWRlRHJhZ2dlZEltYWdlVG86KE5TUG9pbnQpc2NyZWVuUG9pbnQKK3sKK30KKworLSAo
TlNBcnJheSAqKW5hbWVzT2ZQcm9taXNlZEZpbGVzRHJvcHBlZEF0RGVzdGluYXRpb246KE5TVVJM
ICopZHJvcERlc3RpbmF0aW9uCit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAoTlNEcmFnZ2lu
Z0Zvcm1hdGlvbilkcmFnZ2luZ0Zvcm1hdGlvbgoreworICAgIHJldHVybiBOU0RyYWdnaW5nRm9y
bWF0aW9uRGVmYXVsdDsKK30KKworLSAodm9pZClzZXREcmFnZ2luZ0Zvcm1hdGlvbjooTlNEcmFn
Z2luZ0Zvcm1hdGlvbilmb3JtYXRpb24KK3sKK30KKworLSAoQk9PTClhbmltYXRlc1RvRGVzdGlu
YXRpb24KK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQpc2V0QW5pbWF0ZXNUb0Rlc3Rp
bmF0aW9uOihCT09MKWZsYWcKK3sKK30KKworLSAoTlNJbnRlZ2VyKW51bWJlck9mVmFsaWRJdGVt
c0ZvckRyb3AKK3sKKyAgICByZXR1cm4gMTsKK30KKworLSAodm9pZClzZXROdW1iZXJPZlZhbGlk
SXRlbXNGb3JEcm9wOihOU0ludGVnZXIpbnVtYmVyCit7Cit9CisKKy0gKHZvaWQpZW51bWVyYXRl
RHJhZ2dpbmdJdGVtc1dpdGhPcHRpb25zOihOU0VudW1lcmF0aW9uT3B0aW9ucyllbnVtT3B0cyBm
b3JWaWV3OihOU1ZpZXcgKil2aWV3IGNsYXNzZXM6KE5TQXJyYXkgKiljbGFzc0FycmF5IHNlYXJj
aE9wdGlvbnM6KE5TRGljdGlvbmFyeSAqKXNlYXJjaE9wdGlvbnMgdXNpbmdCbG9jazoodm9pZCAo
XikoTlNEcmFnZ2luZ0l0ZW0gKmRyYWdnaW5nSXRlbSwgTlNJbnRlZ2VyIGlkeCwgQk9PTCAqc3Rv
cCkpYmxvY2sKK3sKK30KKworI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSAx
MDExMDAKKworLSAoTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0KXNwcmluZ0xvYWRpbmdIaWdobGln
aHQKK3sKKyAgICByZXR1cm4gTlNTcHJpbmdMb2FkaW5nSGlnaGxpZ2h0Tm9uZTsKK30KKworLSAo
dm9pZClyZXNldFNwcmluZ0xvYWRpbmcKK3sKK30KKworI2VuZGlmCisKK0BlbmQKKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgTlNJbWFnZSAqZ2V0VGVzdEltYWdlKCkKK3sK
KyAgICByZXR1cm4gW1tbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDb250ZW50c09mVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0ZW5zaW9uOkAi
cG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXSBhdXRvcmVsZWFz
ZV07Cit9CisKK3N0YXRpYyBXZWJWaWV3ICp3ZWJWaWV3QWZ0ZXJQZXJmb3JtaW5nRHJhZ09wZXJh
dGlvbihOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCit7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+
IGRlc3RpbmF0aW9uID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IGhvc3RX
aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6TlNN
YWtlUmVjdCgwLCAwLCA0MDAsIDQwMCkgc3R5bGVNYXNrOjAgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNN
YWtlUG9pbnQoMCwgMCldOworICAgIFtbaG9zdFdpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmll
dzpkZXN0aW5hdGlvbi5nZXQoKV07CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOwor
ICAgIFtkZXN0aW5hdGlvbiBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpbRnJhbWVMb2FkQ29tcGxldGlv
bkxpc3RlbmVyIGxpc3RlbmVyV2l0aENvbXBsZXRpb25CbG9jazpeKCkgeworICAgICAgICBSZXRh
aW5QdHI8RHJhZ1NvdXJjZT4gc291cmNlID0gYWRvcHROUyhbW0RyYWdTb3VyY2UgYWxsb2NdIGlu
aXRdKTsKKyAgICAgICAgUmV0YWluUHRyPERyYWdJbmZvPiBpbmZvID0gYWRvcHROUyhbW0RyYWdJ
bmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmdldFRlc3RJbWFnZSgpIG9mZnNldDpOU01ha2VTaXpl
KDAsIDApIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdldCgpIGRlc3RpbmF0
aW9uV2luZG93Omhvc3RXaW5kb3cuZ2V0KCldKTsKKyAgICAgICAgW2luZm8gc2V0TGFzdE1vdXNl
UG9zaXRpb246TlNNYWtlUG9pbnQoMCwgMjAwKV07CisgICAgICAgIFtkZXN0aW5hdGlvbiBkcmFn
Z2luZ0VudGVyZWQ6aW5mby5nZXQoKV07CisgICAgICAgIFtpbmZvIHNldExhc3RNb3VzZVBvc2l0
aW9uOk5TTWFrZVBvaW50KDIwMCwgMjAwKV07CisgICAgICAgIFtkZXN0aW5hdGlvbiBkcmFnZ2lu
Z1VwZGF0ZWQ6aW5mby5nZXQoKV07CisKKyAgICAgICAgRVhQRUNUX1RSVUUoW2Rlc3RpbmF0aW9u
IHBlcmZvcm1EcmFnT3BlcmF0aW9uOmluZm8uZ2V0KCldKTsKKyAgICAgICAgaXNEb25lID0gdHJ1
ZTsKKyAgICB9XV07CisgICAgW1tkZXN0aW5hdGlvbiBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImZ1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUiIHdpdGhFeHRlbnNpb246QCJodG1s
IiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgcmV0dXJuIGRlc3RpbmF0aW9uLmdl
dCgpOworfQorCitURVNUKERyYWdBbmREcm9wUGFzdGVib2FyZFRlc3RzLCBEcm9wVVRGOFBsYWlu
VGV4dCkKK3sKKyAgICBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbTlNQYXN0ZWJvYXJkIHBh
c3RlYm9hcmRXaXRoVW5pcXVlTmFtZV07CisgICAgW3Bhc3RlYm9hcmQgc2V0RGF0YTpbQCJJIGFt
IGEgV2ViS2l0LiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvclR5
cGU6KF9fYnJpZGdlIE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHRdOworCisgICAgUmV0
YWluUHRyPFdlYlZpZXc+IHJlc3VsdGluZ1dlYlZpZXcgPSB3ZWJWaWV3QWZ0ZXJQZXJmb3JtaW5n
RHJhZ09wZXJhdGlvbihwYXN0ZWJvYXJkKTsKKyAgICBFWFBFQ1RfVFJVRShbW3Jlc3VsdGluZ1dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6QCJkb2N1bWVudC5i
b2R5LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJJIGFtIGEgV2ViS2l0LiJdKTsKK30K
KworVEVTVChEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cywgRHJvcEpQRUcpCit7CisgICAgTlNQ
YXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW05TUGFzdGVib2FyZCBwYXN0ZWJvYXJkV2l0aFVuaXF1
ZU5hbWVdOworICAgIE5TSW1hZ2UgKmljb24gPSBnZXRUZXN0SW1hZ2UoKTsKKyAgICBOU0JpdG1h
cEltYWdlUmVwICppbWFnZVJlcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdlUmVwV2l0aERhdGE6
aWNvbi5USUZGUmVwcmVzZW50YXRpb25dOworICAgIFtwYXN0ZWJvYXJkIHNldERhdGE6W2ltYWdl
UmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHByb3BlcnRpZXM6QHsg
TlNJbWFnZUNvbXByZXNzaW9uRmFjdG9yOiBAKDAuOSkgfV0gZm9yVHlwZTooX19icmlkZ2UgTlNT
dHJpbmcgKilrVVRUeXBlSlBFR107CisKKyAgICBSZXRhaW5QdHI8V2ViVmlldz4gcmVzdWx0aW5n
V2ViVmlldyA9IHdlYlZpZXdBZnRlclBlcmZvcm1pbmdEcmFnT3BlcmF0aW9uKHBhc3RlYm9hcmQp
OworICAgIEVYUEVDVF9UUlVFKFtbcmVzdWx0aW5nV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0RnJvbVN0cmluZzpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ltZycpLnRhZ05h
bWUgPT09ICdJTUcnIl0gaXNFcXVhbFRvU3RyaW5nOkAidHJ1ZSJdKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL2Z1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvbWFjL2Z1bGwtcGFnZS1jb250ZW50ZWRpdGFibGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZmIzODQ0OWNhNzhiNzQ4ZTUwMWVkNDZkNDIwNmU1NTNjMWYzNDdhCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvZnVsbC1wYWdlLWNvbnRl
bnRlZGl0YWJsZS5odG1sCkBAIC0wLDAgKzEgQEAKKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBzdHls
ZT0id2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgbWFyZ2luOiAwOyI+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>