<?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>175596</bug_id>
          
          <creation_ts>2017-08-15 13:39:10 -0700</creation_ts>
          <short_desc>Make DataTransferItemList work with plain text entries</short_desc>
          <delta_ts>2017-08-15 19:24:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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>
          
          <blocked>170449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1338848</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 13:39:10 -0700</bug_when>
    <thetext>Add the support for reading off plain text from dataTransfer.items for drag &amp; drop,
and clipboardData.items for copy &amp; paste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338853</commentid>
    <comment_count>1</comment_count>
      <attachid>318166</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 13:48:52 -0700</bug_when>
    <thetext>Created attachment 318166
Implements the support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338897</commentid>
    <comment_count>2</comment_count>
      <attachid>318166</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-15 15:19:51 -0700</bug_when>
    <thetext>Comment on attachment 318166
Implements the support

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

&gt; Source/WebCore/dom/DataTransferItem.cpp:-54
&gt; -    return nullptr;

Spec says to also check m_dataTransfer.canReadData(), don&apos;t we need it?

&gt; Source/WebCore/dom/DataTransferItem.h:45
&gt; +class DataTransferItem {

Shouldn&apos;t this subclass ScriptWrappable given that it is web-exposed?

&gt; Source/WebCore/dom/DataTransferItem.idl:39
&gt; +    [CallWith=ScriptExecutionContext] void getAsString(optional StringCallback? callback);

The parameter is not optional is the spec, merely nullable.

&gt; Source/WebCore/dom/DataTransferItemList.cpp:78
&gt; +            items.append(std::make_unique&lt;DataTransferItem&gt;(m_dataTransfer, type));

It is weird that DataTransferItem has ref/deref methods and is stored in an unique_ptr here. We need it to be refcounted due because it is script wrappable , so I don&apos;t think we should use unique_ptr here.

&gt; Source/WebCore/dom/DataTransferItemList.cpp:82
&gt; +    for (unsigned i = 0, length = files.length(); i &lt; length; i++) {

++i

&gt; Source/WebCore/dom/DataTransferItemList.cpp:85
&gt; +        if (isSupportedType(type) || true)

|| true ?

&gt; Source/WebCore/dom/DataTransferItemList.h:44
&gt;  class DataTransferItemList {

Shouldn&apos;t this subclass ScriptWrappable?

&gt; Source/WebCore/dom/DataTransferItemList.h:67
&gt; +    std::optional&lt;Vector&lt;std::unique_ptr&lt;DataTransferItem&gt;&gt;&gt; m_items;

Personally, I&apos;d rather we make this member mutable and keep the length getter const. The fact that this is lazy-initialized is an implementation detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338970</commentid>
    <comment_count>3</comment_count>
      <attachid>318166</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 17:08:54 -0700</bug_when>
    <thetext>Comment on attachment 318166
Implements the support

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

&gt;&gt; Source/WebCore/dom/DataTransferItem.cpp:-54
&gt;&gt; -    return nullptr;
&gt; 
&gt; Spec says to also check m_dataTransfer.canReadData(), don&apos;t we need it?

Fixed, and updated editing/pasteboard/datatransfer-items-drop-plaintext-file.html.

&gt;&gt; Source/WebCore/dom/DataTransferItem.h:45
&gt;&gt; +class DataTransferItem {
&gt; 
&gt; Shouldn&apos;t this subclass ScriptWrappable given that it is web-exposed?

Fixed.

&gt;&gt; Source/WebCore/dom/DataTransferItem.idl:39
&gt;&gt; +    [CallWith=ScriptExecutionContext] void getAsString(optional StringCallback? callback);
&gt; 
&gt; The parameter is not optional is the spec, merely nullable.

:( The reason this wasn&apos;t caught was because my IDL test was broken. Fixed this and the test.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:78
&gt;&gt; +            items.append(std::make_unique&lt;DataTransferItem&gt;(m_dataTransfer, type));
&gt; 
&gt; It is weird that DataTransferItem has ref/deref methods and is stored in an unique_ptr here. We need it to be refcounted due because it is script wrappable , so I don&apos;t think we should use unique_ptr here.

This is the pattern we use when we forward ref. See CanvasRenderingContext for example. CanvasRenderingContext holds onto that by unique_ptr.
If we kept Ref&lt;DataTransferItem&gt; in DataTransferItemList, then we&apos;d be creating a ref cycle between DataTransfer, DataTransferItemList, and DataTransferItem because DataTransferItem forwards ref to DataTransfer, which has to keep DataTransferItemList alive which in turn has to keep its DataTransferItem alive.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:82
&gt;&gt; +    for (unsigned i = 0, length = files.length(); i &lt; length; i++) {
&gt; 
&gt; ++i

Fixed.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.cpp:85
&gt;&gt; +        if (isSupportedType(type) || true)
&gt; 
&gt; || true ?

Oops, this was for debugging. Removed.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.h:44
&gt;&gt;  class DataTransferItemList {
&gt; 
&gt; Shouldn&apos;t this subclass ScriptWrappable?

Fixed.

&gt;&gt; Source/WebCore/dom/DataTransferItemList.h:67
&gt;&gt; +    std::optional&lt;Vector&lt;std::unique_ptr&lt;DataTransferItem&gt;&gt;&gt; m_items;
&gt; 
&gt; Personally, I&apos;d rather we make this member mutable and keep the length getter const. The fact that this is lazy-initialized is an implementation detail.

Sure, changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338972</commentid>
    <comment_count>4</comment_count>
      <attachid>318201</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 17:10:23 -0700</bug_when>
    <thetext>Created attachment 318201
Addressed review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339019</commentid>
    <comment_count>5</comment_count>
      <attachid>318201</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-08-15 19:06:54 -0700</bug_when>
    <thetext>Comment on attachment 318201
Addressed review comments

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Added the basic machinary to get the list of plain text items to DataTransferItemList and DataTransferItem.

Nit - s/machinary/machinery/

&gt; Source/WebCore/dom/DataTransferItem.cpp:69
&gt; +    String value = m_dataTransfer.getData(m_type);

Nit - auto

&gt; Source/WebCore/dom/DataTransferItemList.cpp:83
&gt; +        File&amp; file = *files.item(i);

Nit - I think these would be more elegant as auto&amp; file and auto type.

&gt; LayoutTests/ChangeLog:10
&gt; +        Unfortunately, dropping a file is only supported by DumpRenderTree on Mac :( so it&apos;s disabled elsewhere.

We already have existing iOS drag and drop tests that access the DataTransfer&apos;s FileList on drop (event.dataTransfer.files), so I would think we should also be able to use items there. An iOS DnD test would be nice, but probably in a followup when we start iterating on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339024</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 19:22:35 -0700</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #5)
&gt; Comment on attachment 318201 [details]
&gt; Addressed review comments
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318201&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Added the basic machinary to get the list of plain text items to DataTransferItemList and DataTransferItem.
&gt; 
&gt; Nit - s/machinary/machinery/

Fixed.

&gt; &gt; Source/WebCore/dom/DataTransferItem.cpp:69
&gt; &gt; +    String value = m_dataTransfer.getData(m_type);
&gt; 
&gt; Nit - auto

I inlined the code into scheduleCallback.

&gt; &gt; Source/WebCore/dom/DataTransferItemList.cpp:83
&gt; &gt; +        File&amp; file = *files.item(i);
&gt; 
&gt; Nit - I think these would be more elegant as auto&amp; file and auto type.

No, I specifically avoided auto here to make following the code easier.

&gt; &gt; LayoutTests/ChangeLog:10
&gt; &gt; +        Unfortunately, dropping a file is only supported by DumpRenderTree on Mac :( so it&apos;s disabled elsewhere.
&gt; 
&gt; We already have existing iOS drag and drop tests that access the
&gt; DataTransfer&apos;s FileList on drop (event.dataTransfer.files), so I would think
&gt; we should also be able to use items there. An iOS DnD test would be nice,
&gt; but probably in a followup when we start iterating on iOS.

Okay, I&apos;ll look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339025</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-08-15 19:23:43 -0700</bug_when>
    <thetext>Committed r220782: &lt;http://trac.webkit.org/changeset/220782&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339026</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-15 19:24:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/33910813&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318166</attachid>
            <date>2017-08-15 13:48:52 -0700</date>
            <delta_ts>2017-08-15 17:10:21 -0700</delta_ts>
            <desc>Implements the support</desc>
            <filename>bug-175596-20170815134850.patch</filename>
            <type>text/plain</type>
            <size>38156</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNzU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTA4LTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgRGF0YVRyYW5zZmVySXRlbUxpc3Qgd29yayB3aXRoIHBsYWluIHRleHQgZW50cmllcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgRGF0
YVRyYW5zZmVySXRlbSBhcyBhIGNvbW1vbiBpZGVudGlmaWVyIHNpbmNlIGl0J3MgYSBydW50aW1l
IGVuYWJsZWQgZmVhdHVyZS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKwogMjAxNy0wOC0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBFbmFibGUgbmFtZWQgb2Zmc2V0cyBpbnRvIEpTQyBieXRlY29kZXMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAkocmV2aXNpb24gMjIwNzU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogICAgIG1h
Y3JvKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSkgXAogICAgIG1hY3JvKERhdGUpIFwKICAgICBtYWNy
byhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERhdGFUcmFuc2Zlckl0ZW0pIFwKICAgICBt
YWNybyhEYXRhVHJhbnNmZXJJdGVtTGlzdCkgXAogICAgIG1hY3JvKERvY3VtZW50VGltZWxpbmUp
IFwKICAgICBtYWNybyhFcnJvcikgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNzU0KQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTctMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB3b3JrIHdpdGggcGxhaW4gdGV4dCBlbnRyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0
aGUgYmFzaWMgbWFjaGluYXJ5IHRvIGdldCB0aGUgbGlzdCBvZiBwbGFpbiB0ZXh0IGl0ZW1zIHRv
IERhdGFUcmFuc2Zlckl0ZW1MaXN0IGFuZCBEYXRhVHJhbnNmZXJJdGVtLgorCisgICAgICAgIEVh
Y2ggRGF0YVRyYW5zZmVySXRlbSBub3cgZGVwZW5kcyBvbiBEYXRhVHJhbnNmZXIgc28gaXQgZG9l
cyByZWYtZm9yd2FyZGluZyBsaWtlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHRvIG1ha2UKKyAgICAg
ICAgRGF0YVRyYW5zZmVyIGFsaXZlIGFzIGxvbmcgYXMgYW55IERhdGFUcmFuc2Zlckl0ZW0gaXMg
YWxpdmUuCisKKyAgICAgICAgU3BlY2lmaWNhdGlvbnM6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL2RuZC5odG1sI3RoZS1kYXRhdHJhbnNmZXJpdGVtLWludGVyZmFjZQor
ICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvZG5kLmh0bWwjdGhlLWRhdGF0cmFuc2Zlcml0ZW1saXN0LWludGVyZmFjZQorCisgICAg
ICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxh
aW50ZXh0LWZpbGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbTo6RGF0
YVRyYW5zZmVySXRlbSk6IEFkZGVkIHR3byB2YXJpYW50cyBvbmUgZm9yIHBsYWluIHRleHQgYW5k
IGFub3RoZXIgb25lIGZvciBhIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJ
dGVtOjpraW5kIGNvbnN0KTogUmV3cml0dGVuLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbTo6Z2V0QXNTdHJpbmcgY29uc3QpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSBjb25zdCk6IEltcGxlbWVudGVkLgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXJJdGVtOjpyZWYpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0
ZW06OmRlcmVmKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtOjp0
eXBlIGNvbnN0KTogUmV0dXJucyBTdHJpbmcgaW5zdGVhZCBvZiBBdG9taWNTdHJpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtOjpraW5kIGNvbnN0KTogTW92ZWQgdG8gY3Bw
LgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbDogUmVtb3ZlZCBOb0ludGVyZmFj
ZU9iamVjdCBzaW5jZSB0aGUgaW50ZXJmYWNlIG9iamVjdCBzaG91bGQgZXhpc3Qgb24gRE9NV2lu
ZG93LgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6bGVuZ3RoKTogSW1wbGVtZW50ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6aXRlbSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWRUeXBlKTogQWRkZWQuIEZvciBub3csIHdlIG9ubHkgc3Vw
cG9ydCB0ZXh0L3BsYWluLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6
OmVuc3VyZUl0ZW1zKTogQWRkZWQuIENvbnN0cnVjdHMgdGhlIGxpc3Qgb2YgRGF0YVRyYW5zZmVy
SXRlbXMuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgIChE
YXRhVHJhbnNmZXJJdGVtTGlzdCk6IEFkZGVkIG1faXRlbXMuIFRoZSBsaXN0IGlzIGZpbGxlZCBs
YXppbHkgYnkgZW5zdXJlSXRlbXMuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmlkbDogUmVtb3ZlZCBOb0ludGVyZmFjZU9iamVjdCBzaW5jZSB0aGUgaW50ZXJmYWNlIG9iamVj
dCBzaG91bGQgZXhpc3Qgb24gRE9NV2luZG93LgorCiAyMDE3LTA4LTE1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHF1b3RhIGxpbWl0YXRpb24g
Zm9yIGtlZXBhbGl2ZSBGZXRjaCByZXF1ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmNwcAkocmV2aXNpb24gMjIwNzU0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMjIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCiAKLSNp
bmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0oKQorRGF0YVRy
YW5zZmVySXRlbTo6RGF0YVRyYW5zZmVySXRlbShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
Y29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogbV9kYXRhVHJhbnNmZXIoZGF0YVRyYW5zZmVyKQor
ICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKK0RhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zl
ckl0ZW0oRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZpbGU+JiYgZmlsZSkKKyAgICA6IG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKKyAgICAs
IG1fdHlwZSh0eXBlKQorICAgICwgbV9maWxlKFdURk1vdmUoZmlsZSkpCiB7CiB9CiAKQEAgLTQ1
LDEzICs1NSwyNCBAQCBEYXRhVHJhbnNmZXJJdGVtOjp+RGF0YVRyYW5zZmVySXRlbSgpCiB7CiB9
CiAKLXZvaWQgRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNTdHJpbmcoUmVmUHRyPFN0cmluZ0NhbGxi
YWNrPiYmKSBjb25zdAorU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW06OmtpbmQoKSBjb25zdAogewor
ICAgIHJldHVybiBtX2ZpbGUgPyBBU0NJSUxpdGVyYWwoImZpbGUiKSA6IEFTQ0lJTGl0ZXJhbCgi
c3RyaW5nIik7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNTdHJpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmIGNhbGxi
YWNrKSBjb25zdAoreworICAgIGlmICghY2FsbGJhY2sgfHwgIW1fZGF0YVRyYW5zZmVyLmNhblJl
YWREYXRhKCkgfHwgbV9maWxlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTWFr
ZSB0aGlzIGFzeW5jLgorICAgIFN0cmluZyB2YWx1ZSA9IG1fZGF0YVRyYW5zZmVyLmdldERhdGEo
bV90eXBlKTsKKyAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCB2YWx1ZSk7
CiB9CiAKLVJlZlB0cjxCbG9iPiBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0ZpbGUoKSBjb25zdAor
UmVmUHRyPEZpbGU+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fZmlsZS5jb3B5UmVmKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJ
dGVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW0u
aAkocmV2aXNpb24gMjIwNzU0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMjggKzMxLDM3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJsb2I7CitjbGFzcyBGaWxlOwor
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFN0cmluZ0NhbGxiYWNrOwogCi1j
bGFzcyBEYXRhVHJhbnNmZXJJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVySXRl
bT4geworY2xhc3MgRGF0YVRyYW5zZmVySXRlbSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
RGF0YVRyYW5zZmVySXRlbSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IERhdGFUcmFuc2Zlckl0ZW0oKTsKKyAgICBEYXRhVHJhbnNmZXJJdGVtKERhdGFUcmFuc2ZlciYs
IGNvbnN0IFN0cmluZyYpOworICAgIERhdGFUcmFuc2Zlckl0ZW0oRGF0YVRyYW5zZmVyJiwgY29u
c3QgU3RyaW5nJiwgUmVmPEZpbGU+JiYpOwogICAgIH5EYXRhVHJhbnNmZXJJdGVtKCk7CiAKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAg
ICB2b2lkIGdldEFzU3RyaW5nKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJikgY29uc3Q7Ci0gICAg
UmVmUHRyPEJsb2I+IGdldEFzRmlsZSgpIGNvbnN0OworICAgIC8vIERhdGFUcmFuc2ZlciBvd25z
IERhdGFUcmFuc2Zlckl0ZW0sIGFuZCBEYXRhVHJhbnNmZXIgaXMga2VwdCBhbGl2ZSBhcyBsb25n
IGFzIERhdGFUcmFuc2Zlckl0ZW0gaXMgYWxpdmUuCisgICAgdm9pZCByZWYoKSB7IG1fZGF0YVRy
YW5zZmVyLnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIHsgbV9kYXRhVHJhbnNmZXIuZGVyZWYo
KTsgfQorCisgICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcmIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIGdldEFzU3RyaW5nKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+JiYpIGNvbnN0OworICAgIFJl
ZlB0cjxGaWxlPiBnZXRBc0ZpbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBdG9taWNTdHJp
bmcgbV9raW5kOwotICAgIEF0b21pY1N0cmluZyBtX3R5cGU7CisgICAgRGF0YVRyYW5zZmVyJiBt
X2RhdGFUcmFuc2ZlcjsKKyAgICBjb25zdCBTdHJpbmcgbV90eXBlOworICAgIFJlZlB0cjxGaWxl
PiBtX2ZpbGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
SXRlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0
ZW0uaWRsCShyZXZpc2lvbiAyMjA3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0ICszMCwxMyBAQAogICovCiAKIFsK
LSAgICBOb0ludGVyZmFjZU9iamVjdCwKICAgICBFbmFibGVkQXRSdW50aW1lPURhdGFUcmFuc2Zl
ckl0ZW1zLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBEYXRh
VHJhbnNmZXJJdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogCi0gICAgdm9pZCBnZXRBc1N0
cmluZyhvcHRpb25hbCBTdHJpbmdDYWxsYmFjaz8gY2FsbGJhY2spOwotICAgIEJsb2IgZ2V0QXNG
aWxlKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgZ2V0QXNT
dHJpbmcob3B0aW9uYWwgU3RyaW5nQ2FsbGJhY2s/IGNhbGxiYWNrKTsKKyAgICBGaWxlIGdldEFz
RmlsZSgpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1M
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRl
bUxpc3QuY3BwCShyZXZpc2lvbiAyMjA3NTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsMjEgQEAKICNp
bmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVy
SXRlbS5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dW5zaWduZWQgRGF0YVRyYW5zZmVySXRlbUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit1bnNpZ25lZCBE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6bGVuZ3RoKCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gZW5zdXJlSXRlbXMoKS5zaXplKCk7CiB9CiAKLVJlZlB0cjxEYXRhVHJhbnNmZXJJdGVtPiBE
YXRhVHJhbnNmZXJJdGVtTGlzdDo6aXRlbSh1bnNpZ25lZCkKK1JlZlB0cjxEYXRhVHJhbnNmZXJJ
dGVtPiBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvJiBpdGVtcyA9IGVuc3VyZUl0ZW1zKCk7CisgICAgaWYg
KGl0ZW1zLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIGl0ZW1zW2luZGV4XS5nZXQoKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gRGF0YVRyYW5z
ZmVySXRlbUxpc3Q6OmFkZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQpAQCAtNTcsNSAr
NjEsMzYgQEAgdm9pZCBEYXRhVHJhbnNmZXJJdGVtTGlzdDo6Y2xlYXIoKQogewogfQogCisvLyBG
SVhNRTogRGF0YVRyYW5zZmVyIHNob3VsZCBmaWx0ZXIgdHlwZXMgaXRzZWxmLgorc3RhdGljIGJv
b2wgaXNTdXBwb3J0ZWRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0eXBlLCAidGV4dC9wbGFpbiIpOworfQorCitWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPERhdGFUcmFuc2Zlckl0ZW0+PiYgRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmVu
c3VyZUl0ZW1zKCkKK3sKKyAgICBpZiAobV9pdGVtcykKKyAgICAgICAgcmV0dXJuICptX2l0ZW1z
OworCisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNmZXJJdGVtPj4gaXRlbXM7
CisgICAgZm9yIChTdHJpbmcmIHR5cGUgOiBtX2RhdGFUcmFuc2Zlci50eXBlcygpKSB7CisgICAg
ICAgIGlmIChpc1N1cHBvcnRlZFR5cGUodHlwZSkpCisgICAgICAgICAgICBpdGVtcy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVtPihtX2RhdGFUcmFuc2ZlciwgdHlwZSkp
OworICAgIH0KKworICAgIEZpbGVMaXN0JiBmaWxlcyA9IG1fZGF0YVRyYW5zZmVyLmZpbGVzKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3RoID0gZmlsZXMubGVuZ3RoKCk7IGkgPCBs
ZW5ndGg7IGkrKykgeworICAgICAgICBGaWxlJiBmaWxlID0gKmZpbGVzLml0ZW0oaSk7CisgICAg
ICAgIFN0cmluZyB0eXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGUucGF0aCgpKTsK
KyAgICAgICAgaWYgKGlzU3VwcG9ydGVkVHlwZSh0eXBlKSB8fCB0cnVlKQorICAgICAgICAgICAg
aXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVySXRlbT4obV9kYXRhVHJh
bnNmZXIsIHR5cGUsIGZpbGUpKTsKKyAgICB9CisKKworICAgIG1faXRlbXMgPSBXVEZNb3ZlKGl0
ZW1zKTsKKworICAgIHJldHVybiAqbV9pdGVtczsKK30KKwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAkocmV2aXNpb24gMjIwNzU0KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMyLDEzICszMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEYXRhVHJhbnNmZXIu
aCIKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YVRyYW5zZmVySXRlbTsKIGNsYXNz
IEZpbGU7CiAKIGNsYXNzIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHsKQEAgLTUzLDcgKzUzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBtX2RhdGFUcmFuc2Zlci5yZWYoKTsgfQogICAgIHZv
aWQgZGVyZWYoKSB7IG1fZGF0YVRyYW5zZmVyLmRlcmVmKCk7IH0KIAotICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGxlbmd0aCgpOwogICAgIFJlZlB0cjxEYXRhVHJh
bnNmZXJJdGVtPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBh
ZGQoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpOwogICAgIHZvaWQgYWRk
KFJlZlB0cjxGaWxlPiYmKTsKQEAgLTYxLDcgKzYxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGNs
ZWFyKCk7CiAKIHByaXZhdGU6CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNm
ZXJJdGVtPj4mIGVuc3VyZUl0ZW1zKCk7CisKICAgICBEYXRhVHJhbnNmZXImIG1fZGF0YVRyYW5z
ZmVyOworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNm
ZXJJdGVtPj4+IG1faXRlbXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwJKHJldmlzaW9uIDIy
MDc1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICAqLwogCiBbCi0gICAgTm9JbnRlcmZhY2VP
YmplY3QsCiAgICAgRW5hYmxlZEF0UnVudGltZT1EYXRhVHJhbnNmZXJJdGVtcywKICAgICBKU0dl
bmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjA3NTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMiBAQAorMjAxNy0wOC0xNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBNYWtlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHdvcmsgd2l0aCBw
bGFpbiB0ZXh0IGVudHJpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NTU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlYmFzZWxpbmVkIHRoZSB0ZXN0cyBhbmQgYWRkZWQgdHdvIHJlZ3Jlc3Npb24g
dGVzdHMgZm9yIHBhc3RpbmcgcGxhaW4gdGV4dCBhbmQgZHJvcHBpbmcgYSBwbGFpbiB0ZXh0IGZp
bGUuCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSwgZHJvcHBpbmcgYSBmaWxlIGlzIG9ubHkgc3Vw
cG9ydGVkIGJ5IER1bXBSZW5kZXJUcmVlIG9uIE1hYyA6KCBzbyBpdCdzIGRpc2FibGVkIGVsc2V3
aGVyZS4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4
cGVjdGVkLnR4dDogUmViYXNlbGluZWQgbm93IHRoYXQgTm9JbnRlcmZhY2VPYmplY3QgaGFzIGJl
ZW4gZHJvcHBlZCBmcm9tCisgICAgICAgIERhdGFUcmFuc2Zlckl0ZW0uaWRsIGFuZCBEYXRhVHJh
bnNmZXJJdGVtTGlzdC5pZGwgYXMgZXhwZWN0ZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLXBsYWludGV4dC1maWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtcGFzdGUtcGxhaW50ZXh0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0
ZS1wbGFpbnRleHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9yZXNvdXJjZXMvdGV4
dC1wYXN0ZWJvYXJkLWRhdGEudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFj
LWVsY2FwaXRhbi13azIvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWVsY2FwaXRhbi9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMtaGlnaHNpZXJyYS13azEvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAg
ICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dw
ZS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKwog
MjAxNy0wOC0xNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBxdW90YSBsaW1pdGF0aW9uIGZvciBrZWVwYWxpdmUgRmV0Y2ggcmVxdWVzdHMKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YXRyYW5zZmVyLWlkbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMDc1NCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTMsMTQgKzEzLDE0IEBAIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFj
ZTogb3BlcmF0aW9uIGcKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogb3BlcmF0aW9uIHNl
dERhdGEoRE9NU3RyaW5nLERPTVN0cmluZykgCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBjbGVhckRhdGEoRE9NU3RyaW5nKSAKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVy
ZmFjZTogYXR0cmlidXRlIGZpbGVzIAotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZh
Y2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9v
d25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRhdGFUcmFuc2Zl
ckl0ZW1MaXN0IiBleHBlY3RlZCBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIG1pc3Np
bmcKLUZBSUwgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlIG9iamVjdCBsZW5ndGggYXNz
ZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0YVRy
YW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIg
bWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUg
YXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0
YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlz
dCIgbWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5j
ZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBhc3NlcnRfb3du
X3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJ
dGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBtaXNzaW5n
Ci1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9w
ZXJ0aWVzIG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9w
ZXJ0eSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5
ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0
ZW1MaXN0IiBtaXNzaW5nCi1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogYXR0
cmlidXRlIGxlbmd0aCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFU
cmFuc2Zlckl0ZW1MaXN0IiBtaXNzaW5nCi1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVy
ZmFjZTogb3BlcmF0aW9uIGFkZChET01TdHJpbmcsRE9NU3RyaW5nKSBhc3NlcnRfb3duX3Byb3Bl
cnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlz
dCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBtaXNzaW5nCi1GQUlM
IERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChGaWxlKSBhc3Nl
cnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJEYXRhVHJh
bnNmZXJJdGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBt
aXNzaW5nCi1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIHJl
bW92ZSh1bnNpZ25lZCBsb25nKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhh
dmUgb3duIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkg
IkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBtaXNzaW5nCi1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0
IGludGVyZmFjZTogb3BlcmF0aW9uIGNsZWFyKCkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBk
b2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVk
IHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgbWlzc2luZworUEFTUyBEYXRhVHJhbnNm
ZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZh
Y2Ugb2JqZWN0IAorUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2Ugb2JqZWN0IGxl
bmd0aCAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlIG9iamVjdCBuYW1lIAor
UEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCAKK1BBU1MgRGF0YVRyYW5zZmVySXRl
bUxpc3QgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHBy
b3RvdHlwZSBvYmplY3QncyAiY29uc3RydWN0b3IiIHByb3BlcnR5IAorUEFTUyBEYXRhVHJhbnNm
ZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBsZW5ndGggCitGQUlMIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0IGludGVyZmFjZTogb3BlcmF0aW9uIGFkZChET01TdHJpbmcsRE9NU3RyaW5nKSBh
c3NlcnRfZXF1YWxzOiBwcm9wZXJ0eSBoYXMgd3JvbmcgLmxlbmd0aCBleHBlY3RlZCAxIGJ1dCBn
b3QgMAorRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGQo
RmlsZSkgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQg
MSBidXQgZ290IDAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBvcGVyYXRp
b24gcmVtb3ZlKHVuc2lnbmVkIGxvbmcpIAorUEFTUyBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRl
cmZhY2U6IG9wZXJhdGlvbiBjbGVhcigpIAogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJh
bnNmZXItaXRlbXMtZHJvcC1wbGFpbnRleHQtZmlsZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1k
cm9wLXBsYWludGV4dC1maWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE2IEBACitUaGlzIHRlc3RzIGFjY2Vzc2luZyBEYXRhVHJhbnNmZXJJdGVtTGlzdCB3aGVuIGRy
b3BwaW5nIGEgZmlsZS4gVG8gbWFudWFsbHkgdGVzdCwgZHJhZyBhbmQgZHJvcCBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQgZnJvbSBhbm90aGVy
IGFwcCAoZS5nLiBGaW5kZXIpIHRvIHRoZSBib3ggYmVsb3cuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworCitQQVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMgMQorUEFTUyBk
YXRhVHJhbnNmZXIuaXRlbXNbMF0ua2luZCBpcyAiZmlsZSIKK1BBU1MgZGF0YVRyYW5zZmVyLml0
ZW1zWzBdLnR5cGUgaXMgInRleHQvcGxhaW4iCitQQVNTIGZpbGUgPSBkYXRhVHJhbnNmZXIuaXRl
bXNbMF0uZ2V0QXNGaWxlKCk7IGZpbGUgaXMgbm90IG51bGwKK1BBU1MgZmlsZS5uYW1lIGlzICJ0
ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQiCitQQVNTIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7
IHJlYWRlci5vbmxvYWQgPSAoKSA9PiBjaGVja0ZpbGVDb250ZW50KHJlYWRlci5yZXN1bHQpOyBy
ZWFkZXIucmVhZEFzVGV4dChmaWxlKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTICJo
ZWxsbywgd29ybGQuIiBpcyAiaGVsbG8sIHdvcmxkLiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZp
bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlv
bignVGhpcyB0ZXN0cyBhY2Nlc3NpbmcgRGF0YVRyYW5zZmVySXRlbUxpc3Qgd2hlbiBkcm9wcGlu
ZyBhIGZpbGUuJworICAgICsgJyBUbyBtYW51YWxseSB0ZXN0LCBkcmFnIGFuZCBkcm9wIDxhIGhy
ZWY9Ii4uL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQiPkxheW91dFRlc3RzL2Vk
aXRpbmcvcmVzb3VyY2VzL3RleHQtcGFzdGVib2FyZC1kYXRhLnR4dDwvYT4gZnJvbSBhbm90aGVy
IGFwcCAoZS5nLiBGaW5kZXIpIHRvIHRoZSBib3ggYmVsb3cuJyk7CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRl
ci5iZWdpbkRyYWdXaXRoRmlsZXMnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWyIu
Li9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRhdGEudHh0Il0pOworICAgIGNvbnN0IHRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh0YXJnZXQub2Zmc2V0TGVmdCArIDUsIHRhcmdldC5vZmZzZXRUb3AgKyA1KTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGRyb3AoZXZlbnQpCit7
CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBldmVudC5k
YXRhVHJhbnNmZXI7CisgICAgc2hvdWxkQmUoJ2RhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGgnLCAn
MScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZGF0YVRyYW5zZmVyLml0ZW1zWzBdLmtp
bmQnLCAnZmlsZScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZGF0YVRyYW5zZmVyLml0
ZW1zWzBdLnR5cGUnLCAndGV4dC9wbGFpbicpOworICAgIHNob3VsZE5vdEJlKCdmaWxlID0gZGF0
YVRyYW5zZmVyLml0ZW1zWzBdLmdldEFzRmlsZSgpOyBmaWxlJywgJ251bGwnKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ZpbGUubmFtZScsICd0ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQn
KTsKKyAgICBzaG91bGROb3RUaHJvdygncmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsgcmVhZGVy
Lm9ubG9hZCA9ICgpID0+IGNoZWNrRmlsZUNvbnRlbnQocmVhZGVyLnJlc3VsdCk7IHJlYWRlci5y
ZWFkQXNUZXh0KGZpbGUpOycpOworfQorCitmdW5jdGlvbiBjaGVja0ZpbGVDb250ZW50KGNvbnRl
bnQpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCciJyArIGNvbnRlbnQgKyAnIicsICdo
ZWxsbywgd29ybGQuJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2IGlk
PSJ0YXJnZXQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgb25kcm9wPSJkcm9wKGV2ZW50KSIgc3R5
bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiBzb2xpZCAxcHggYmxhY2s7
Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtcGFzdGUtcGxhaW50ZXh0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLXBhc3RlLXBsYWludGV4dC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFp
bnRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMg
dGVzdHMgZGF0YVRyYW5zZmVyLml0ZW1zLiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayBvbiAiQ29w
eSB0ZXh0IiBhbmQgcGFzdGUgKENvbW1hbmQrViBvbiBNYWMgQ29udHJvbCtWIGVsc2V3aGVyZSku
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNsaXBib2FyZERhdGEuaXRl
bXMubGVuZ3RoIGlzIDEKK1BBU1MgY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5raW5kIGlzICJzdHJp
bmciCitQQVNTIGNsaXBib2FyZERhdGEuaXRlbXNbMF0udHlwZSBpcyAidGV4dC9wbGFpbiIKK1BB
U1MgY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5nZXRBc0ZpbGUoKSBpcyBudWxsCitQQVNTIGNsaXBi
b2FyZERhdGEuaXRlbXNbMF0uZ2V0QXNTdHJpbmcoY2hlY2tDb250ZW50KSBpcyB1bmRlZmluZWQK
K1BBU1MgImhlbGxvLCB3b3JsZCIgaXMgImhlbGxvLCB3b3JsZCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLXBhc3RlLXBsYWludGV4dC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aXRlbXMtcGFzdGUtcGxhaW50ZXh0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGRhdGFUcmFuc2Zl
ci5pdGVtcy4gVG8gbWFudWFsbHkgdGVzdCwgY2xpY2sgb24gIkNvcHkgdGV4dCIgYW5kIHBhc3Rl
IChDb21tYW5kK1Ygb24gTWFjIENvbnRyb2wrViBlbHNld2hlcmUpLicpOworCitmdW5jdGlvbiBj
b3B5VGV4dCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpLnN0eWxl
LmRpc3BsYXkgPSBudWxsOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2UnKS5m
b2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnLCBmYWxzZSwgbnVs
bCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0NvcHknLCBmYWxzZSwgbnVsbCk7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLmZvY3VzKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCdQYXN0
ZScsIG51bGwpOworfQorCitmdW5jdGlvbiBwYXN0ZShldmVudCkKK3sKKyAgICBjbGlwYm9hcmRE
YXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTsKKyAgICBzaG91bGRCZSgnY2xpcGJvYXJkRGF0YS5p
dGVtcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2xpcGJvYXJk
RGF0YS5pdGVtc1swXS5raW5kJywgJ3N0cmluZycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygnY2xpcGJvYXJkRGF0YS5pdGVtc1swXS50eXBlJywgJ3RleHQvcGxhaW4nKTsKKyAgICBzaG91
bGRCZSgnY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5nZXRBc0ZpbGUoKScsICdudWxsJyk7CisgICAg
c2hvdWxkQmUoJ2NsaXBib2FyZERhdGEuaXRlbXNbMF0uZ2V0QXNTdHJpbmcoY2hlY2tDb250ZW50
KScsICd1bmRlZmluZWQnKTsKK30KKworZnVuY3Rpb24gY2hlY2tDb250ZW50KGNvbnRlbnQpCit7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCciJyArIGNvbnRlbnQgKyAnIicsICdoZWxsbywg
d29ybGQnKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5bGUu
ZGlzcGxheSA9ICdub25lJzsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgIHdpbmRvdy5vbmxvYWQgPSBjb3B5VGV4dDsKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8ZGl2IGlk
PSJjb250YWluZXIiPgorICAgIDxidXR0b24gb25jbGljaz0iY29weVRleHQoKTsiPkNvcHkgdGV4
dDwvYnV0dG9uPgorICAgIDxkaXYgaWQ9InNvdXJjZSIgY29udGVudGVkaXRhYmxlPSJ0cnVlIiBz
dHlsZT0iZGlzcGxheTogbm9uZSI+aGVsbG8sIHdvcmxkPC9kaXY+CisgICAgPGRpdiBpZD0idGFy
Z2V0IiBjb250ZW50ZWRpdGFibGU9InRydWUiIG9ucGFzdGU9InBhc3RlKGV2ZW50KSI+PC9kaXY+
Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcmVz
b3VyY2VzL3RleHQtcGFzdGVib2FyZC1kYXRhLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQJKG5vbmV4aXN0ZW50
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRhdGEu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK2hlbGxvLCB3b3JsZC4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjA3NTQpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMTYgQEAgUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zl
ckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5
KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNm
ZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcp
Lmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRl
bUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blBy
b3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24g
MjIwNzU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMJKHdv
cmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRhdGlv
bgogZmFzdC9jYW52YXMvY2FudmFzLXRvRGF0YVVSTC13ZWJwLmh0bWwKIAogIyBEcmFnLWFuZC1k
cm9wIGlzIG5vdCBzdXBwb3J0ZWQ6CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFu
c2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2RyYWct
bGluay13aXRoLWRhdGEtdHJhbnNmZXItYWRkcy10cnVzdGVkLWxpbmstdG8tcGFzdGVib2FyZC5o
dG1sCiBmYXN0L2V2ZW50cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAogZmFz
dC9ldmVudHMvY2xlYXItZHJhZy1zdGF0ZS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtZWxjYXBpdGFuLXdrMi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtZWxj
YXBpdGFuLXdrMi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMjIwNzU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWVsY2Fw
aXRhbi13azIvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxz
ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0
ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5KCdn
ZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJ
dGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhh
c093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHko
J3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxp
c3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blByb3Bl
cnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtZWxjYXBpdGFuL2pzL2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy1lbGNhcGl0YW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmli
dXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMDc1NCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1lbGNhcGl0YW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsMTYgQEAgUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQn
KSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blBy
b3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMg
ZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRh
VHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUg
aXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVt
TGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3du
UHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNl
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5z
ZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhh
c093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZh
bHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS13azEvanMvZG9t
L2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEtd2sxL2pzL2RvbS9nbG9iYWwt
Y29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjA3NTQpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS13azEvanMvZG9tL2dsb2JhbC1j
b25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5
Myw2ICszOTMsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zl
cicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFs
c2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJh
bnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNm
ZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0
YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5o
YXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxz
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0
YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9i
amVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxp
c3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3
JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFz
T3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtaGlnaHNpZXJyYS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJy
YS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMjIwNzU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTQwOCw2ICs0MDgsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1l
cmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBp
cyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxz
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51bWVy
YWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0Jyku
dmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5
KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRy
YW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25maWd1
cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQnKSBp
cyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Rh
dGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2RvbS9n
bG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjA3
NTQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3Rv
cnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0MDMs
MTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093
blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5j
b25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVy
SXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9w
ZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0n
KS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVy
SXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdE
YXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0
ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVt
ZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUg
aXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNzU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBzdmcv
Y3VzdG9tL3N2Zy1hbGxvd2VkLWluLWRhc2hib2FyZC1vYmplCiBmYXN0L3JlcGFpbnQvb3ZlcmZs
b3ctc2Nyb2xsLXRvdWNoLXJlcGFpbnQuaHRtbCBbIFNraXAgXQogCiAjIFRPRE8gRHJhZyAmIERy
b3AgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBpbiBEUlQgPHJkYXI6Ly81NjIxMjQ0PgorZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLmh0bWwK
IGZhc3QvZXZlbnRzL2Ryb3AtaGFuZGxlci1zaG91bGQtbm90LXN0b3AtbmF2aWdhdGUuaHRtbCBb
IFNraXAgXQogZmFzdC9ldmVudHMvZHJhZy1pbi1mcmFtZXMuaHRtbCBbIFNraXAgXQogZmFzdC9l
dmVudHMvZHJhZy10by1uYXZpZ2F0ZS5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNzU0KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTU2
Myw2ICs1NjMsNyBAQCBwbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1ldmVudC1hcGkuCiAK
ICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNlbmRl
ci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3At
cGxhaW50ZXh0LWZpbGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1lZGl0
YWJsZS5odG1sIFsgU2tpcCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxlcy1h
Y2Nlc3MuaHRtbAogZmFzdC9kb20vRmlsZUxpc3QtaXRlcmF0b3IuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd3BlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9qcy9k
b20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MjIwNzU0KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL2pzL2RvbS9nbG9iYWwtY29uc3Ry
dWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsNiAr
MzkzLDE2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG8KIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5o
YXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5lbnVtZXJhYmxlIGlzIGZhbHNlCiBQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVy
JykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRl
bQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuaGFzT3du
UHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmVudW1lcmFibGUgaXMgZmFsc2UKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJ
dGVtJykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLnZhbHVlIGlzIERhdGFUcmFu
c2Zlckl0ZW1MaXN0CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFs
LCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNm
ZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0Jyku
ZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuY29uZmlndXJhYmxlIGlzIHRydWUKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLnZh
bHVlIGlzIERhdGFWaWV3CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnRGF0YVZpZXcnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blBy
b3BlcnR5KCdzZXQnKSBpcyBmYWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318201</attachid>
            <date>2017-08-15 17:10:23 -0700</date>
            <delta_ts>2017-08-15 19:06:54 -0700</delta_ts>
            <desc>Addressed review comments</desc>
            <filename>bug-175596-20170815171022.patch</filename>
            <type>text/plain</type>
            <size>40382</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNzU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTA4LTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAg
IE1ha2UgRGF0YVRyYW5zZmVySXRlbUxpc3Qgd29yayB3aXRoIHBsYWluIHRleHQgZW50cmllcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgRGF0
YVRyYW5zZmVySXRlbSBhcyBhIGNvbW1vbiBpZGVudGlmaWVyIHNpbmNlIGl0J3MgYSBydW50aW1l
IGVuYWJsZWQgZmVhdHVyZS4KKworICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKwogMjAxNy0wOC0xNSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBFbmFibGUgbmFtZWQgb2Zmc2V0cyBpbnRvIEpTQyBieXRlY29kZXMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aAkocmV2aXNpb24gMjIwNzU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAogICAgIG1h
Y3JvKEN1c3RvbUVsZW1lbnRSZWdpc3RyeSkgXAogICAgIG1hY3JvKERhdGUpIFwKICAgICBtYWNy
byhEYXRlVGltZUZvcm1hdCkgXAorICAgIG1hY3JvKERhdGFUcmFuc2Zlckl0ZW0pIFwKICAgICBt
YWNybyhEYXRhVHJhbnNmZXJJdGVtTGlzdCkgXAogICAgIG1hY3JvKERvY3VtZW50VGltZWxpbmUp
IFwKICAgICBtYWNybyhFcnJvcikgXApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNzU3KQor
KysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTctMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB3b3JrIHdpdGggcGxhaW4gdGV4dCBlbnRyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0
aGUgYmFzaWMgbWFjaGluYXJ5IHRvIGdldCB0aGUgbGlzdCBvZiBwbGFpbiB0ZXh0IGl0ZW1zIHRv
IERhdGFUcmFuc2Zlckl0ZW1MaXN0IGFuZCBEYXRhVHJhbnNmZXJJdGVtLgorCisgICAgICAgIEVh
Y2ggRGF0YVRyYW5zZmVySXRlbSBub3cgZGVwZW5kcyBvbiBEYXRhVHJhbnNmZXIgc28gaXQgZG9l
cyByZWYtZm9yd2FyZGluZyBsaWtlIERhdGFUcmFuc2Zlckl0ZW1MaXN0IHRvIG1ha2UKKyAgICAg
ICAgRGF0YVRyYW5zZmVyIGFsaXZlIGFzIGxvbmcgYXMgYW55IERhdGFUcmFuc2Zlckl0ZW0gaXMg
YWxpdmUuCisKKyAgICAgICAgU3BlY2lmaWNhdGlvbnM6IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL2RuZC5odG1sI3RoZS1kYXRhdHJhbnNmZXJpdGVtLWludGVyZmFjZQor
ICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvZG5kLmh0bWwjdGhlLWRhdGF0cmFuc2Zlcml0ZW1saXN0LWludGVyZmFjZQorCisgICAg
ICAgIFRlc3RzOiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxh
aW50ZXh0LWZpbGUuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRtbAorCisgICAgICAgICogZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbTo6RGF0
YVRyYW5zZmVySXRlbSk6IEFkZGVkIHR3byB2YXJpYW50cyBvbmUgZm9yIHBsYWluIHRleHQgYW5k
IGFub3RoZXIgb25lIGZvciBhIGZpbGUuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJ
dGVtOjpraW5kIGNvbnN0KTogUmV3cml0dGVuLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5z
ZmVySXRlbTo6Z2V0QXNTdHJpbmcgY29uc3QpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSBjb25zdCk6IEltcGxlbWVudGVkLgorICAg
ICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJh
bnNmZXJJdGVtOjpyZWYpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlckl0
ZW06OmRlcmVmKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtOjp0
eXBlIGNvbnN0KTogUmV0dXJucyBTdHJpbmcgaW5zdGVhZCBvZiBBdG9taWNTdHJpbmcuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtOjpraW5kIGNvbnN0KTogTW92ZWQgdG8gY3Bw
LgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtLmlkbDogUmVtb3ZlZCBOb0ludGVyZmFj
ZU9iamVjdCBzaW5jZSB0aGUgaW50ZXJmYWNlIG9iamVjdCBzaG91bGQgZXhpc3Qgb24gRE9NV2lu
ZG93LgorICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6bGVuZ3RoKTogSW1wbGVtZW50ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXJJdGVtTGlzdDo6aXRlbSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6aXNTdXBwb3J0ZWRUeXBlKTogQWRkZWQuIEZvciBub3csIHdlIG9ubHkgc3Vw
cG9ydCB0ZXh0L3BsYWluLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVySXRlbUxpc3Q6
OmVuc3VyZUl0ZW1zKTogQWRkZWQuIENvbnN0cnVjdHMgdGhlIGxpc3Qgb2YgRGF0YVRyYW5zZmVy
SXRlbXMuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0Lmg6CisgICAgICAgIChE
YXRhVHJhbnNmZXJJdGVtTGlzdCk6IEFkZGVkIG1faXRlbXMuIFRoZSBsaXN0IGlzIGZpbGxlZCBs
YXppbHkgYnkgZW5zdXJlSXRlbXMuCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmlkbDogUmVtb3ZlZCBOb0ludGVyZmFjZU9iamVjdCBzaW5jZSB0aGUgaW50ZXJmYWNlIG9iamVj
dCBzaG91bGQgZXhpc3Qgb24gRE9NV2luZG93LgorCiAyMDE3LTA4LTE1ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHF1b3RhIGxpbWl0YXRpb24g
Zm9yIGtlZXBhbGl2ZSBGZXRjaCByZXF1ZXN0cwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rh
dGFUcmFuc2Zlckl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRh
VHJhbnNmZXJJdGVtLmNwcAkocmV2aXNpb24gMjIwNzU3KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMiArMzIsMjIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEYXRhVHJhbnNmZXJJdGVtLmgiCiAKLSNp
bmNsdWRlICJCbG9iLmgiCisjaW5jbHVkZSAiRmlsZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTdHJpbmdDYWxsYmFjay5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zlckl0ZW0oKQorRGF0YVRy
YW5zZmVySXRlbTo6RGF0YVRyYW5zZmVySXRlbShEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2Zlciwg
Y29uc3QgU3RyaW5nJiB0eXBlKQorICAgIDogbV9kYXRhVHJhbnNmZXIoZGF0YVRyYW5zZmVyKQor
ICAgICwgbV90eXBlKHR5cGUpCit7Cit9CisKK0RhdGFUcmFuc2Zlckl0ZW06OkRhdGFUcmFuc2Zl
ckl0ZW0oRGF0YVRyYW5zZmVyJiBkYXRhVHJhbnNmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgUmVm
PEZpbGU+JiYgZmlsZSkKKyAgICA6IG1fZGF0YVRyYW5zZmVyKGRhdGFUcmFuc2ZlcikKKyAgICAs
IG1fdHlwZSh0eXBlKQorICAgICwgbV9maWxlKFdURk1vdmUoZmlsZSkpCiB7CiB9CiAKQEAgLTQ1
LDEzICs1NSwyNiBAQCBEYXRhVHJhbnNmZXJJdGVtOjp+RGF0YVRyYW5zZmVySXRlbSgpCiB7CiB9
CiAKLXZvaWQgRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNTdHJpbmcoUmVmUHRyPFN0cmluZ0NhbGxi
YWNrPiYmKSBjb25zdAorU3RyaW5nIERhdGFUcmFuc2Zlckl0ZW06OmtpbmQoKSBjb25zdAogewor
ICAgIHJldHVybiBtX2ZpbGUgPyBBU0NJSUxpdGVyYWwoImZpbGUiKSA6IEFTQ0lJTGl0ZXJhbCgi
c3RyaW5nIik7Cit9CisKK3ZvaWQgRGF0YVRyYW5zZmVySXRlbTo6Z2V0QXNTdHJpbmcoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiYmIGNhbGxi
YWNrKSBjb25zdAoreworICAgIGlmICghY2FsbGJhY2sgfHwgIW1fZGF0YVRyYW5zZmVyLmNhblJl
YWREYXRhKCkgfHwgbV9maWxlKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogTWFr
ZSB0aGlzIGFzeW5jLgorICAgIFN0cmluZyB2YWx1ZSA9IG1fZGF0YVRyYW5zZmVyLmdldERhdGEo
bV90eXBlKTsKKyAgICBjYWxsYmFjay0+c2NoZWR1bGVDYWxsYmFjayhjb250ZXh0LCB2YWx1ZSk7
CiB9CiAKLVJlZlB0cjxCbG9iPiBEYXRhVHJhbnNmZXJJdGVtOjpnZXRBc0ZpbGUoKSBjb25zdAor
UmVmUHRyPEZpbGU+IERhdGFUcmFuc2Zlckl0ZW06OmdldEFzRmlsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG51bGxwdHI7CisgICAgaWYgKCFtX2RhdGFUcmFuc2Zlci5jYW5SZWFkRGF0YSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9maWxlLmNvcHlSZWYoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFU
cmFuc2Zlckl0ZW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbS5oCShyZXZpc2lvbiAyMjA3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyOCArMzEsMzggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJEYXRhVHJhbnNmZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRXcmFw
cGFibGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgQmxvYjsKK2NsYXNzIEZpbGU7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogY2xhc3MgU3RyaW5nQ2FsbGJhY2s7CiAKLWNsYXNzIERhdGFUcmFuc2Zlckl0
ZW0gOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJhbnNmZXJJdGVtPiB7CitjbGFzcyBEYXRhVHJh
bnNmZXJJdGVtIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoRGF0YVRyYW5zZmVySXRlbSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgotICAgIERhdGFUcmFuc2Zlckl0ZW0oKTsKKyAgICBEYXRhVHJhbnNmZXJJdGVtKERhdGFUcmFu
c2ZlciYsIGNvbnN0IFN0cmluZyYpOworICAgIERhdGFUcmFuc2Zlckl0ZW0oRGF0YVRyYW5zZmVy
JiwgY29uc3QgU3RyaW5nJiwgUmVmPEZpbGU+JiYpOwogICAgIH5EYXRhVHJhbnNmZXJJdGVtKCk7
CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7
IH0KLSAgICB2b2lkIGdldEFzU3RyaW5nKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJikgY29uc3Q7
Ci0gICAgUmVmUHRyPEJsb2I+IGdldEFzRmlsZSgpIGNvbnN0OworICAgIC8vIERhdGFUcmFuc2Zl
ciBvd25zIERhdGFUcmFuc2Zlckl0ZW0sIGFuZCBEYXRhVHJhbnNmZXIgaXMga2VwdCBhbGl2ZSBh
cyBsb25nIGFzIERhdGFUcmFuc2Zlckl0ZW0gaXMgYWxpdmUuCisgICAgdm9pZCByZWYoKSB7IG1f
ZGF0YVRyYW5zZmVyLnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIHsgbV9kYXRhVHJhbnNmZXIu
ZGVyZWYoKTsgfQorCisgICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKKyAgICBjb25zdCBTdHJpbmcm
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIGdldEFzU3RyaW5nKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+JiYpIGNvbnN0Owor
ICAgIFJlZlB0cjxGaWxlPiBnZXRBc0ZpbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBBdG9t
aWNTdHJpbmcgbV9raW5kOwotICAgIEF0b21pY1N0cmluZyBtX3R5cGU7CisgICAgRGF0YVRyYW5z
ZmVyJiBtX2RhdGFUcmFuc2ZlcjsKKyAgICBjb25zdCBTdHJpbmcgbV90eXBlOworICAgIFJlZlB0
cjxGaWxlPiBtX2ZpbGU7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVySXRlbS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlckl0ZW0uaWRsCShyZXZpc2lvbiAyMjA3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVySXRlbS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE0ICszMCwxMyBAQAogICov
CiAKIFsKLSAgICBOb0ludGVyZmFjZU9iamVjdCwKICAgICBFbmFibGVkQXRSdW50aW1lPURhdGFU
cmFuc2Zlckl0ZW1zLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFj
ZSBEYXRhVHJhbnNmZXJJdGVtIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtp
bmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0eXBlOwogCi0gICAgdm9pZCBn
ZXRBc1N0cmluZyhvcHRpb25hbCBTdHJpbmdDYWxsYmFjaz8gY2FsbGJhY2spOwotICAgIEJsb2Ig
Z2V0QXNGaWxlKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQg
Z2V0QXNTdHJpbmcoU3RyaW5nQ2FsbGJhY2s/IGNhbGxiYWNrKTsKKyAgICBGaWxlIGdldEFzRmls
ZSgpOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlckl0ZW1MaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxp
c3QuY3BwCShyZXZpc2lvbiAyMjA3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5z
ZmVySXRlbUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsMjEgQEAKICNpbmNs
dWRlICJEYXRhVHJhbnNmZXJJdGVtTGlzdC5oIgogCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVySXRl
bS5oIgorI2luY2x1ZGUgIkZpbGVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdW5z
aWduZWQgRGF0YVRyYW5zZmVySXRlbUxpc3Q6Omxlbmd0aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIGVuc3VyZUl0ZW1zKCkuc2l6ZSgpOwogfQogCi1SZWZQdHI8RGF0YVRy
YW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6Oml0ZW0odW5zaWduZWQpCitSZWZQdHI8
RGF0YVRyYW5zZmVySXRlbT4gRGF0YVRyYW5zZmVySXRlbUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5k
ZXgpCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byYgaXRlbXMgPSBlbnN1cmVJdGVt
cygpOworICAgIGlmIChpdGVtcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBpdGVtc1tpbmRleF0uZ2V0KCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZv
aWQ+IERhdGFUcmFuc2Zlckl0ZW1MaXN0OjphZGQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKQEAgLTU3LDUgKzYxLDM2IEBAIHZvaWQgRGF0YVRyYW5zZmVySXRlbUxpc3Q6OmNsZWFyKCkK
IHsKIH0KIAorLy8gRklYTUU6IERhdGFUcmFuc2ZlciBzaG91bGQgZmlsdGVyIHR5cGVzIGl0c2Vs
Zi4KK3N0YXRpYyBib29sIGlzU3VwcG9ydGVkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodHlwZSwgInRleHQvcGxhaW4iKTsKK30K
KworVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEYXRhVHJhbnNmZXJJdGVtPj4mIERhdGFUcmFuc2Zl
ckl0ZW1MaXN0OjplbnN1cmVJdGVtcygpIGNvbnN0Cit7CisgICAgaWYgKG1faXRlbXMpCisgICAg
ICAgIHJldHVybiAqbV9pdGVtczsKKworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGF0YVRy
YW5zZmVySXRlbT4+IGl0ZW1zOworICAgIGZvciAoU3RyaW5nJiB0eXBlIDogbV9kYXRhVHJhbnNm
ZXIudHlwZXMoKSkgeworICAgICAgICBpZiAoaXNTdXBwb3J0ZWRUeXBlKHR5cGUpKQorICAgICAg
ICAgICAgaXRlbXMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8RGF0YVRyYW5zZmVySXRlbT4obV9k
YXRhVHJhbnNmZXIsIHR5cGUpKTsKKyAgICB9CisKKyAgICBGaWxlTGlzdCYgZmlsZXMgPSBtX2Rh
dGFUcmFuc2Zlci5maWxlcygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IGZp
bGVzLmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgRmlsZSYgZmlsZSA9ICpm
aWxlcy5pdGVtKGkpOworICAgICAgICBTdHJpbmcgdHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9y
RmlsZShmaWxlLnBhdGgoKSk7CisgICAgICAgIGlmIChpc1N1cHBvcnRlZFR5cGUodHlwZSkpCisg
ICAgICAgICAgICBpdGVtcy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxEYXRhVHJhbnNmZXJJdGVt
PihtX2RhdGFUcmFuc2ZlciwgdHlwZSwgZmlsZSkpOworICAgIH0KKworCisgICAgbV9pdGVtcyA9
IFdURk1vdmUoaXRlbXMpOworCisgICAgcmV0dXJuICptX2l0ZW1zOworfQorCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXJJdGVtTGlzdC5oCShyZXZpc2lvbiAyMjA3
NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsMTYgKzMyLDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRh
dGFUcmFuc2Zlci5oIgorI2luY2x1ZGUgIkRhdGFUcmFuc2Zlckl0ZW0uaCIKICNpbmNsdWRlICJF
eGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBEYXRhVHJhbnNmZXJJdGVtOwogY2xhc3MgRmlsZTsKIAotY2xhc3Mg
RGF0YVRyYW5zZmVySXRlbUxpc3QgeworY2xhc3MgRGF0YVRyYW5zZmVySXRlbUxpc3QgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhVHJhbnNm
ZXJJdGVtTGlzdCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIERhdGFU
cmFuc2Zlckl0ZW1MaXN0KERhdGFUcmFuc2ZlciYgZGF0YVRyYW5zZmVyKQpAQCAtNjEsNyArNjIs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogcHJpdmF0ZToKKyAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPERhdGFUcmFuc2Zlckl0ZW0+PiYgZW5zdXJlSXRlbXMoKSBjb25zdDsK
KwogICAgIERhdGFUcmFuc2ZlciYgbV9kYXRhVHJhbnNmZXI7CisgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGF0YVRyYW5zZmVySXRlbT4+PiBtX2l0ZW1z
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RhdGFUcmFuc2Zlckl0ZW1MaXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCShyZXZpc2lvbiAyMjA3NTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw2IEBACiAgKi8KIAogWwotICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogICAgIEVuYWJs
ZWRBdFJ1bnRpbWU9RGF0YVRyYW5zZmVySXRlbXMsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwNzU3
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTctMDgtMTUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBEYXRhVHJhbnNmZXJJdGVtTGlzdCB3b3JrIHdpdGggcGxhaW4gdGV4dCBlbnRyaWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2Vs
aW5lZCB0aGUgdGVzdHMgYW5kIGFkZGVkIHR3byByZWdyZXNzaW9uIHRlc3RzIGZvciBwYXN0aW5n
IHBsYWluIHRleHQgYW5kIGRyb3BwaW5nIGEgcGxhaW4gdGV4dCBmaWxlLgorCisgICAgICAgIFVu
Zm9ydHVuYXRlbHksIGRyb3BwaW5nIGEgZmlsZSBpcyBvbmx5IHN1cHBvcnRlZCBieSBEdW1wUmVu
ZGVyVHJlZSBvbiBNYWMgOiggc28gaXQncyBkaXNhYmxlZCBlbHNld2hlcmUuCisKKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1leHBlY3RlZC50eHQ6IFJlYmFz
ZWxpbmVkIG5vdyB0aGF0IE5vSW50ZXJmYWNlT2JqZWN0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbQor
ICAgICAgICBEYXRhVHJhbnNmZXJJdGVtLmlkbCBhbmQgRGF0YVRyYW5zZmVySXRlbUxpc3QuaWRs
IGFzIGV4cGVjdGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXIt
aWRsLmh0bWw6IEZpeGVkIHRoZSBidWcgdGhhdCBpdCB3YXNuJ3QgdGVzdGluZyBJREwgZm9yIERh
dGFUcmFuc2Zlckl0ZW0uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1m
aWxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtcGFzdGUtcGxhaW50ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRh
dGEudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25z
dHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLWVsY2FwaXRhbi13azIv
anMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjLWVsY2FwaXRhbi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1h
dHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtaGlnaHNpZXJy
YS13azEvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvanMvZG9tL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2pz
L2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9qcy9kb20vZ2xvYmFs
LWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0wOC0xNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBxdW90YSBs
aW1pdGF0aW9uIGZvciBrZWVwYWxpdmUgRmV0Y2ggcmVxdWVzdHMKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWlkbC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMDc1NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyNTE6IGNhbGxiYWNrIG5vdCB5ZXQg
c3VwcG9ydGVkCiAKIFBBU1MgRGF0YVRyYW5zZmVyIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBw
cm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZh
Y2Ugb2JqZWN0IGxlbmd0aCAKQEAgLTEzLDE0ICsxNCwyMyBAQCBQQVNTIERhdGFUcmFuc2ZlciBp
bnRlcmZhY2U6IG9wZXJhdGlvbiBnCiBQQVNTIERhdGFUcmFuc2ZlciBpbnRlcmZhY2U6IG9wZXJh
dGlvbiBzZXREYXRhKERPTVN0cmluZyxET01TdHJpbmcpIAogUEFTUyBEYXRhVHJhbnNmZXIgaW50
ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXJEYXRhKERPTVN0cmluZykgCiBQQVNTIERhdGFUcmFuc2Zl
ciBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBmaWxlcyAKLUZBSUwgRGF0YVRyYW5zZmVySXRlbUxpc3Qg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBh
c3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJEYXRh
VHJhbnNmZXJJdGVtTGlzdCIgZXhwZWN0ZWQgcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0
IiBtaXNzaW5nCi1GQUlMIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZSBvYmplY3QgbGVu
Z3RoIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkg
IkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBleHBlY3RlZCBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRl
bUxpc3QiIG1pc3NpbmcKLUZBSUwgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlIG9iamVj
dCBuYW1lIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVy
dHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBleHBlY3RlZCBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVy
SXRlbUxpc3QiIG1pc3NpbmcKLUZBSUwgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBl
eGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgYXNz
ZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0YVRy
YW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIg
bWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBw
cm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJh
bnNmZXJJdGVtTGlzdCIgbWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZh
Y2U6IGF0dHJpYnV0ZSBsZW5ndGggYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5
ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgbWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlz
dCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGQoRE9NU3RyaW5nLERPTVN0cmluZykgYXNzZXJ0X293
bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVy
SXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgbWlzc2lu
ZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGQoRmls
ZSkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAi
RGF0YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHByb3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVt
TGlzdCIgbWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJh
dGlvbiByZW1vdmUodW5zaWduZWQgbG9uZykgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2Vz
IG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIGV4cGVjdGVkIHBy
b3BlcnR5ICJEYXRhVHJhbnNmZXJJdGVtTGlzdCIgbWlzc2luZwotRkFJTCBEYXRhVHJhbnNmZXJJ
dGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBjbGVhcigpIGFzc2VydF9vd25fcHJvcGVydHk6
IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiBl
eHBlY3RlZCBwcm9wZXJ0eSAiRGF0YVRyYW5zZmVySXRlbUxpc3QiIG1pc3NpbmcKK1BBU1MgRGF0
YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2Yg
aW50ZXJmYWNlIG9iamVjdCAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlIG9i
amVjdCBsZW5ndGggCitQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZSBvYmplY3Qg
bmFtZSAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5k
IHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgCitQQVNTIERhdGFUcmFu
c2Zlckl0ZW1MaXN0IGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSAKK1BBU1MgRGF0
YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgbGVuZ3RoIAorRkFJTCBEYXRh
VHJhbnNmZXJJdGVtTGlzdCBpbnRlcmZhY2U6IG9wZXJhdGlvbiBhZGQoRE9NU3RyaW5nLERPTVN0
cmluZykgYXNzZXJ0X2VxdWFsczogcHJvcGVydHkgaGFzIHdyb25nIC5sZW5ndGggZXhwZWN0ZWQg
MSBidXQgZ290IDAKK0ZBSUwgRGF0YVRyYW5zZmVySXRlbUxpc3QgaW50ZXJmYWNlOiBvcGVyYXRp
b24gYWRkKEZpbGUpIGFzc2VydF9lcXVhbHM6IHByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIGV4
cGVjdGVkIDEgYnV0IGdvdCAwCitQQVNTIERhdGFUcmFuc2Zlckl0ZW1MaXN0IGludGVyZmFjZTog
b3BlcmF0aW9uIHJlbW92ZSh1bnNpZ25lZCBsb25nKSAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbUxp
c3QgaW50ZXJmYWNlOiBvcGVyYXRpb24gY2xlYXIoKSAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbSBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IAor
UEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIAorUEFTUyBEYXRh
VHJhbnNmZXJJdGVtIGludGVyZmFjZSBvYmplY3QgbmFtZSAKK1BBU1MgRGF0YVRyYW5zZmVySXRl
bSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBh
bmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3Rv
ciIgcHJvcGVydHkgCitQQVNTIERhdGFUcmFuc2Zlckl0ZW0gaW50ZXJmYWNlOiBhdHRyaWJ1dGUg
a2luZCAKK1BBU1MgRGF0YVRyYW5zZmVySXRlbSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSB0eXBlIAor
UEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTogb3BlcmF0aW9uIGdldEFzU3RyaW5nKEZ1
bmN0aW9uU3RyaW5nQ2FsbGJhY2spIAorUEFTUyBEYXRhVHJhbnNmZXJJdGVtIGludGVyZmFjZTog
b3BlcmF0aW9uIGdldEFzRmlsZSgpIAogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvZGF0YXRyYW5zZmVyLWlkbC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwJKHJldmlzaW9uIDIyMDc1NykK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaWRsLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgaW50ZXJmYWNlIERhdGFUcmFuc2Zlckl0
ZW1MaXN0IHsKIGludGVyZmFjZSBEYXRhVHJhbnNmZXJJdGVtIHsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
eXBlOwotICAgIHZvaWQgZ2V0QXNTdHJpbmcoRnVuY3Rpb25TdHJpbmdDYWxsYmFjaz8gX2NhbGxi
YWNrKTsKKyAgICB2b2lkIGdldEFzU3RyaW5nKEZ1bmN0aW9uU3RyaW5nQ2FsbGJhY2s/IGNhbGxi
YWNrKTsKICAgICBGaWxlPyBnZXRBc0ZpbGUoKTsKIH07CiAKQEAgLTQ4LDEzICs0OCwxMSBAQCBj
YWxsYmFjayBGdW5jdGlvblN0cmluZ0NhbGxiYWNrID0gdm9pZCAoCiA8c2NyaXB0PgogdmFyIGlk
bHNBcnJheSA9IG5ldyBJZGxBcnJheSgpOwogdmFyIGlkbCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJkYXRhdHJhbnNmZXItaWRsIikudGV4dENvbnRlbnQKLSAgICArIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkYXRhdHJhbnNmZXJpdGVtbGlzdC1pZGwiKS50ZXh0Q29udGVudDsKKyAgICAr
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkYXRhdHJhbnNmZXJpdGVtbGlzdC1pZGwiKS50ZXh0
Q29udGVudAogICAgICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRhdGF0cmFuc2Zlcml0ZW0t
aWRsIikudGV4dENvbnRlbnQ7CiAKIGlkbHNBcnJheS5hZGRfaWRscyhpZGwpOwogaWRsc0FycmF5
LmFkZF91bnRlc3RlZF9pZGxzKCJpbnRlcmZhY2UgRWxlbWVudCB7fTsiKTsKLS8vaWRsc0FycmF5
LmFkZF91bnRlc3RlZF9pZGxzKCJpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW0ge307Iik7Ci0vL2lk
bHNBcnJheS5hZGRfb2JqZWN0cyh7IFJlc3BvbnNlOiBbJ25ldyBSZXNwb25zZSgpJ10gfSk7CiBp
ZGxzQXJyYXkudGVzdCgpOwogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhdHJhbnNmZXItaXRlbXMtZHJvcC1wbGFpbnRleHQtZmlsZS1leHBlY3RlZC50eHQJKG5v
bmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zl
ci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDE3IEBACitUaGlzIHRlc3RzIGFjY2Vzc2luZyBEYXRhVHJhbnNmZXJJdGVtTGlz
dCB3aGVuIGRyb3BwaW5nIGEgZmlsZS4gVG8gbWFudWFsbHkgdGVzdCwgZHJhZyBhbmQgZHJvcCBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQgZnJv
bSBhbm90aGVyIGFwcCAoZS5nLiBGaW5kZXIpIHRvIHRoZSBib3ggYmVsb3cuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGRhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGggaXMg
MQorUEFTUyBkYXRhVHJhbnNmZXIuaXRlbXNbMF0ua2luZCBpcyAiZmlsZSIKK1BBU1MgZGF0YVRy
YW5zZmVyLml0ZW1zWzBdLnR5cGUgaXMgInRleHQvcGxhaW4iCitQQVNTIGZpbGUgPSBkYXRhVHJh
bnNmZXIuaXRlbXNbMF0uZ2V0QXNGaWxlKCk7IGZpbGUgaXMgbm90IG51bGwKK1BBU1MgZmlsZS5u
YW1lIGlzICJ0ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQiCitQQVNTIHJlYWRlciA9IG5ldyBGaWxl
UmVhZGVyKCk7IHJlYWRlci5vbmxvYWQgPSAoKSA9PiBjaGVja0ZpbGVDb250ZW50KHJlYWRlci5y
ZXN1bHQpOyByZWFkZXIucmVhZEFzVGV4dChmaWxlKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTICJoZWxsbywgd29ybGQuIiBpcyAiaGVsbG8sIHdvcmxkLiIKK1BBU1MgZGF0YVRyYW5z
ZmVyLml0ZW1zWzBdLmdldEFzRmlsZSgpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0
ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZp
bGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlv
bignVGhpcyB0ZXN0cyBhY2Nlc3NpbmcgRGF0YVRyYW5zZmVySXRlbUxpc3Qgd2hlbiBkcm9wcGlu
ZyBhIGZpbGUuJworICAgICsgJyBUbyBtYW51YWxseSB0ZXN0LCBkcmFnIGFuZCBkcm9wIDxhIGhy
ZWY9Ii4uL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQiPkxheW91dFRlc3RzL2Vk
aXRpbmcvcmVzb3VyY2VzL3RleHQtcGFzdGVib2FyZC1kYXRhLnR4dDwvYT4gZnJvbSBhbm90aGVy
IGFwcCAoZS5nLiBGaW5kZXIpIHRvIHRoZSBib3ggYmVsb3cuJyk7CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ1RoaXMgdGVzdCByZXF1aXJlcyBldmVudFNlbmRl
ci5iZWdpbkRyYWdXaXRoRmlsZXMnKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoWyIu
Li9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRhdGEudHh0Il0pOworICAgIGNvbnN0IHRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh0YXJnZXQub2Zmc2V0TGVmdCArIDUsIHRhcmdldC5vZmZzZXRUb3AgKyA1KTsK
KyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7Cit9CisKK2Z1bmN0aW9uIGRyb3AoZXZlbnQpCit7
CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICBkYXRhVHJhbnNmZXIgPSBldmVudC5k
YXRhVHJhbnNmZXI7CisgICAgc2hvdWxkQmUoJ2RhdGFUcmFuc2Zlci5pdGVtcy5sZW5ndGgnLCAn
MScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZGF0YVRyYW5zZmVyLml0ZW1zWzBdLmtp
bmQnLCAnZmlsZScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZGF0YVRyYW5zZmVyLml0
ZW1zWzBdLnR5cGUnLCAndGV4dC9wbGFpbicpOworICAgIHNob3VsZE5vdEJlKCdmaWxlID0gZGF0
YVRyYW5zZmVyLml0ZW1zWzBdLmdldEFzRmlsZSgpOyBmaWxlJywgJ251bGwnKTsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2ZpbGUubmFtZScsICd0ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQn
KTsKKyAgICBzaG91bGROb3RUaHJvdygncmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsgcmVhZGVy
Lm9ubG9hZCA9ICgpID0+IGNoZWNrRmlsZUNvbnRlbnQocmVhZGVyLnJlc3VsdCk7IHJlYWRlci5y
ZWFkQXNUZXh0KGZpbGUpOycpOworfQorCitmdW5jdGlvbiBjaGVja0ZpbGVDb250ZW50KGNvbnRl
bnQpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCciJyArIGNvbnRlbnQgKyAnIicsICdo
ZWxsbywgd29ybGQuJyk7CisgICAgc2hvdWxkQmUoJ2RhdGFUcmFuc2Zlci5pdGVtc1swXS5nZXRB
c0ZpbGUoKScsICdudWxsJyk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2
IGlkPSJ0YXJnZXQiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgb25kcm9wPSJkcm9wKGV2ZW50KSIg
c3R5bGU9IndpZHRoOiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYm9yZGVyOiBzb2xpZCAxcHggYmxh
Y2s7Ij48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhdHJhbnNmZXItaXRlbXMtcGFzdGUtcGxhaW50ZXh0LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5z
ZmVyLWl0ZW1zLXBhc3RlLXBsYWludGV4dC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0ZS1w
bGFpbnRleHQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUgQEAKK1Ro
aXMgdGVzdHMgZGF0YVRyYW5zZmVyLml0ZW1zLiBUbyBtYW51YWxseSB0ZXN0LCBjbGljayBvbiAi
Q29weSB0ZXh0IiBhbmQgcGFzdGUgKENvbW1hbmQrViBvbiBNYWMgQ29udHJvbCtWIGVsc2V3aGVy
ZSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGNsaXBib2FyZERhdGEu
aXRlbXMubGVuZ3RoIGlzIDEKK1BBU1MgY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5raW5kIGlzICJz
dHJpbmciCitQQVNTIGNsaXBib2FyZERhdGEuaXRlbXNbMF0udHlwZSBpcyAidGV4dC9wbGFpbiIK
K1BBU1MgY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5nZXRBc0ZpbGUoKSBpcyBudWxsCitQQVNTIGNs
aXBib2FyZERhdGEuaXRlbXNbMF0uZ2V0QXNTdHJpbmcoY2hlY2tDb250ZW50KSBpcyB1bmRlZmlu
ZWQKK1BBU1MgImhlbGxvLCB3b3JsZCIgaXMgImhlbGxvLCB3b3JsZCIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLXBhc3RlLXBsYWludGV4dC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhdHJhbnNm
ZXItaXRlbXMtcGFzdGUtcGxhaW50ZXh0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGRhdGFUcmFu
c2Zlci5pdGVtcy4gVG8gbWFudWFsbHkgdGVzdCwgY2xpY2sgb24gIkNvcHkgdGV4dCIgYW5kIHBh
c3RlIChDb21tYW5kK1Ygb24gTWFjIENvbnRyb2wrViBlbHNld2hlcmUpLicpOworCitmdW5jdGlv
biBjb3B5VGV4dCgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpLnN0
eWxlLmRpc3BsYXkgPSBudWxsOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzb3VyY2Un
KS5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnLCBmYWxzZSwg
bnVsbCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ0NvcHknLCBmYWxzZSwgbnVsbCk7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NvdXJjZScpLnN0eWxlLmRpc3BsYXkgPSAnbm9u
ZSc7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhcmdldCcpLmZvY3VzKCk7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLmV4ZWNDb21tYW5kKCdQ
YXN0ZScsIG51bGwpOworfQorCitmdW5jdGlvbiBwYXN0ZShldmVudCkKK3sKKyAgICBjbGlwYm9h
cmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTsKKyAgICBzaG91bGRCZSgnY2xpcGJvYXJkRGF0
YS5pdGVtcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnY2xpcGJv
YXJkRGF0YS5pdGVtc1swXS5raW5kJywgJ3N0cmluZycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnY2xpcGJvYXJkRGF0YS5pdGVtc1swXS50eXBlJywgJ3RleHQvcGxhaW4nKTsKKyAgICBz
aG91bGRCZSgnY2xpcGJvYXJkRGF0YS5pdGVtc1swXS5nZXRBc0ZpbGUoKScsICdudWxsJyk7Cisg
ICAgc2hvdWxkQmUoJ2NsaXBib2FyZERhdGEuaXRlbXNbMF0uZ2V0QXNTdHJpbmcoY2hlY2tDb250
ZW50KScsICd1bmRlZmluZWQnKTsKK30KKworZnVuY3Rpb24gY2hlY2tDb250ZW50KGNvbnRlbnQp
Cit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCciJyArIGNvbnRlbnQgKyAnIicsICdoZWxs
bywgd29ybGQnKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29udGFpbmVyJykuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHdpbmRvdy5vbmxvYWQgPSBjb3B5VGV4dDsKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8ZGl2
IGlkPSJjb250YWluZXIiPgorICAgIDxidXR0b24gb25jbGljaz0iY29weVRleHQoKTsiPkNvcHkg
dGV4dDwvYnV0dG9uPgorICAgIDxkaXYgaWQ9InNvdXJjZSIgY29udGVudGVkaXRhYmxlPSJ0cnVl
IiBzdHlsZT0iZGlzcGxheTogbm9uZSI+aGVsbG8sIHdvcmxkPC9kaXY+CisgICAgPGRpdiBpZD0i
dGFyZ2V0IiBjb250ZW50ZWRpdGFibGU9InRydWUiIG9ucGFzdGU9InBhc3RlKGV2ZW50KSI+PC9k
aXY+Cis8L2Rpdj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cmVzb3VyY2VzL3RleHQtcGFzdGVib2FyZC1kYXRhLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Jlc291cmNlcy90ZXh0LXBhc3RlYm9hcmQtZGF0YS50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9yZXNvdXJjZXMvdGV4dC1wYXN0ZWJvYXJkLWRh
dGEudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEgQEAKK2hlbGxvLCB3b3JsZC4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3Jz
LWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjA3NTcpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMTYgQEAgUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBp
cyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Rh
dGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3Bl
cnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJh
bnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlz
dCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJv
cGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQ
QVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVy
SXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093
blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNl
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNp
b24gMjIwNzU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMJ
KHdvcmtpbmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOCBAQCBmYXN0L2RvbS9EZXZpY2VPcmllbnRh
dGlvbgogZmFzdC9jYW52YXMvY2FudmFzLXRvRGF0YVVSTC13ZWJwLmh0bWwKIAogIyBEcmFnLWFu
ZC1kcm9wIGlzIG5vdCBzdXBwb3J0ZWQ6CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVy
LWl0ZW1zLWRyb3AtcGxhaW50ZXh0LWZpbGUuaHRtbAorZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGF0
cmFuc2Zlci1pdGVtcy1wYXN0ZS1wbGFpbnRleHQuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2Ry
YWctbGluay13aXRoLWRhdGEtdHJhbnNmZXItYWRkcy10cnVzdGVkLWxpbmstdG8tcGFzdGVib2Fy
ZC5odG1sCiBmYXN0L2V2ZW50cy9ib2d1cy1kcm9wRWZmZWN0LWVmZmVjdEFsbG93ZWQuaHRtbAog
ZmFzdC9ldmVudHMvY2xlYXItZHJhZy1zdGF0ZS5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtZWxjYXBpdGFuLXdrMi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1
dGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
ZWxjYXBpdGFuLXdrMi9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjIwNzU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWVs
Y2FwaXRhbi13azIvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMTYgQEAgUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBm
YWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zl
ckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5
KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNm
ZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1
ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcp
Lmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVy
dHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRl
bUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blBy
b3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtZWxjYXBpdGFuL2pzL2RvbS9nbG9iYWwtY29u
c3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1lbGNhcGl0YW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0
cmlidXRlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIyMDc1NykKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1lbGNhcGl0YW4vanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRl
cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw2ICszODgsMTYgQEAgUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdz
ZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUg
aXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Rh
dGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093
blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0Jykg
aXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdE
YXRhVHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFi
bGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJ
dGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFz
T3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZh
bHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRy
YW5zZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycp
Lmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlz
IGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS13azEvanMv
ZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEtd2sxL2pzL2RvbS9nbG9i
YWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMjA3NTcp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS13azEvanMvZG9tL2dsb2Jh
bC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTM5Myw2ICszOTMsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
bwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFu
c2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMg
ZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRh
VHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJh
bnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAn
RGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0n
KS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMg
RGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBp
cyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0Rh
dGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNT
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRl
bUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMg
dHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFW
aWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQog
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3Jyku
aGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtaGlnaHNpZXJyYS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNp
ZXJyYS9qcy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMjIwNzU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEv
anMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQwOCw2ICs0MDgsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsbwogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2Jh
bCwgJ0RhdGFUcmFuc2ZlcicpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVu
dW1lcmFibGUgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihn
bG9iYWwsICdEYXRhVHJhbnNmZXInKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1
ZSBpcyBEYXRhVHJhbnNmZXJJdGVtCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBm
YWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51
bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0
JykudmFsdWUgaXMgRGF0YVRyYW5zZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3Bl
cnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlz
IGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0
YVRyYW5zZmVySXRlbUxpc3QnKS5lbnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25m
aWd1cmFibGUgaXMgdHJ1ZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGds
b2JhbCwgJ0RhdGFWaWV3JykudmFsdWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQn
KSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwg
J0RhdGFWaWV3JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2pzL2Rv
bS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
MjA3NTcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvanMvZG9tL2dsb2JhbC1jb25zdHJ1
Y3RvcnMtYXR0cmlidXRlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQwMyw2ICs0
MDMsMTYgQEAgUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsbwogUEFTUyBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmhh
c093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQogUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2ZlcicpLmVudW1lcmFibGUgaXMgZmFsc2UKIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXIn
KS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS52YWx1ZSBpcyBEYXRhVHJhbnNmZXJJdGVt
CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5z
ZmVySXRlbScpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW0nKS5oYXNPd25Q
cm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0
ZW0nKS5jb25maWd1cmFibGUgaXMgdHJ1ZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykudmFsdWUgaXMgRGF0YVRyYW5z
ZmVySXRlbUxpc3QKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWws
ICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQor
UEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zl
ckl0ZW1MaXN0JykuaGFzT3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5l
bnVtZXJhYmxlIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5jb25maWd1cmFibGUgaXMgdHJ1ZQogUEFT
UyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykudmFs
dWUgaXMgRGF0YVZpZXcKIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9i
YWwsICdEYXRhVmlldycpLmhhc093blByb3BlcnR5KCdnZXQnKSBpcyBmYWxzZQogUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFWaWV3JykuaGFzT3duUHJv
cGVydHkoJ3NldCcpIGlzIGZhbHNlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNzU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsNyBAQCBz
dmcvY3VzdG9tL3N2Zy1hbGxvd2VkLWluLWRhc2hib2FyZC1vYmplCiBmYXN0L3JlcGFpbnQvb3Zl
cmZsb3ctc2Nyb2xsLXRvdWNoLXJlcGFpbnQuaHRtbCBbIFNraXAgXQogCiAjIFRPRE8gRHJhZyAm
IERyb3AgZG9lc24ndCB3b3JrIGNvcnJlY3RseSBpbiBEUlQgPHJkYXI6Ly81NjIxMjQ0PgorZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGF0cmFuc2Zlci1pdGVtcy1kcm9wLXBsYWludGV4dC1maWxlLmh0
bWwKIGZhc3QvZXZlbnRzL2Ryb3AtaGFuZGxlci1zaG91bGQtbm90LXN0b3AtbmF2aWdhdGUuaHRt
bCBbIFNraXAgXQogZmFzdC9ldmVudHMvZHJhZy1pbi1mcmFtZXMuaHRtbCBbIFNraXAgXQogZmFz
dC9ldmVudHMvZHJhZy10by1uYXZpZ2F0ZS5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNzU3KQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAg
LTU2Myw2ICs1NjMsNyBAQCBwbGF0Zm9ybS9tYWMvZmFzdC9ldmVudHMvb2JqYy1ldmVudC1hcGku
CiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNl
bmRlci5iZWdpbkRyYWdXaXRoRmlsZXMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY0Mjg1CitlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YXRyYW5zZmVyLWl0ZW1zLWRy
b3AtcGxhaW50ZXh0LWZpbGUuaHRtbAogZWRpdGluZy9wYXN0ZWJvYXJkL2ZpbGUtZHJhZy10by1l
ZGl0YWJsZS5odG1sIFsgU2tpcCBdCiBlZGl0aW5nL3Bhc3RlYm9hcmQvZmlsZS1pbnB1dC1maWxl
cy1hY2Nlc3MuaHRtbAogZmFzdC9kb20vRmlsZUxpc3QtaXRlcmF0b3IuaHRtbApJbmRleDogTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd3BlL2pzL2RvbS9nbG9iYWwtY29uc3RydWN0b3JzLWF0dHJpYnV0
ZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dwZS9q
cy9kb20vZ2xvYmFsLWNvbnN0cnVjdG9ycy1hdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMjIwNzU3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vd3BlL2pzL2RvbS9nbG9iYWwtY29u
c3RydWN0b3JzLWF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zOTMs
NiArMzkzLDE2IEBAIFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG8KIFBB
U1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXIn
KS5oYXNPd25Qcm9wZXJ0eSgnc2V0JykgaXMgZmFsc2UKIFBBU1MgT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXInKS5lbnVtZXJhYmxlIGlzIGZhbHNl
CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5z
ZmVyJykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykudmFsdWUgaXMgRGF0YVRyYW5zZmVy
SXRlbQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFU
cmFuc2Zlckl0ZW0nKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKK1BBU1MgT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtJykuaGFz
T3duUHJvcGVydHkoJ3NldCcpIGlzIGZhbHNlCitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoZ2xvYmFsLCAnRGF0YVRyYW5zZmVySXRlbScpLmVudW1lcmFibGUgaXMgZmFsc2UK
K1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNm
ZXJJdGVtJykuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJhbnNmZXJJdGVtTGlzdCcpLnZhbHVlIGlzIERhdGFU
cmFuc2Zlckl0ZW1MaXN0CitQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xv
YmFsLCAnRGF0YVRyYW5zZmVySXRlbUxpc3QnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVHJh
bnNmZXJJdGVtTGlzdCcpLmhhc093blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQorUEFTUyBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0
JykuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKGdsb2JhbCwgJ0RhdGFUcmFuc2Zlckl0ZW1MaXN0JykuY29uZmlndXJhYmxlIGlzIHRydWUK
IFBBU1MgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycp
LnZhbHVlIGlzIERhdGFWaWV3CiBQQVNTIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
Z2xvYmFsLCAnRGF0YVZpZXcnKS5oYXNPd25Qcm9wZXJ0eSgnZ2V0JykgaXMgZmFsc2UKIFBBU1Mg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdEYXRhVmlldycpLmhhc093
blByb3BlcnR5KCdzZXQnKSBpcyBmYWxzZQo=
</data>
<flag name="review"
          id="338630"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>