<?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>45395</bug_id>
          
          <creation_ts>2010-09-08 09:25:04 -0700</creation_ts>
          <short_desc>[GTK] DOM bindings do not have gir annotations</short_desc>
          <delta_ts>2011-07-12 12:42:10 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Gabriel Jacobo">gabomdq</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>a.renevier</cc>
    
    <cc>kris.kleine</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>275874</commentid>
    <comment_count>0</comment_count>
      <attachid>66904</attachid>
    <who name="Gabriel Jacobo">gabomdq</who>
    <bug_when>2010-09-08 09:25:04 -0700</bug_when>
    <thetext>Created attachment 66904
gobject introspection enhancements

This is a patch for the GObject bindings script so it generates gobject introspection annotations the g-ir-scanner tool properly understand. There also a bunch of fixes for the existing annotations to make them comply with the recent changes in gobject-introspection trunk.
There&apos;s a workaround added for some functions names in the CodeGeneratorGObject.pm script, that&apos;s in my opinion the simplest of several possible fixes to a naming convention problem between what this script generates and what the scanner expects.

The problem arises in functions belonging to classes like WebKitDOMTHMLElement, where the scanner logic that matches methods to classes expects the method to be called webkit_domhtml_element_something while we output them as webkit_dom_html_element_something. The workaround I implemented is to output the function as webkit_domhtml_element_something where appropriate and set up a #define for each of these functions as to preserve compatibility with the rest of the codebase.

With this patch installed, after the build is done I rerun the following command under a jhbuild shell to check what&apos;s up with the scanner...

g-ir-scanner --warn-all --symbol-prefix=webkit -v --namespace WebKit --nsversion=3.0 \
             --include=GObject-2.0 \
             --include=Gtk-3.0 \
             --include=JSCore-3.0 \
             --include=Soup-2.4 \
             --library=webkitgtk-3.0 \
             --libtool=&quot;./doltlibtool&quot; \
             --pkg gobject-2.0 \
             --pkg gtk+-3.0 \
             --pkg libsoup-2.4 \
             --output WebKit-3.0.gir \
             --add-include-path ./WebKit/gtk \
             --add-include-path . \
             -I./WebKit/gtk \
             -I./WebKit/gtk \
             -I./DerivedSources \
             -I./DerivedSources/webkit \
             -I./JavaScriptCore/ForwardingHeaders \
             -I./JavaScriptCore/API \
             -I. \
             WebKit/gtk/webkit/webkitversion.h DerivedSources/webkit/WebKitDOMCSSRule.h DerivedSources/webkit/WebKitDOMCSSRuleList.h DerivedSources/webkit/WebKitDOMCSSStyleDeclaration.h DerivedSources/webkit/WebKitDOMCSSStyleSheet.h DerivedSources/webkit/WebKitDOMCSSValue.h DerivedSources/webkit/WebKitDOMMediaList.h DerivedSources/webkit/WebKitDOMStyleMedia.h DerivedSources/webkit/WebKitDOMStyleSheet.h DerivedSources/webkit/WebKitDOMStyleSheetList.h DerivedSources/webkit/WebKitDOMAttr.h DerivedSources/webkit/WebKitDOMCDATASection.h DerivedSources/webkit/WebKitDOMCharacterData.h DerivedSources/webkit/WebKitDOMComment.h DerivedSources/webkit/WebKitDOMDocument.h DerivedSources/webkit/WebKitDOMDocumentFragment.h DerivedSources/webkit/WebKitDOMDocumentType.h DerivedSources/webkit/WebKitDOMDOMImplementation.h DerivedSources/webkit/WebKitDOMDOMStringList.h DerivedSources/webkit/WebKitDOMDOMStringMap.h DerivedSources/webkit/WebKitDOMElement.h DerivedSources/webkit/WebKitDOMEntityReference.h DerivedSources/webkit/WebKitDOMEvent.h DerivedSources/webkit/WebKitDOMMessagePort.h DerivedSources/webkit/WebKitDOMMouseEvent.h DerivedSources/webkit/WebKitDOMNamedNodeMap.h DerivedSources/webkit/WebKitDOMNode.h DerivedSources/webkit/WebKitDOMNodeFilter.h DerivedSources/webkit/WebKitDOMNodeIterator.h DerivedSources/webkit/WebKitDOMNodeList.h DerivedSources/webkit/WebKitDOMProcessingInstruction.h DerivedSources/webkit/WebKitDOMRange.h DerivedSources/webkit/WebKitDOMText.h DerivedSources/webkit/WebKitDOMTreeWalker.h DerivedSources/webkit/WebKitDOMUIEvent.h DerivedSources/webkit/WebKitDOMBlob.h DerivedSources/webkit/WebKitDOMFile.h DerivedSources/webkit/WebKitDOMFileList.h DerivedSources/webkit/WebKitDOMHTMLAnchorElement.h DerivedSources/webkit/WebKitDOMHTMLAppletElement.h DerivedSources/webkit/WebKitDOMHTMLAreaElement.h DerivedSources/webkit/WebKitDOMHTMLBaseElement.h DerivedSources/webkit/WebKitDOMHTMLBaseFontElement.h DerivedSources/webkit/WebKitDOMHTMLBlockquoteElement.h DerivedSources/webkit/WebKitDOMHTMLBodyElement.h DerivedSources/webkit/WebKitDOMHTMLBRElement.h DerivedSources/webkit/WebKitDOMHTMLButtonElement.h DerivedSources/webkit/WebKitDOMHTMLCanvasElement.h DerivedSources/webkit/WebKitDOMHTMLCollection.h DerivedSources/webkit/WebKitDOMHTMLDirectoryElement.h DerivedSources/webkit/WebKitDOMHTMLDivElement.h DerivedSources/webkit/WebKitDOMHTMLDListElement.h DerivedSources/webkit/WebKitDOMHTMLDocument.h DerivedSources/webkit/WebKitDOMHTMLElement.h DerivedSources/webkit/WebKitDOMHTMLEmbedElement.h DerivedSources/webkit/WebKitDOMHTMLFieldSetElement.h DerivedSources/webkit/WebKitDOMHTMLFontElement.h DerivedSources/webkit/WebKitDOMHTMLFormElement.h DerivedSources/webkit/WebKitDOMHTMLFrameElement.h DerivedSources/webkit/WebKitDOMHTMLFrameSetElement.h DerivedSources/webkit/WebKitDOMHTMLHeadElement.h DerivedSources/webkit/WebKitDOMHTMLHeadingElement.h DerivedSources/webkit/WebKitDOMHTMLHRElement.h DerivedSources/webkit/WebKitDOMHTMLHtmlElement.h DerivedSources/webkit/WebKitDOMHTMLIFrameElement.h DerivedSources/webkit/WebKitDOMHTMLImageElement.h DerivedSources/webkit/WebKitDOMHTMLInputElement.h DerivedSources/webkit/WebKitDOMHTMLIsIndexElement.h DerivedSources/webkit/WebKitDOMHTMLLabelElement.h DerivedSources/webkit/WebKitDOMHTMLLegendElement.h DerivedSources/webkit/WebKitDOMHTMLLIElement.h DerivedSources/webkit/WebKitDOMHTMLLinkElement.h DerivedSources/webkit/WebKitDOMHTMLMapElement.h DerivedSources/webkit/WebKitDOMHTMLMarqueeElement.h DerivedSources/webkit/WebKitDOMHTMLMediaElement.h DerivedSources/webkit/WebKitDOMHTMLMenuElement.h DerivedSources/webkit/WebKitDOMHTMLMetaElement.h DerivedSources/webkit/WebKitDOMHTMLModElement.h DerivedSources/webkit/WebKitDOMHTMLObjectElement.h DerivedSources/webkit/WebKitDOMHTMLOListElement.h DerivedSources/webkit/WebKitDOMHTMLOptGroupElement.h DerivedSources/webkit/WebKitDOMHTMLOptionElement.h DerivedSources/webkit/WebKitDOMHTMLOptionsCollection.h DerivedSources/webkit/WebKitDOMHTMLParagraphElement.h DerivedSources/webkit/WebKitDOMHTMLParamElement.h DerivedSources/webkit/WebKitDOMHTMLPreElement.h DerivedSources/webkit/WebKitDOMHTMLQuoteElement.h DerivedSources/webkit/WebKitDOMHTMLScriptElement.h DerivedSources/webkit/WebKitDOMHTMLSelectElement.h DerivedSources/webkit/WebKitDOMHTMLStyleElement.h DerivedSources/webkit/WebKitDOMHTMLTableElement.h DerivedSources/webkit/WebKitDOMHTMLTableCaptionElement.h DerivedSources/webkit/WebKitDOMHTMLTableColElement.h DerivedSources/webkit/WebKitDOMHTMLTableSectionElement.h DerivedSources/webkit/WebKitDOMHTMLTableCellElement.h DerivedSources/webkit/WebKitDOMHTMLTextAreaElement.h DerivedSources/webkit/WebKitDOMHTMLTitleElement.h DerivedSources/webkit/WebKitDOMHTMLTableRowElement.h DerivedSources/webkit/WebKitDOMHTMLUListElement.h DerivedSources/webkit/WebKitDOMMediaError.h DerivedSources/webkit/WebKitDOMTimeRanges.h DerivedSources/webkit/WebKitDOMValidityState.h DerivedSources/webkit/WebKitDOMDOMApplicationCache.h DerivedSources/webkit/WebKitDOMBarInfo.h DerivedSources/webkit/WebKitDOMConsole.h DerivedSources/webkit/WebKitDOMDOMWindow.h DerivedSources/webkit/WebKitDOMDOMSelection.h DerivedSources/webkit/WebKitDOMEventTarget.h DerivedSources/webkit/WebKitDOMHistory.h DerivedSources/webkit/WebKitDOMLocation.h DerivedSources/webkit/WebKitDOMMemoryInfo.h DerivedSources/webkit/WebKitDOMObject.h DerivedSources/webkit/WebKitDOMNavigator.h DerivedSources/webkit/WebKitDOMScreen.h DerivedSources/webkit/WebKitDOMWebKitPoint.h DerivedSources/webkit/WebKitDOMDOMMimeType.h DerivedSources/webkit/WebKitDOMDOMMimeTypeArray.h DerivedSources/webkit/WebKitDOMDOMPlugin.h DerivedSources/webkit/WebKitDOMDOMPluginArray.h DerivedSources/webkit/WebKitDOMDatabase.h DerivedSources/webkit/WebKitDOMStorage.h DerivedSources/webkit/WebKitDOMXPathExpression.h DerivedSources/webkit/WebKitDOMXPathNSResolver.h DerivedSources/webkit/WebKitDOMXPathResult.h DerivedSources/webkit/webkitdom.h DerivedSources/webkit/webkitdomdefines.h  ./DerivedSources/webkit/WebKitDOMHTMLAudioElement.h ./WebKit/gtk/webkit/webkit.h ./WebKit/gtk/webkit/webkitdefines.h ./WebKit/gtk/webkit/webkitdownload.h ./WebKit/gtk/webkit/webkiterror.h ./WebKit/gtk/webkit/webkithittestresult.h ./WebKit/gtk/webkit/webkitnetworkrequest.h ./WebKit/gtk/webkit/webkitnetworkresponse.h ./WebKit/gtk/webkit/webkitsoupauthdialog.h ./WebKit/gtk/webkit/webkitwebbackforwardlist.h ./WebKit/gtk/webkit/webkitwebdatasource.h ./WebKit/gtk/webkit/webkitwebframe.h ./WebKit/gtk/webkit/webkitwebhistoryitem.h ./WebKit/gtk/webkit/webkitwebinspector.h ./WebKit/gtk/webkit/webkitwebnavigationaction.h ./WebKit/gtk/webkit/webkitwebpolicydecision.h ./WebKit/gtk/webkit/webkitgeolocationpolicydecision.h ./WebKit/gtk/webkit/webkitwebresource.h ./WebKit/gtk/webkit/webkitwebsettings.h ./WebKit/gtk/webkit/webkitwebwindowfeatures.h ./WebKit/gtk/webkit/webkitwebview.h ./WebKit/gtk/webkit/webkitwebdatabase.h ./WebKit/gtk/webkit/webkitsecurityorigin.h \
             ./WebKit/gtk/webkit/*.cpp


The output I get is:

WebKit/gtk/webkit/webkitwebview.h:402: Warning: WebKit: Unknown container Type(target_giname=WebKit.DOMDocument, ctype=WebKitDOMDocument*) for element-type annotation
WebKit/gtk/webkit/webkiterror.h:61: Warning: WebKit: webkit_network_error_quark: Couldn&apos;t find corresponding enumeration
WebKit/gtk/webkit/webkiterror.h:64: Warning: WebKit: webkit_policy_error_quark: Couldn&apos;t find corresponding enumeration
WebKit/gtk/webkit/webkiterror.h:67: Warning: WebKit: webkit_plugin_error_quark: Couldn&apos;t find corresponding enumeration
&lt;unknown&gt;:: Warning: WebKit: (GLibSignal)current-toplevel: return value: Missing (transfer) annotation
WebKit/gtk/webkit/webkitwebframe.h:146: Warning: WebKit: webkit_web_frame_get_global_context: return value: Unresolved type: &apos;JSGlobalContextRef&apos;
&lt;unknown&gt;:: Warning: WebKit: (GLibSignal)inspect-web-view: return value: Missing (transfer) annotation
&lt;unknown&gt;:: Warning: WebKit: (GLibSignal)navigation-requested: return value: Unresolved type: &apos;WebKitNavigationResponse&apos;
&lt;unknown&gt;:: Warning: WebKit: (Callback)current_toplevel: return value: Missing (transfer) annotation
&lt;unknown&gt;:: Warning: WebKit: (Callback)create_web_view: return value: Missing (transfer) annotation
&lt;unknown&gt;:: Warning: WebKit: (Callback)window_object_cleared: argument context: Unresolved type: &apos;JSGlobalContextRef&apos;
&lt;unknown&gt;:: Warning: WebKit: (Callback)window_object_cleared: argument window_object: Unresolved type: &apos;JSObjectRef&apos;


Also, verifying the WebKit gir file also helps to check everything is in working order. 
So, the most important pending item is fixing the JS unresolved types, I tried playing with JSCore.gir but didnt get any positive results. Also, i&apos;m not sure if the default transfer mode should be none, it seemed the safest bet.
I tested this with a Python test app that uses pygobject, that you can check in my blog http://mdqinc.com/blog, and everything seems to be working fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277715</commentid>
    <comment_count>1</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-11 08:55:51 -0700</bug_when>
    <thetext>So, let&apos;s see, these are actually three patches, don&apos;t merge everything in one.

1- Fixes to make stuff work with a recent gobject-introspection.
2- Annotation fixes.
3- Changes to the DOM bindings to make them work with introspection.

For 1) I&apos;ve opened a bug with a patch that has the stuff needed to make things compile in here: https://bugs.webkit.org/show_bug.cgi?id=45590. It&apos;s missing the include of the glib URL in the JSCore gir file (JSCore does not use glib, why do you need that?) and the --symbol-prefix stuff, which is not needed in trunk.

I&apos;ll comment on the other parts of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277717</commentid>
    <comment_count>2</comment_count>
    <who name="Gabriel Jacobo">gabomdq</who>
    <bug_when>2010-09-11 09:10:28 -0700</bug_when>
    <thetext>The --symbol-prefix=webkit is required, just take a look at the generated WebKit-3.0.gir file that you get without it, all the &quot;by hand&quot; functions of the interface generate a &quot;Unknown namespace for symbol&quot;. 
Also, to check for other warnings, add --warn-all to the g-ir-scanner command to verify before removing stuff from the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277718</commentid>
    <comment_count>3</comment_count>
      <attachid>66904</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-11 09:12:27 -0700</bug_when>
    <thetext>Comment on attachment 66904
gobject introspection enhancements

&gt; Index: GNUmakefile.am
&gt; ===================================================================
&gt; --- GNUmakefile.am	(revisiÃ³n: 66973)
&gt; +++ GNUmakefile.am	(copia de trabajo)
&gt; @@ -397,7 +397,7 @@
&gt;  WEBKIT_GIRSOURCES += WebKit-@WEBKITGTK_API_VERSION@.gir
&gt;  
&gt;  $(WEBKIT_GIRSOURCES): $(G_IR_SCANNER) $(JSCORE_GIRSOURCES) libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
&gt; -	$(AM_V_GEN)$(G_IR_SCANNER) -v --namespace WebKit --nsversion=@WEBKITGTK_API_VERSION@ \
&gt; +	$(AM_V_GEN)$(G_IR_SCANNER) -v --symbol-prefix=webkit --namespace WebKit --nsversion=@WEBKITGTK_API_VERSION@ \

Is this needed on top of the --prefix parameter?

&gt;  	     --include=GObject-2.0 \
&gt;  	     --include=Gtk-@GTK_API_VERSION@ \
&gt;  	     --include=JSCore-@WEBKITGTK_API_VERSION@ \



&gt;   */
&gt;  gchar* webkit_web_frame_get_inner_text(WebKitWebFrame* frame)
&gt;  {
&gt; @@ -790,7 +790,7 @@
&gt;   * webkit_web_frame_dump_render_tree:
&gt;   * @frame: a #WebKitWebFrame
&gt;   *
&gt; - * Return value: Non-recursive render tree dump of @frame
&gt; + * Return value: (transfer none): Non-recursive render tree dump of @frame
&gt;   */

This is not public API, and besides the annotation is wrong (?).

&gt;  gchar* webkit_web_frame_dump_render_tree(WebKitWebFrame* frame)
&gt;  {
&gt; @@ -814,7 +814,7 @@
&gt;   * @frame: a #WebKitWebFrame
&gt;   * @id: an element ID string
&gt;   *
&gt; - * Return value: The counter value of element @id in @frame
&gt; + * Return value: (transfer none): The counter value of element @id in @frame
&gt;   */

Same thing...

&gt;   */
&gt;  int webkit_web_frame_number_of_pages(WebKitWebFrame* frame, float pageWidth, float pageHeight)
&gt;  {
&gt; @@ -877,7 +877,7 @@
&gt;   * webkit_web_frame_get_pending_unload_event_count:
&gt;   * @frame: a #WebKitWebFrame
&gt;   *
&gt; - * Return value: number of pending unload events
&gt; + * Return value: (transfer none): number of pending unload events
&gt;   */

Transfer annotation for int? This is not needed, same for booleans and any non pointer type.

&gt;  }
&gt;  
&gt;  /**
&gt; - * webkit_network_response_get_soup_message:
&gt; + * webkit_network_response_get_message:

You are most definitely not allowed to change the function name. Not sure why are you doing that but you can&apos;t.

Please go again over all annotations, a lot of them are wrong.


&gt; Index: WebCore/bindings/scripts/CodeGeneratorGObject.pm
&gt; ===================================================================
&gt; --- WebCore/bindings/scripts/CodeGeneratorGObject.pm	(revisiÃ³n: 66983)
&gt; +++ WebCore/bindings/scripts/CodeGeneratorGObject.pm	(copia de trabajo)

Wow, sorry but no, this is way too ugly :). If the scanner can&apos;t cope with our names as they are we&apos;ll have to teach it to, I won&apos;t accept this patch.

Besides, I thought we had decided to write the introspection data in a different file and include it at compile time? I don&apos;t think you can possibly get right all the stuff automatically?

r- for all the comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277719</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-11 09:14:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The --symbol-prefix=webkit is required, just take a look at the generated WebKit-3.0.gir file that you get without it, all the &quot;by hand&quot; functions of the interface generate a &quot;Unknown namespace for symbol&quot;. 

I don&apos;t get this in trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277721</commentid>
    <comment_count>5</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-09-11 09:21:32 -0700</bug_when>
    <thetext>Oh, another thing, WebKit has some rules about how to send patches and stuff (in particular, you need to add ChangeLogs, follow the style guides, ...). Read http://webkit.org/coding/contributing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435162</commentid>
    <comment_count>6</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-07-11 13:07:44 -0700</bug_when>
    <thetext>*** Bug 63772 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435192</commentid>
    <comment_count>7</comment_count>
      <attachid>100360</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2011-07-11 14:08:26 -0700</bug_when>
    <thetext>Created attachment 100360
extracted patch for issue 3

With attached patch, extracted and slighty modified from Gabriel Jacobo patch, I&apos;m able to have introspection working, ie, fix issue 3 as described in comment 1.
I&apos;m unsure about the transfer none though: Shouldn&apos;t that be transfer full instead ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435222</commentid>
    <comment_count>8</comment_count>
      <attachid>100360</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-11 15:08:59 -0700</bug_when>
    <thetext>Comment on attachment 100360
extracted patch for issue 3

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

This looks OK, but it needs a ChangeLog to get r+. Please read http://www.webkit.org/coding/contributing.html, especially the bit about generating a proper ChangeLog. Thanks for the patch!

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:791
&gt; +    $selfClass =~ s/\*$//;

I think $className does not end in *, so this seems redundant.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:795
&gt; +        my $paramIDLType = $param-&gt;type;

Minor nit, probably you can do without this variable.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:797
&gt; +        $paramType =~ s/\*$//;        

Same than first comment.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:806
&gt; +        push(@hBody, &quot; * Returns: (transfer none):\n&quot;);    

Answering to your question, this is OK. GDOM objects are GC by WebKit automatically, so there&apos;s no need to manually unref them. transfer: full would also be OK, since it&apos;s possibly to unref them manually too. So AFAIK this is mostly up to us. transfer none is probably safer, so I think we can start with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435519</commentid>
    <comment_count>9</comment_count>
      <attachid>100448</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2011-07-12 01:21:23 -0700</bug_when>
    <thetext>Created attachment 100448
patch for issue 3

(In reply to comment #8)
&gt; (From update of attachment 100360 [details])

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:791
&gt; &gt; +    $selfClass =~ s/\*$//;
&gt; 
&gt; I think $className does not end in *, so this seems redundant.

fixed
 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:795
&gt; &gt; +        my $paramIDLType = $param-&gt;type;
&gt; 
&gt; Minor nit, probably you can do without this variable.

fixed

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:797
&gt; &gt; +        $paramType =~ s/\*$//;        
&gt; 
&gt; Same than first comment.

fixed

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorGObject.pm:806
&gt; &gt; +        push(@hBody, &quot; * Returns: (transfer none):\n&quot;);    
&gt; 
&gt; Answering to your question, this is OK. GDOM objects are GC by WebKit automatically, so there&apos;s no need to manually unref them. transfer: full would also be OK, since it&apos;s possibly to unref them manually too. So AFAIK this is mostly up to us. transfer none is probably safer, so I think we can start with that.

ok, thanks for your answer.
Here is a new patch with a changelog. I fell like I&apos;m &quot;hijacking&quot; Gabriel&apos;s patch but hopefully, that will help getting annotations for dom methods.
Also, I 
push(@hBody, &quot; * Returns:\n&quot;);
if return type is not dom class type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435576</commentid>
    <comment_count>10</comment_count>
    <who name="Gabriel Jacobo">gabomdq</who>
    <bug_when>2011-07-12 05:01:07 -0700</bug_when>
    <thetext>Don&apos;t sweat it Arno, feel free to do with the patch as you wish as I lost interest in working on it further due to the poor attitude towards contributions from Xan in particular and the fact that someone deleted one of my comments where I suggested that perhaps taking 5 minutes to skim over a patch was no proper way of dealing with new contributors (as proven by the fact that he criticized the patch for fixing some annotations, and mistook that for doing changes in the API ¿?) . Anyway, hope you have better luck as there certainly is interest in the community for proper working bindings and introspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435580</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 05:14:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Don&apos;t sweat it Arno, feel free to do with the patch as you wish as I lost interest in working on it further due to the poor attitude towards contributions from Xan in particular and the fact that someone deleted one of my comments where I suggested that perhaps taking 5 minutes to skim over a patch was no proper way of dealing with new contributors (as proven by the fact that he criticized the patch for fixing some annotations, and mistook that for doing changes in the API ¿?) . Anyway, hope you have better luck as there certainly is interest in the community for proper working bindings and introspection.

I don&apos;t think it&apos;s possible to delete comments here, so you are probably just confusing some error in sending your comment with a conspiracy against you. I most certainly didn&apos;t delete anything.

Anyone can make mistakes, but I think all my comments about your patch still stand. The vast majority of the annotations were wrong (it makes no sense to annotate ints or booleans), so I just stopped looking after finding a bunch of those and asked you to go over them again. Changing the scanner to emit wrong names in the gtk-doc is a hack, and I said so, I didn&apos;t confuse that with any change in the API.

In any case, as Arno has proved parts of your patch were useful, and I didn&apos;t say the contrary, so certainly your contributions were and still are welcome. It is my duty as reviewer to try to land the best patches possible, and you shouldn&apos;t confuse criticisms of code with personal attacks against you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435583</commentid>
    <comment_count>12</comment_count>
      <attachid>100448</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 05:24:21 -0700</bug_when>
    <thetext>Comment on attachment 100448
patch for issue 3

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435589</commentid>
    <comment_count>13</comment_count>
    <who name="Gabriel Jacobo">gabomdq</who>
    <bug_when>2011-07-12 05:28:47 -0700</bug_when>
    <thetext>&gt;&gt;  }
&gt;&gt;  
&gt;&gt;  /**
&gt;&gt; - * webkit_network_response_get_soup_message:
&gt;&gt; + * webkit_network_response_get_message:

&gt;You are most definitely not allowed to change the function name. Not sure why &gt;are you doing that but you can&apos;t.


I was referring to that specifically as proof that you didn&apos;t do a proper review in my opinion (and I mentioned that in the lost comment). The fix quoted is a fix for the annotation that didn&apos;t match the corresponding function name (and not the other way around, I was not changing any API). 
So if you say that my comment wasn&apos;t deleted I believe you and I apologize for saying so, it certainly seemed strange to delete a comment over some minor bashing...but with the power trips some people go on over the internet, you never know.
Anyway, good luck Arno with the patch, feel free to contact me if you have questions (I&apos;ve noted down part of the thinking behind this in some older posts in my blog at mdqinc.com)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435599</commentid>
    <comment_count>14</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 05:48:58 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;&gt;  }
&gt; &gt;&gt;  
&gt; &gt;&gt;  /**
&gt; &gt;&gt; - * webkit_network_response_get_soup_message:
&gt; &gt;&gt; + * webkit_network_response_get_message:
&gt; 
&gt; &gt;You are most definitely not allowed to change the function name. Not sure why &gt;are you doing that but you can&apos;t.
&gt; 
&gt; 
&gt; I was referring to that specifically as proof that you didn&apos;t do a proper review in my opinion (and I mentioned that in the lost comment). The fix quoted is a fix for the annotation that didn&apos;t match the corresponding function name (and not the other way around, I was not changing any API). 

I guess since in other parts of the patch you were modifying the script to generate incorrect documentation I assumed this was the case too. It wasn&apos;t, so my mistake. Anyway this one mistake does not change the fact that most of the patch was not ready suitable to be landed, so I don&apos;t really agree that my first review was not proper. I made a mistake? Ok, but I also pointed out lots of incorrect things in your patch. The normal thing to do would be to tell me about the mistake and change the rest of the stuff, not to drop the ball completely IMHO.

Also this shows why it&apos;s a good idea to send one patch per separate issue instead of doing a giant patch with all your changes. Makes things harder to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435613</commentid>
    <comment_count>15</comment_count>
      <attachid>100448</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 06:37:38 -0700</bug_when>
    <thetext>Comment on attachment 100448
patch for issue 3

Rejecting attachment 100448 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-01&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
ace.cpp...
No changes found.
Testing the CPP generator on TestMediaQueryListListener.idl
Detecting changes in WebDOMTestMediaQueryListListener.h...
No changes found.
Detecting changes in WebDOMTestMediaQueryListListener.cpp...
No changes found.
Testing the CPP generator on TestInterface.idl
Detecting changes in WebDOMTestInterface.cpp...
No changes found.
Detecting changes in WebDOMTestInterface.h...
No changes found.
(To update the reference files, execute &quot;run-bindings-tests --reset-results&quot;)

Full output: http://queues.webkit.org/results/9021166</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435616</commentid>
    <comment_count>16</comment_count>
      <attachid>100448</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 06:46:19 -0700</bug_when>
    <thetext>Comment on attachment 100448
patch for issue 3

We also need to update the test results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435624</commentid>
    <comment_count>17</comment_count>
      <attachid>100479</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2011-07-12 06:55:43 -0700</bug_when>
    <thetext>Created attachment 100479
patch for issue 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435706</commentid>
    <comment_count>18</comment_count>
      <attachid>100479</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 09:55:47 -0700</bug_when>
    <thetext>Comment on attachment 100479
patch for issue 3

Well, now we can see that the class type indeed does not have an * at the end, but the param type does have it in some cases (basically when the type is not recognized in the GetGlibTypeName method), so I guess for the type name it does make sense to get rid of any trailing * in case they exist. What a mess :). Do you mind updating the patch with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435867</commentid>
    <comment_count>19</comment_count>
      <attachid>100479</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 12:41:59 -0700</bug_when>
    <thetext>Comment on attachment 100479
patch for issue 3

Just pushed this with some changes as r90841.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435868</commentid>
    <comment_count>20</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-07-12 12:42:10 -0700</bug_when>
    <thetext>Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66904</attachid>
            <date>2010-09-08 09:25:04 -0700</date>
            <delta_ts>2010-09-11 09:12:27 -0700</delta_ts>
            <desc>gobject introspection enhancements</desc>
            <filename>gi.patch</filename>
            <type>text/plain</type>
            <size>40955</size>
            <attacher name="Gabriel Jacobo">gabomdq</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2nDs246IDY2OTczKQorKysgR05VbWFrZWZpbGUuYW0JKGNvcGlhIGRlIHRyYWJham8pCkBAIC0z
OTcsNyArMzk3LDcgQEAKIFdFQktJVF9HSVJTT1VSQ0VTICs9IFdlYktpdC1AV0VCS0lUR1RLX0FQ
SV9WRVJTSU9OQC5naXIKIAogJChXRUJLSVRfR0lSU09VUkNFUyk6ICQoR19JUl9TQ0FOTkVSKSAk
KEpTQ09SRV9HSVJTT1VSQ0VTKSBsaWJ3ZWJraXRndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEKLQkkKEFNX1ZfR0VOKSQoR19J
Ul9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBXZWJLaXQgLS1uc3ZlcnNpb249QFdFQktJVEdUS19B
UElfVkVSU0lPTkAgXAorCSQoQU1fVl9HRU4pJChHX0lSX1NDQU5ORVIpIC12IC0tc3ltYm9sLXBy
ZWZpeD13ZWJraXQgLS1uYW1lc3BhY2UgV2ViS2l0IC0tbnN2ZXJzaW9uPUBXRUJLSVRHVEtfQVBJ
X1ZFUlNJT05AIFwKIAkgICAgIC0taW5jbHVkZT1HT2JqZWN0LTIuMCBcCiAJICAgICAtLWluY2x1
ZGU9R3RrLUBHVEtfQVBJX1ZFUlNJT05AIFwKIAkgICAgIC0taW5jbHVkZT1KU0NvcmUtQFdFQktJ
VEdUS19BUElfVkVSU0lPTkAgXApJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJh
bWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cAkocmV2aXNpw7NuOiA2Njk4NykKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1l
LmNwcAkoY29waWEgZGUgdHJhYmFqbykKQEAgLTI3Miw3ICsyNzIsNyBAQAogICAgICAqIFdlYktp
dFdlYkZyYW1lOmhvcml6b250YWwtc2Nyb2xsYmFyLXBvbGljeSBhbmQKICAgICAgKiBXZWJLaXRX
ZWJGcmFtZTp2ZXJ0aWNhbC1zY3JvbGxiYXItcG9saWN5IHByb3BlcnRpZXMuCiAgICAgICoKLSAg
ICAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWlu
ZyBpbnZva2VkIGZvciB0aGUKKyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTog
JVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQog
ICAgICAqIGV2ZW50LiAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgogICAg
ICAqCiAgICAgICogU2luY2U6IDEuMS4xNApAQCAtNDE0LDcgKzQxNCw3IEBACiAgKgogICogUmV0
dXJucyB0aGUgQGZyYW1lJ3MgZG9jdW1lbnQgdGl0bGUKICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRo
ZSB0aXRsZSBvZiBAZnJhbWUKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUg
dGl0bGUgb2YgQGZyYW1lCiAgKi8KIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2Zy
YW1lX2dldF90aXRsZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiB7CkBAIC00MzAsNyArNDMwLDcg
QEAKICAqCiAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IFVSSSBvZiB0aGUgY29udGVudHMgZGlzcGxh
eWVkIGJ5IHRoZSBAZnJhbWUKICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBVUkkgb2YgQGZyYW1l
CisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlIFVSSSBvZiBAZnJhbWUKICAq
LwogR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpCiB7CkBAIC00NDksNyArNDQ5LDcgQEAKICAqIFRoZSAjV2ViS2l0V2Vi
VmlldyByZXR1cm5lZCBtYW5hZ2VzIHRoZSBlbnRpcmUgaGllcmFyY2h5IG9mICNXZWJLaXRXZWJG
cmFtZQogICogb2JqZWN0cyB0aGF0IGNvbnRhaW5zIEBmcmFtZS4KICAqCi0gKiBSZXR1cm4gdmFs
dWU6IHRoZSAjV2ViS2l0V2ViVmlldyB0aGF0IG1hbmFnZXMgQGZyYW1lCisgKiBSZXR1cm4gdmFs
dWU6ICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRXZWJWaWV3IHRoYXQgbWFuYWdlcyBAZnJh
bWUKICAqLwogV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoV2Vi
S2l0V2ViRnJhbWUqIGZyYW1lKQogewpAQCAtNDY1LDcgKzQ2NSw3IEBACiAgKgogICogUmV0dXJu
cyB0aGUgQGZyYW1lJ3MgbmFtZQogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIG5hbWUgb2YgQGZy
YW1lCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlIG5hbWUgb2YgQGZyYW1l
CiAgKi8KIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9uYW1lKFdl
YktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKQEAgLTQ5MSw3ICs0OTEsNyBAQAogICoKICAqIFJldHVy
bnMgdGhlIEBmcmFtZSdzIHBhcmVudCBmcmFtZSwgb3IgJU5VTEwgaWYgaXQgaGFzIG5vbmUuCiAg
KgotICogUmV0dXJuIHZhbHVlOiB0aGUgcGFyZW50ICNXZWJLaXRXZWJGcmFtZSBvciAlTlVMTCBp
biBjYXNlIHRoZXJlIGlzIG5vbmUKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0
aGUgcGFyZW50ICNXZWJLaXRXZWJGcmFtZSBvciAlTlVMTCBpbiBjYXNlIHRoZXJlIGlzIG5vbmUK
ICAqLwogV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3BhcmVudChXZWJLaXRX
ZWJGcmFtZSogZnJhbWUpCiB7CkBAIC02NjIsNyArNjYyLDcgQEAKICAqIGhpZXJhcmNoeSwgdGhp
cyBmdW5jdGlvbiB3aWxsIHNlYXJjaCBmb3IgYSBtYXRjaGluZyBmcmFtZSBpbiBvdGhlciBtYWlu
CiAgKiBmcmFtZSBoaWVyYXJjaGllcy4gUmV0dXJucyAlTlVMTCBpZiBubyBtYXRjaCBpcyBmb3Vu
ZC4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBmb3VuZCAjV2ViS2l0V2ViRnJhbWUgb3IgJU5V
TEwgaW4gY2FzZSBub25lIGlzIGZvdW5kCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25l
KTogdGhlIGZvdW5kICNXZWJLaXRXZWJGcmFtZSBvciAlTlVMTCBpbiBjYXNlIG5vbmUgaXMgZm91
bmQKICAqLwogV2ViS2l0V2ViRnJhbWUqIHdlYmtpdF93ZWJfZnJhbWVfZmluZF9mcmFtZShXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBuYW1lKQogewpAQCAtNjg0LDcgKzY4NCw3
IEBACiAgKiBHZXRzIHRoZSBnbG9iYWwgSmF2YVNjcmlwdCBleGVjdXRpb24gY29udGV4dC4gVXNl
IHRoaXMgZnVuY3Rpb24gdG8gYnJpZGdlCiAgKiBiZXR3ZWVuIHRoZSBXZWJLaXQgYW5kIEphdmFT
Y3JpcHRDb3JlIEFQSXMuCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgZ2xvYmFsIEphdmFTY3Jp
cHQgY29udGV4dAorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBnbG9iYWwg
SmF2YVNjcmlwdCBjb250ZXh0CiAgKi8KIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9nbG9iYWxfY29udGV4dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiB7CkBAIC03MDMs
NyArNzAzLDcgQEAKICAqCiAgKiBSZXR1cm5zIHRoZSBjb21taXR0ZWQgZGF0YSBzb3VyY2UuCiAg
KgotICogUmV0dXJuIHZhbHVlOiB0aGUgY29tbWl0dGVkICNXZWJLaXRXZWJEYXRhU291cmNlLgor
ICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBjb21taXR0ZWQgI1dlYktpdFdl
YkRhdGFTb3VyY2UuCiAgKgogICogU2luY2U6IDEuMS4xNAogICovCkBAIC03MjQsNyArNzI0LDcg
QEAKICAqIHRyYW5zaXRpb24gdG8gYSBjb21taXR0ZWQgZGF0YSBzb3VyY2Ugb25jZSBhbnkgZGF0
YSBoYXMgYmVlbiByZWNlaXZlZC4gVXNlCiAgKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9kYXRhX3Nv
dXJjZSB0byBnZXQgdGhlIGNvbW1pdHRlZCBkYXRhIHNvdXJjZS4KICAqCi0gKiBSZXR1cm4gdmFs
dWU6IHRoZSBwcm92aXNpb25hbCAjV2ViS2l0V2ViRGF0YVNvdXJjZSBvciAlTlVMTCBpZiBhIGxv
YWQKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgcHJvdmlzaW9uYWwgI1dl
YktpdFdlYkRhdGFTb3VyY2Ugb3IgJU5VTEwgaWYgYSBsb2FkCiAgKiByZXF1ZXN0IGlzIG5vdCBp
biBwcm9ncmVzcy4KICAqCiAgKiBTaW5jZTogMS4xLjE0CkBAIC03NDEsNyArNzQxLDcgQEAKICAq
IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2NoaWxkcmVuOgogICogQGZyYW1lOiBhICNXZWJLaXRXZWJG
cmFtZQogICoKLSAqIFJldHVybiB2YWx1ZTogY2hpbGQgZnJhbWVzIG9mIEBmcmFtZQorICogUmV0
dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IGNoaWxkIGZyYW1lcyBvZiBAZnJhbWUKICAqLwog
R1NMaXN0KiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9jaGlsZHJlbihXZWJLaXRXZWJGcmFtZSogZnJh
bWUpCiB7CkBAIC03NjYsNyArNzY2LDcgQEAKICAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X2lubmVy
X3RleHQ6CiAgKiBAZnJhbWU6IGEgI1dlYktpdFdlYkZyYW1lCiAgKgotICogUmV0dXJuIHZhbHVl
OiBpbm5lciB0ZXh0IG9mIEBmcmFtZQorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6
IGlubmVyIHRleHQgb2YgQGZyYW1lCiAgKi8KIGdjaGFyKiB3ZWJraXRfd2ViX2ZyYW1lX2dldF9p
bm5lcl90ZXh0KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIHsKQEAgLTc5MCw3ICs3OTAsNyBAQAog
ICogd2Via2l0X3dlYl9mcmFtZV9kdW1wX3JlbmRlcl90cmVlOgogICogQGZyYW1lOiBhICNXZWJL
aXRXZWJGcmFtZQogICoKLSAqIFJldHVybiB2YWx1ZTogTm9uLXJlY3Vyc2l2ZSByZW5kZXIgdHJl
ZSBkdW1wIG9mIEBmcmFtZQorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IE5vbi1y
ZWN1cnNpdmUgcmVuZGVyIHRyZWUgZHVtcCBvZiBAZnJhbWUKICAqLwogZ2NoYXIqIHdlYmtpdF93
ZWJfZnJhbWVfZHVtcF9yZW5kZXJfdHJlZShXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiB7CkBAIC04
MTQsNyArODE0LDcgQEAKICAqIEBmcmFtZTogYSAjV2ViS2l0V2ViRnJhbWUKICAqIEBpZDogYW4g
ZWxlbWVudCBJRCBzdHJpbmcKICAqCi0gKiBSZXR1cm4gdmFsdWU6IFRoZSBjb3VudGVyIHZhbHVl
IG9mIGVsZW1lbnQgQGlkIGluIEBmcmFtZQorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9u
ZSk6IFRoZSBjb3VudGVyIHZhbHVlIG9mIGVsZW1lbnQgQGlkIGluIEBmcmFtZQogICovCiBnY2hh
ciogd2Via2l0X3dlYl9mcmFtZV9jb3VudGVyX3ZhbHVlX2Zvcl9lbGVtZW50X2J5X2lkKFdlYktp
dFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgZ2NoYXIqIGlkKQogewpAQCAtODM4LDcgKzgzOCw3IEBA
CiAgKiBAcGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKICAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQg
b2YgYSBwYWdlCiAgKgotICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2Ugd2hlcmUg
dGhlIHNwZWNpZmllZCBlbGVtZW50IHdpbGwgYmUgcHV0CisgKiBSZXR1cm4gdmFsdWU6ICh0cmFu
c2ZlciBub25lKTogVGhlIG51bWJlciBvZiBwYWdlIHdoZXJlIHRoZSBzcGVjaWZpZWQgZWxlbWVu
dCB3aWxsIGJlIHB1dAogICovCiBpbnQgd2Via2l0X3dlYl9mcmFtZV9wYWdlX251bWJlcl9mb3Jf
ZWxlbWVudF9ieV9pZChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBpZCwgZmxv
YXQgcGFnZVdpZHRoLCBmbG9hdCBwYWdlSGVpZ2h0KQogewpAQCAtODYwLDcgKzg2MCw3IEBACiAg
KiBAcGFnZVdpZHRoOiB3aWR0aCBvZiBhIHBhZ2UKICAqIEBwYWdlSGVpZ2h0OiBoZWlnaHQgb2Yg
YSBwYWdlCiAgKgotICogUmV0dXJuIHZhbHVlOiBUaGUgbnVtYmVyIG9mIHBhZ2VzIHRvIGJlIHBy
aW50ZWQuCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogVGhlIG51bWJlciBvZiBw
YWdlcyB0byBiZSBwcmludGVkLgogICovCiBpbnQgd2Via2l0X3dlYl9mcmFtZV9udW1iZXJfb2Zf
cGFnZXMoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBmbG9hdCBwYWdlV2lkdGgsIGZsb2F0IHBhZ2VI
ZWlnaHQpCiB7CkBAIC04NzcsNyArODc3LDcgQEAKICAqIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3Bl
bmRpbmdfdW5sb2FkX2V2ZW50X2NvdW50OgogICogQGZyYW1lOiBhICNXZWJLaXRXZWJGcmFtZQog
ICoKLSAqIFJldHVybiB2YWx1ZTogbnVtYmVyIG9mIHBlbmRpbmcgdW5sb2FkIGV2ZW50cworICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IG51bWJlciBvZiBwZW5kaW5nIHVubG9hZCBl
dmVudHMKICAqLwogZ3VpbnQgd2Via2l0X3dlYl9mcmFtZV9nZXRfcGVuZGluZ191bmxvYWRfZXZl
bnRfY291bnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogewpAQCAtMTE5OSw3ICsxMTk5LDcgQEAK
ICAqCiAgKiBSZXR1cm5zIHRoZSBAZnJhbWUncyBzZWN1cml0eSBvcmlnaW4uCiAgKgotICogUmV0
dXJuIHZhbHVlOiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIEBmcmFtZQorICogUmV0dXJuIHZhbHVl
OiAodHJhbnNmZXIgbm9uZSk6IHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgQGZyYW1lCiAgKgogICog
U2luY2U6IDEuMS4xNAogICovCkBAIC0xMjQxLDcgKzEyNDEsNyBAQAogICogZnJhbWUgd2FzIG5v
dCBjcmVhdGVkIGJ5IGEgbG9hZC4gWW91IG11c3QgdW5yZWYgdGhlIG9iamVjdCB3aGVuIHlvdQog
ICogYXJlIGRvbmUgd2l0aCBpdC4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IGEgI1dlYktpdE5ldHdv
cmtSZXNwb25zZSBvYmplY3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBhICNX
ZWJLaXROZXR3b3JrUmVzcG9uc2Ugb2JqZWN0CiAgKgogICogU2luY2U6IDEuMS4xOAogICovCklu
ZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRkb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCShyZXZpc2nDs246IDY2OTg3KQor
KysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0ZG93bmxvYWQuY3BwCShjb3BpYSBkZSB0cmFiYWpv
KQpAQCAtNTU4LDcgKzU1OCw3IEBACiAgKiBSZXRyaWV2ZXMgdGhlICNXZWJLaXROZXR3b3JrUmVx
dWVzdCBvYmplY3QgdGhhdCBiYWNrcyB0aGUgZG93bmxvYWQKICAqIHByb2Nlc3MuCiAgKgotICog
UmV0dXJuczogdGhlICNXZWJLaXROZXR3b3JrUmVxdWVzdCBpbnN0YW5jZQorICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdE5ldHdvcmtSZXF1ZXN0IGluc3RhbmNlCiAgKgog
ICogU2luY2U6IDEuMS4yCiAgKi8KQEAgLTU3Nyw3ICs1NzcsNyBAQAogICogUmV0cmlldmVzIHRo
ZSAjV2ViS2l0TmV0d29ya1Jlc3BvbnNlIG9iamVjdCB0aGF0IGJhY2tzIHRoZSBkb3dubG9hZAog
ICogcHJvY2Vzcy4KICAqCi0gKiBSZXR1cm5zOiB0aGUgI1dlYktpdE5ldHdvcmtSZXNwb25zZSBp
bnN0YW5jZQorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1dlYktpdE5ldHdvcmtS
ZXNwb25zZSBpbnN0YW5jZQogICoKICAqIFNpbmNlOiAxLjEuMTYKICAqLwpJbmRleDogV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jlc3BvbnNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVzcG9uc2UuY3BwCShyZXZpc2nDs246IDY2OTg3
KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0bmV0d29ya3Jlc3BvbnNlLmNwcAkoY29waWEg
ZGUgdHJhYmFqbykKQEAgLTE3NCw3ICsxNzQsNyBAQAogICoKICAqIENyZWF0ZXMgYSBuZXcgI1dl
YktpdE5ldHdvcmtSZXNwb25zZSBpbml0aWFsaXplZCB3aXRoIGFuIFVSSS4KICAqCi0gKiBSZXR1
cm5zOiBhIG5ldyAjV2ViS2l0TmV0d29ya1Jlc3BvbnNlLCBvciAlTlVMTCBpZiB0aGUgVVJJIGlz
CisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogYSBuZXcgI1dlYktpdE5ldHdvcmtS
ZXNwb25zZSwgb3IgJU5VTEwgaWYgdGhlIFVSSSBpcwogICogaW52YWxpZC4KICAqCiAgKiBTaW5j
ZTogMS4xLjE0CkBAIC0yMjIsNyArMjIyLDcgQEAKICAqIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNl
X2dldF91cmk6CiAgKiBAcmVzcG9uc2U6IGEgI1dlYktpdE5ldHdvcmtSZXNwb25zZQogICoKLSAq
IFJldHVybnM6IHRoZSB1cmkgb2YgdGhlICNXZWJLaXROZXR3b3JrUmVzcG9uc2UKKyAqIFJldHVy
biB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgdXJpIG9mIHRoZSAjV2ViS2l0TmV0d29ya1Jl
c3BvbnNlCiAgKgogICogU2luY2U6IDEuMS4xNAogICovCkBAIC0yNDEsMTQgKzI0MSwxNCBAQAog
fQogCiAvKioKLSAqIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF9zb3VwX21lc3NhZ2U6Cisg
KiB3ZWJraXRfbmV0d29ya19yZXNwb25zZV9nZXRfbWVzc2FnZToKICAqIEByZXNwb25zZTogYSAj
V2ViS2l0TmV0d29ya1Jlc3BvbnNlCiAgKgogICogT2J0YWlucyB0aGUgI1NvdXBNZXNzYWdlIHRo
YXQgcmVwcmVzZW50cyB0aGUgZ2l2ZW4gcmVzcG9uc2UuIE5vdGljZQogICogdGhhdCBvbmx5IHRo
ZSByZXNwb25zZSBzaWRlIG9mIHRoZSBIVFRQIGNvbnZlcnNhdGlvbiBpcwogICogcmVwcmVzZW50
ZWQuCiAgKgotICogUmV0dXJuczogdGhlICNTb3VwTWVzc2FnZQorICogUmV0dXJuIHZhbHVlOiAo
dHJhbnNmZXIgbm9uZSk6IHRoZSAjU291cE1lc3NhZ2UKICAqIFNpbmNlOiAxLjEuMTQKICAqLwog
U291cE1lc3NhZ2UqIHdlYmtpdF9uZXR3b3JrX3Jlc3BvbnNlX2dldF9tZXNzYWdlKFdlYktpdE5l
dHdvcmtSZXNwb25zZSogcmVzcG9uc2UpCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRz
ZWN1cml0eW9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
c2VjdXJpdHlvcmlnaW4uY3BwCShyZXZpc2nDs246IDY2OTg3KQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0c2VjdXJpdHlvcmlnaW4uY3BwCShjb3BpYSBkZSB0cmFiYWpvKQpAQCAtMjI0LDcg
KzIyNCw3IEBACiAgKgogICogUmV0dXJucyB0aGUgcHJvdG9jb2wgZm9yIHRoZSBzZWN1cml0eSBv
cmlnaW4uCiAgKgotICogUmV0dXJuczogdGhlIHByb3RvY29sIGZvciB0aGUgc2VjdXJpdHkgb3Jp
Z2luCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlIHByb3RvY29sIGZvciB0
aGUgc2VjdXJpdHkgb3JpZ2luCiAgKgogICogU2luY2U6IDEuMS4xNAogICoqLwpAQCAtMjQ3LDcg
KzI0Nyw3IEBACiAgKgogICogUmV0dXJucyB0aGUgaG9zdG5hbWUgZm9yIHRoZSBzZWN1cml0eSBv
cmlnaW4uCiAgKgotICogUmV0dXJuczogdGhlIGhvc3RuYW1lIGZvciB0aGUgc2VjdXJpdHkgb3Jp
Z2luCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlIGhvc3RuYW1lIGZvciB0
aGUgc2VjdXJpdHkgb3JpZ2luCiAgKgogICogU2luY2U6IDEuMS4xNAogICoqLwpAQCAtMjcwLDcg
KzI3MCw3IEBACiAgKgogICogUmV0dXJucyB0aGUgcG9ydCBmb3IgdGhlIHNlY3VyaXR5IG9yaWdp
bi4KICAqCi0gKiBSZXR1cm5zOiB0aGUgcG9ydCBmb3IgdGhlIHNlY3VyaXR5IG9yaWdpbgorICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBwb3J0IGZvciB0aGUgc2VjdXJpdHkg
b3JpZ2luCiAgKgogICogU2luY2U6IDEuMS4xNAogICoqLwpAQCAtMjg5LDcgKzI4OSw3IEBACiAg
KiBSZXR1cm5zIHRoZSBjdW11bGF0aXZlIHNpemUgb2YgYWxsIFdlYiBEYXRhYmFzZSBkYXRhYmFz
ZSdzIGluIHRoZSBvcmlnaW4KICAqIGluIGJ5dGVzLgogICoKLSAqIFJldHVybnM6IHRoZSBjdW11
bGF0aXZlIHNpemUgb2YgYWxsIGRhdGFiYXNlcyAKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVy
IG5vbmUpOiB0aGUgY3VtdWxhdGl2ZSBzaXplIG9mIGFsbCBkYXRhYmFzZXMgCiAgKgogICogU2lu
Y2U6IDEuMS4xNAogICoqLwpAQCAtMzEyLDcgKzMxMiw3IEBACiAgKiBSZXR1cm5zIHRoZSBxdW90
YSBmb3IgV2ViIERhdGFiYXNlIHN0b3JhZ2Ugb2YgdGhlIHNlY3VyaXR5IG9yaWdpbgogICogaW4g
Ynl0ZXMuCiAgKgotICogUmV0dXJuczogdGhlIFdlYiBEYXRhYmFzZSBxdW90YQorICogUmV0dXJu
IHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBXZWIgRGF0YWJhc2UgcXVvdGEKICAqCiAgKiBT
aW5jZTogMS4xLjE0CiAgKiovCkBAIC0zNTMsNyArMzUzLDcgQEAKICAqCiAgKiBSZXR1cm5zIGEg
bGlzdCBvZiBhbGwgV2ViIERhdGFiYXNlcyBpbiB0aGUgc2VjdXJpdHkgb3JpZ2luLgogICoKLSAq
IFJldHVybnM6IGEgI0dMaXN0IG9mIGRhdGFiYXNlcyBpbiB0aGUgc2VjdXJpdHkgb3JpZ2luLgor
ICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IGEgI0dMaXN0IG9mIGRhdGFiYXNlcyBp
biB0aGUgc2VjdXJpdHkgb3JpZ2luLgogICoKICAqIFNpbmNlOiAxLjEuMTQKICAqKi8KSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAJKHJldmlzacOzbjogNjY5ODcp
CisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJyZXNvdXJjZS5jcHAJKGNvcGlhIGRlIHRy
YWJham8pCkBAIC0yODUsNyArMjg1LDcgQEAKICAqCiAgKiBSZXR1cm5zIHRoZSBkYXRhIG9mIHRo
ZSBAd2ViUmVzb3VyY2UuCiAgKgotICogUmV0dXJuIHZhbHVlOiBhICNHU3RyaW5nIGNvbnRhaW5p
bmcgdGhlIGNoYXJhY3RlciBkYXRhIG9mIHRoZSBAd2ViUmVzb3VyY2UuCisgKiBSZXR1cm4gdmFs
dWU6ICh0cmFuc2ZlciBub25lKTogYSAjR1N0cmluZyBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIg
ZGF0YSBvZiB0aGUgQHdlYlJlc291cmNlLgogICogVGhlIHN0cmluZyBpcyBvd25lZCBieSBXZWJL
aXQgYW5kIHNob3VsZCBub3QgYmUgZnJlZWQgb3IgZGVzdHJveWVkLgogICoKICAqIFNpbmNlOiAx
LjEuMTQKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFzb3VyY2UuY3BwCShy
ZXZpc2nDs246IDY2OTg3KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZGF0YXNvdXJj
ZS5jcHAJKGNvcGlhIGRlIHRyYWJham8pCkBAIC0xNTEsNyArMTUxLDcgQEAKICAqIENyZWF0ZXMg
YSBuZXcgI1dlYktpdFdlYkRhdGFTb3VyY2UgaW5zdGFuY2UuIFRoZSBVUkwgb2YgdGhlCiAgKiAj
V2ViS2l0V2ViRGF0YVNvdXJjZSB3aWxsIGJlIHNldCB0byAiYWJvdXQ6YmxhbmsiLgogICoKLSAq
IFJldHVybjogYSBuZXcgI1dlYktpdFdlYkRhdGFTb3VyY2UuCisgKiBSZXR1cm4gdmFsdWU6ICh0
cmFuc2ZlciBub25lKTogYSBuZXcgI1dlYktpdFdlYkRhdGFTb3VyY2UuCiAgKgogICogU2luY2U6
IDEuMS4xNAogICovCkBAIC0xNzIsNyArMTcyLDcgQEAKICAqICNXZWJLaXRXZWJGcmFtZSBvYmpl
Y3RzIGNyZWF0ZSB0aGVpciBkYXRhIHNvdXJjZXMgc28geW91IHdpbGwgYWxtb3N0IG5ldmVyCiAg
KiB3YW50IHRvIGludm9rZSB0aGlzIG1ldGhvZCBkaXJlY3RseS4KICAqCi0gKiBSZXR1cm5zOiBh
IG5ldyAjV2ViS2l0V2ViRGF0YVNvdXJjZQorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9u
ZSk6IGEgbmV3ICNXZWJLaXRXZWJEYXRhU291cmNlCiAgKgogICogU2luY2U6IDEuMS4xNAogICov
CkBAIC0xOTQsMTIgKzE5NCwxMiBAQAogfQogCiAvKioKLSAqIHdlYmtpdF93ZWJfZGF0YV9zb3Vy
Y2VfZ2V0X3dlYl9mcmFtZQorICogd2Via2l0X3dlYl9kYXRhX3NvdXJjZV9nZXRfd2ViX2ZyYW1l
OgogICogQGRhdGFfc291cmNlOiBhICNXZWJLaXRXZWJEYXRhU291cmNlCiAgKgogICogUmV0dXJu
cyB0aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQgcmVwcmVzZW50cyB0aGlzIGRhdGEgc291cmNlCiAg
KgotICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQgcmVwcmVzZW50cyB0
aGUgQGRhdGFfc291cmNlLiBUaGUKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0
aGUgI1dlYktpdFdlYkZyYW1lIHRoYXQgcmVwcmVzZW50cyB0aGUgQGRhdGFfc291cmNlLiBUaGUK
ICAqICNXZWJLaXRXZWJGcmFtZSBpcyBvd25lZCBieSBXZWJLaXQgYW5kIHNob3VsZCBub3QgYmUg
ZnJlZWQgb3IgZGVzdHJveWVkLgogICogVGhpcyB3aWxsIHJldHVybiAlTlVMTCBvZiB0aGUgQGRh
dGFfc291cmNlIGlzIG5vdCBhdHRhY2hlZCB0byBhIGZyYW1lLgogICoKQEAgLTIyNyw3ICsyMjcs
NyBAQAogICogcHJpb3IgdG8gdGhlICJjb21taXR0ZWQiIGxvYWQgc3RhdGUuIFNlZSB3ZWJraXRf
d2ViX2RhdGFfc291cmNlX2dldF9yZXF1ZXN0CiAgKiBmb3IgZ2V0dGluZyB0aGUgImNvbW1pdHRl
ZCIgcmVxdWVzdC4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBvcmlnaW5hbCAjV2ViS2l0TmV0
d29ya1JlcXVlc3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgb3JpZ2lu
YWwgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CiAgKgogICogU2luY2U6IDEuMS4xNAogICovCkBAIC0y
NTQsNyArMjU0LDcgQEAKICAqIHRoZSByZXF1ZXN0IHRoYXQgd2FzICJjb21taXR0ZWQiLCBhbmQg
aGVuY2UsIGRpZmZlcmVudCBmcm9tIHRoZSByZXF1ZXN0IHlvdQogICogZ2V0IGZyb20gdGhlIHdl
YmtpdF93ZWJfZGF0YV9zb3VyY2VfZ2V0X2luaXRpYWxfcmVxdWVzdCBtZXRob2QuCiAgKgotICog
UmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdE5ldHdvcmtSZXF1ZXN0IHRoYXQgY3JlYXRlZCB0aGUg
QGRhdGFfc291cmNlIG9yCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlICNX
ZWJLaXROZXR3b3JrUmVxdWVzdCB0aGF0IGNyZWF0ZWQgdGhlIEBkYXRhX3NvdXJjZSBvcgogICog
JU5VTEwgaWYgdGhlIEBkYXRhX3NvdXJjZSBpcyBub3QgYXR0YWNoZWQgdG8gdGhlIGZyYW1lIG9y
IHRoZSBmcmFtZSBoYXNuJ3QKICAqIGJlZW4gbG9hZGVkLgogICoKQEAgLTI4NSw3ICsyODUsNyBA
QAogICogUmV0dXJucyB0aGUgdGV4dCBlbmNvZGluZyBuYW1lIGFzIHNldCBpbiB0aGUgI1dlYktp
dFdlYlZpZXcsIG9yIGlmIG5vdCwgdGhlCiAgKiB0ZXh0IGVuY29kaW5nIG9mIHRoZSByZXNwb25z
ZS4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBlbmNvZGluZyBuYW1lIG9mIHRoZSAjV2ViS2l0
V2ViVmlldyBvciBvZiB0aGUgcmVzcG9uc2UuCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBu
b25lKTogdGhlIGVuY29kaW5nIG5hbWUgb2YgdGhlICNXZWJLaXRXZWJWaWV3IG9yIG9mIHRoZSBy
ZXNwb25zZS4KICAqCiAgKiBTaW5jZTogMS4xLjE0CiAgKi8KQEAgLTMxMSw3ICszMTEsNyBAQAog
ICoKICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZGF0YSBzb3VyY2UgaXMgaW4gdGhlIHByb2Nl
c3Mgb2YgbG9hZGluZyBpdHMgY29udGVudC4KICAqCi0gKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlm
IHRoZSBAZGF0YV9zb3VyY2UgaXMgc3RpbGwgbG9hZGluZywgJUZBTFNFIG90aGVyd2lzZQorICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVFIGlmIHRoZSBAZGF0YV9zb3VyY2Ug
aXMgc3RpbGwgbG9hZGluZywgJUZBTFNFIG90aGVyd2lzZQogICoKICAqIFNpbmNlOiAxLjEuMTQK
ICAqLwpAQCAtMzMzLDcgKzMzMyw3IEBACiAgKiBmcmFtZSBoYXNuJ3QgbG9hZGVkIGFueSBkYXRh
LiBVc2Ugd2Via2l0X3dlYl9kYXRhX3NvdXJjZV9pc19sb2FkaW5nIHRvIHRlc3QKICAqIGlmIGRh
dGEgc291cmNlIGlzIGluIHRoZSBwcm9jZXNzIG9mIGxvYWRpbmcuCiAgKgotICogUmV0dXJuIHZh
bHVlOiBhICNHU3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSByYXcgZGF0YSB0aGF0IHJlcHJlc2Vu
dHMgdGhlIEBkYXRhX3NvdXJjZSBvciAlTlVMTCBpZiB0aGUKKyAqIFJldHVybiB2YWx1ZTogKHRy
YW5zZmVyIG5vbmUpOiBhICNHU3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSByYXcgZGF0YSB0aGF0
IHJlcHJlc2VudHMgdGhlIEBkYXRhX3NvdXJjZSBvciAlTlVMTCBpZiB0aGUKICAqIEBkYXRhX3Nv
dXJjZSBoYXNuJ3QgbG9hZGVkIGFueSBkYXRhLgogICoKICAqIFNpbmNlOiAxLjEuMTQKQEAgLTM2
NCw3ICszNjQsNyBAQAogICoKICAqIFJldHVybnMgdGhlIG1haW4gcmVzb3VyY2Ugb2YgdGhlIEBk
YXRhX3NvdXJjZQogICoKLSAqIFJldHVybiB2YWx1ZTogYSBuZXcgI1dlYktpdFdlYlJlc291cmNl
IHJlcHJlc2VudGluZyB0aGUgbWFpbiByZXNvdXJjZSBvZgorICogUmV0dXJuIHZhbHVlOiAodHJh
bnNmZXIgbm9uZSk6IGEgbmV3ICNXZWJLaXRXZWJSZXNvdXJjZSByZXByZXNlbnRpbmcgdGhlIG1h
aW4gcmVzb3VyY2Ugb2YKICAqIHRoZSBAZGF0YV9zb3VyY2UuCiAgKgogICogU2luY2U6IDEuMS4x
NApAQCAtMzk0LDcgKzM5NCw3IEBACiAgKiB1bnJlYWNoYWJsZSBVUkwgaWYgaXQgd2FzIGNyZWF0
ZWQgdXNpbmcgI1dlYktpdFdlYkZyYW1lJ3MKICAqIHdlYmtpdF93ZWJfZnJhbWVfbG9hZF9hbHRl
cm5hdGVfaHRtbF9zdHJpbmcgbWV0aG9kLgogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIHVucmVh
Y2hhYmxlIFVSTCBvZiBAZGF0YV9zb3VyY2Ugb3IgJU5VTEwgaWYgdGhlcmUgaXMgbm8gdW5yZWFj
aGFibGUgVVJMLgorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSB1bnJlYWNo
YWJsZSBVUkwgb2YgQGRhdGFfc291cmNlIG9yICVOVUxMIGlmIHRoZXJlIGlzIG5vIHVucmVhY2hh
YmxlIFVSTC4KICAqCiAgKiBTaW5jZTogMS4xLjE0CiAgKi8KQEAgLTQxNCwxMyArNDE0LDEzIEBA
CiB9CiAKIC8qKgotICogd2Via2l0X3dlYl9kYXRhX3NvdXJjZV9nZXRfc3VicmVzb3VyY2VzCisg
KiB3ZWJraXRfd2ViX2RhdGFfc291cmNlX2dldF9zdWJyZXNvdXJjZXM6CiAgKiBAZGF0YV9zb3Vy
Y2U6IGEgI1dlYktpdFdlYkRhdGFTb3VyY2UKICAqCiAgKiBHaXZlcyB5b3UgYSAjR0xpc3Qgb2Yg
I1dlYktpdFdlYlJlc291cmNlIG9iamVjdHMgdGhhdCBjb21wb3NlIHRoZQogICogI1dlYktpdFdl
YlZpZXcgdG8gd2hpY2ggdGhpcyAjV2ViS2l0V2ViRGF0YVNvdXJjZSBpcyBhdHRhY2hlZC4KICAq
Ci0gKiBSZXR1cm4gdmFsdWU6IGEgI0dMaXN0IG9mICNXZWJLaXRXZWJSZXNvdXJjZSBvYmplY3Rz
OyB0aGUgb2JqZWN0cyBhcmUKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBhICNH
TGlzdCBvZiAjV2ViS2l0V2ViUmVzb3VyY2Ugb2JqZWN0czsgdGhlIG9iamVjdHMgYXJlCiAgKiBv
d25lZCBieSBXZWJLaXQsIGJ1dCB0aGUgR0xpc3QgbXVzdCBiZSBmcmVlZC4KICAqCiAgKiBTaW5j
ZTogMS4xLjE1CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCShy
ZXZpc2nDs246IDY2OTg3KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Mu
Y3BwCShjb3BpYSBkZSB0cmFiYWpvKQpAQCAtMTI0Miw3ICsxMjQyLDcgQEAKICAqCiAgKiBDb3Bp
ZXMgYW4gZXhpc3RpbmcgI1dlYktpdFdlYlNldHRpbmdzIGluc3RhbmNlLgogICoKLSAqIFJldHVy
bnM6IGEgbmV3ICNXZWJLaXRXZWJTZXR0aW5ncyBpbnN0YW5jZQorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOiBhIG5ldyAjV2ViS2l0V2ViU2V0dGluZ3MgaW5zdGFuY2UKICAqKi8KIFdlYktp
dFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3Mq
IHdlYl9zZXR0aW5ncykKIHsKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmRhdGFi
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJkYXRhYmFz
ZS5jcHAJKHJldmlzacOzbjogNjY5ODcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJk
YXRhYmFzZS5jcHAJKGNvcGlhIGRlIHRyYWJham8pCkBAIC0yODQsNyArMjg0LDcgQEAKICAqCiAg
KiBSZXR1cm5zIHRoZSBzZWN1cml0eSBvcmlnaW4gb2YgdGhlICNXZWJLaXRXZWJEYXRhYmFzZS4K
ICAqCi0gKiBSZXR1cm5zOiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBkYXRhYmFzZQorICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgc2VjdXJpdHkgb3JpZ2luIG9mIHRoZSBkYXRh
YmFzZQogICoKICAqIFNpbmNlOiAxLjEuMTQKICAqKi8KQEAgLTMwMiw3ICszMDIsNyBAQAogICoK
ICAqIFJldHVybnMgdGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSAjV2ViS2l0V2ViRGF0YWJhc2Uu
CiAgKgotICogUmV0dXJuczogdGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZQogICoKICAqIFNpbmNlOiAx
LjEuMTQKICAqKi8KSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdG5ldHdvcmtyZXF1ZXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3b3JrcmVxdWVz
dC5jcHAJKHJldmlzacOzbjogNjY5ODcpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRuZXR3
b3JrcmVxdWVzdC5jcHAJKGNvcGlhIGRlIHRyYWJham8pCkBAIC0xNzcsNyArMTc3LDcgQEAKICAq
CiAgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXROZXR3b3JrUmVxdWVzdCBpbml0aWFsaXplZCB3aXRo
IGFuIFVSSS4KICAqCi0gKiBSZXR1cm5zOiBhIG5ldyAjV2ViS2l0TmV0d29ya1JlcXVlc3QsIG9y
ICVOVUxMIGlmIHRoZSBVUkkgaXMKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBh
IG5ldyAjV2ViS2l0TmV0d29ya1JlcXVlc3QsIG9yICVOVUxMIGlmIHRoZSBVUkkgaXMKICAqIGlu
dmFsaWQuCiAgKi8KIFdlYktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfbmV0d29ya19yZXF1ZXN0
X25ldyhjb25zdCBnY2hhciogdXJpKQpAQCAtMjIyLDcgKzIyMiw3IEBACiAgKiB3ZWJraXRfbmV0
d29ya19yZXF1ZXN0X2dldF91cmk6CiAgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVl
c3QKICAqCi0gKiBSZXR1cm5zOiB0aGUgdXJpIG9mIHRoZSAjV2ViS2l0TmV0d29ya1JlcXVlc3QK
KyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgdXJpIG9mIHRoZSAjV2ViS2l0
TmV0d29ya1JlcXVlc3QKICAqCiAgKiBTaW5jZTogMS4wLjAKICAqLwpAQCAtMjQxLDcgKzI0MSw3
IEBACiB9CiAKIC8qKgotICogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfc291cF9tZXNzYWdl
OgorICogd2Via2l0X25ldHdvcmtfcmVxdWVzdF9nZXRfbWVzc2FnZToKICAqIEByZXF1ZXN0OiBh
ICNXZWJLaXROZXR3b3JrUmVxdWVzdAogICoKICAqIE9idGFpbnMgdGhlICNTb3VwTWVzc2FnZSBo
ZWxkIGFuZCB1c2VkIGJ5IHRoZSBnaXZlbiByZXF1ZXN0LiBOb3RpY2UKQEAgLTI0OSw3ICsyNDks
NyBAQAogICogaGFuZGxlcnMgaXMgb25seSBzdXBwb3J0ZWQgKGFzIGluLCB3aWxsIG9ubHkgYWZm
ZWN0IHdoYXQgaXMKICAqIGFjdHVhbGx5IHNlbnQgdG8gdGhlIHNlcnZlcikgd2hlcmUgZXhwbGlj
aXRseSBkb2N1bWVudGVkLgogICoKLSAqIFJldHVybnM6IHRoZSAjU291cE1lc3NhZ2UKKyAqIFJl
dHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI1NvdXBNZXNzYWdlCiAgKiBTaW5jZTog
MS4xLjkKICAqLwogU291cE1lc3NhZ2UqIHdlYmtpdF9uZXR3b3JrX3JlcXVlc3RfZ2V0X21lc3Nh
Z2UoV2ViS2l0TmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpCkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmluc3BlY3Rvci5jcHAJKHJldmlzacOzbjogNjY5ODcpCisrKyBXZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJpbnNwZWN0b3IuY3BwCShjb3BpYSBkZSB0cmFiYWpvKQpAQCAtNDI2
LDcgKzQyNiw3IEBACiAgKiB0aGF0IHRoaXMgbWV0aG9kIG1heSByZXR1cm4gJU5VTEwgaWYgdGhl
IHVzZXIgaGFzbid0IGluc3BlY3RlZAogICogYW55dGhpbmcuCiAgKgotICogUmV0dXJuczogdGhl
ICNXZWJLaXRXZWJWaWV3IGluc3RhbmNlIHRoYXQgaXMgdXNlZCB0byByZW5kZXIgdGhlCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjV2ViS2l0V2ViVmlldyBpbnN0YW5jZSB0aGF0
IGlzIHVzZWQgdG8gcmVuZGVyIHRoZQogICogaW5zcGVjdG9yIG9yICVOVUxMIGlmIGl0IGlzIG5v
dCB5ZXQgY3JlYXRlZC4KICAqCiAgKiBTaW5jZTogMS4wLjMKSW5kZXg6IFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCShyZXZpc2nDs246IDY2OTg3KQorKysgV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAJKGNvcGlhIGRlIHRyYWJham8pCkBAIC0xNTUzLDcgKzE1NTMsNyBA
QAogICAgICAqIHRoZSBuZXcgI1dlYktpdFdlYlZpZXcuIFRoZSB3aWRnZXQgdG8gd2hpY2ggdGhl
IHdpZGdldCBpcyBhZGRlZCB3aWxsCiAgICAgICogaGFuZGxlIHRoYXQuCiAgICAgICoKLSAgICAg
KiBSZXR1cm4gdmFsdWU6IGEgbmV3bHkgYWxsb2NhdGVkICNXZWJLaXRXZWJWaWV3LCBvciAlTlVM
TAorICAgICAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBhIG5ld2x5IGFsbG9jYXRl
ZCAjV2ViS2l0V2ViVmlldywgb3IgJU5VTEwKICAgICAgKgogICAgICAqIFNpbmNlOiAxLjAuMwog
ICAgICAqLwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAKICAgICAgKiB0aW1lIG9mIHRoZSB3aW5kb3cs
IHNvIHlvdSBtYXkgd2FudCB0byBjb25uZWN0IHRvIHRoZSA6Om5vdGlmeQogICAgICAqIHNpZ25h
bCBvZiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIG9iamVjdCB0byBoYW5kbGUgdGhvc2Uu
CiAgICAgICoKLSAgICAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIHRvIHN0b3AgaGFuZGxlcnMgZnJv
bSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQgb3IKKyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0
cmFuc2ZlciBub25lKTogJVRSVUUgdG8gc3RvcCBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQg
Zm9yIHRoZSBldmVudCBvcgogICAgICAqICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1
cnRlcgogICAgICAqCiAgICAgICogU2luY2U6IDEuMC4zCkBAIC0xNjA1LDcgKzE2MDUsNyBAQAog
ICAgICAqIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IGRvIGFueXRoaW5nLiBJdCBpcyB0aGUgb3du
ZXIncyByZXNwb25zaWJpbGl0eQogICAgICAqIHRvIGhpZGUgb3IgZGVsZXRlIHRoZSB3ZWIgdmll
dywgaWYgbmVjZXNzYXJ5LgogICAgICAqCi0gICAgICogUmV0dXJuIHZhbHVlOiAlVFJVRSB0byBz
dG9wIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tlZCBmb3IgdGhlIGV2ZW50IG9yCisgICAgICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVFIHRvIHN0b3AgaGFuZGxlcnMgZnJv
bSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQgb3IKICAgICAgKiAlRkFMU0UgdG8gcHJvcGFn
YXRlIHRoZSBldmVudCBmdXJ0ZXIKICAgICAgKgogICAgICAqIFNpbmNlOiAxLjEuMTEKQEAgLTE2
MjcsNyArMTYyNyw3IEBACiAgICAgICoKICAgICAgKiBFbWl0dGVkIHdoZW4gQGZyYW1lIHJlcXVl
c3RzIGEgbmF2aWdhdGlvbiB0byBhbm90aGVyIHBhZ2UuCiAgICAgICoKLSAgICAgKiBSZXR1cm4g
dmFsdWU6IGEgI1dlYktpdE5hdmlnYXRpb25SZXNwb25zZQorICAgICAqIFJldHVybiB2YWx1ZTog
KHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXROYXZpZ2F0aW9uUmVzcG9uc2UKICAgICAgKgogICAg
ICAqIERlcHJlY2F0ZWQ6IFVzZSBXZWJLaXRXZWJWaWV3OjpuYXZpZ2F0aW9uLXBvbGljeS1kZWNp
c2lvbi1yZXF1ZXN0ZWQKICAgICAgKiBpbnN0ZWFkCkBAIC0xNjcxLDcgKzE2NzEsNyBAQAogICAg
ICAqIHdlYmtpdF93ZWJfcG9saWN5X2RlY2lzaW9uX2Rvd25sb2FkKCkgb24gdGhlIEBwb2xpY3lf
ZGVjaXNpb24KICAgICAgKiBvYmplY3QuCiAgICAgICoKLSAgICAgKiBSZXR1cm4gdmFsdWU6ICVU
UlVFIGlmIGEgZGVjaXNpb24gd2FzIG1hZGUsICVGQUxTRSB0byBoYXZlIHRoZQorICAgICAqIFJl
dHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBpZiBhIGRlY2lzaW9uIHdhcyBtYWRl
LCAlRkFMU0UgdG8gaGF2ZSB0aGUKICAgICAgKiBkZWZhdWx0IGJlaGF2aW9yIGFwcGx5CiAgICAg
ICoKICAgICAgKiBTaW5jZTogMS4xLjQKQEAgLTE3MDksNyArMTcwOSw3IEBACiAgICAgICogd2Vi
a2l0X3dlYl9wb2xpY3lfZGVjaXNpb25fZG93bmxvYWQoKSBvbiB0aGUgQHBvbGljeV9kZWNpc2lv
bgogICAgICAqIG9iamVjdC4KICAgICAgKgotICAgICAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYg
YSBkZWNpc2lvbiB3YXMgbWFkZSwgJUZBTFNFIHRvIGhhdmUgdGhlCisgICAgICogUmV0dXJuIHZh
bHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVFIGlmIGEgZGVjaXNpb24gd2FzIG1hZGUsICVGQUxT
RSB0byBoYXZlIHRoZQogICAgICAqIGRlZmF1bHQgYmVoYXZpb3IgYXBwbHkKICAgICAgKgogICAg
ICAqIFNpbmNlOiAxLjAuMwpAQCAtMTc1MSw3ICsxNzUxLDcgQEAKICAgICAgKiB3ZWJraXRfd2Vi
X3BvbGljeV9kZWNpc2lvbl9kb3dubG9hZCgpIG9uIHRoZSBAcG9saWN5X2RlY2lzaW9uCiAgICAg
ICogb2JqZWN0LgogICAgICAqCi0gICAgICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiBhIGRlY2lz
aW9uIHdhcyBtYWRlLCAlRkFMU0UgdG8gaGF2ZSB0aGUKKyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0
cmFuc2ZlciBub25lKTogJVRSVUUgaWYgYSBkZWNpc2lvbiB3YXMgbWFkZSwgJUZBTFNFIHRvIGhh
dmUgdGhlCiAgICAgICogZGVmYXVsdCBiZWhhdmlvciBhcHBseQogICAgICAqCiAgICAgICogU2lu
Y2U6IDEuMC4zCkBAIC0xODIyLDcgKzE4MjIsNyBAQAogICAgICAqIGlzIHRvIGRvd25sb2FkIGFu
eXRoaW5nIHRoYXQgV2ViS2l0IGNhbid0IGhhbmRsZSwgd2hpY2ggeW91IGNhbgogICAgICAqIGZp
Z3VyZSBvdXQgYnkgdXNpbmcgd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSgpKS4K
ICAgICAgKgotICAgICAqIFJldHVybiB2YWx1ZTogVFJVRSBpZiB0aGUgZG93bmxvYWQgc2hvdWxk
IGJlIHBlcmZvcm1lZCwgJUZBTFNFIHRvCisgICAgICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIg
bm9uZSk6IFRSVUUgaWYgdGhlIGRvd25sb2FkIHNob3VsZCBiZSBwZXJmb3JtZWQsICVGQUxTRSB0
bwogICAgICAqIGNhbmNlbCBpdAogICAgICAqCiAgICAgICogU2luY2U6IDEuMS4yCkBAIC0xOTA2
LDcgKzE5MDYsNyBAQAogICAgICAqCiAgICAgICogU2luY2U6IDEuMS42CiAgICAgICoKLSAgICAg
KiBSZXR1cm4gdmFsdWU6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBp
bnZva2VkIGZvciB0aGUKKyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogJVRS
VUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQogICAg
ICAqIGV2ZW50LiAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgogICAgICAq
LwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xPQURfRVJST1JdID0gZ19zaWduYWxfbmV3
KCJsb2FkLWVycm9yIiwKQEAgLTIwMjksNyArMjAyOSw3IEBACiAgICAgICogaWdub3JlIGEgcHJp
bnQgcmVxdWVzdCB5b3UgbXVzdCBjb25uZWN0IHRvIHRoaXMgc2lnbmFsLCBhbmQKICAgICAgKiBy
ZXR1cm4gJVRSVUUuCiAgICAgICoKLSAgICAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIHRoZSBw
cmludCByZXF1ZXN0IGhhcyBiZWVuIGhhbmRsZWQsICVGQUxTRSBpZgorICAgICAqIFJldHVybiB2
YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBpZiB0aGUgcHJpbnQgcmVxdWVzdCBoYXMgYmVl
biBoYW5kbGVkLCAlRkFMU0UgaWYKICAgICAgKiB0aGUgZGVmYXVsdCBoYW5kbGVyIHNob3VsZCBy
dW4KICAgICAgKgogICAgICAqIFNpbmNlOiAxLjEuNQpAQCAtMjA5MSw3ICsyMDkxLDcgQEAKICAg
ICAgKgogICAgICAqIEEgSmF2YVNjcmlwdCBjb25zb2xlIG1lc3NhZ2Ugd2FzIGNyZWF0ZWQuCiAg
ICAgICoKLSAgICAgKiBSZXR1cm4gdmFsdWU6ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMg
ZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUKKyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2Zl
ciBub25lKTogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQg
Zm9yIHRoZQogICAgICAqIGV2ZW50LiAlRkFMU0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0
aGVyLgogICAgICAqLwogICAgIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0NPTlNPTEVfTUVTU0FH
RV0gPSBnX3NpZ25hbF9uZXcoImNvbnNvbGUtbWVzc2FnZSIsCkBAIC0yMTEyLDcgKzIxMTIsNyBA
QAogICAgICAqCiAgICAgICogQSBKYXZhU2NyaXB0IGFsZXJ0IGRpYWxvZyB3YXMgY3JlYXRlZC4K
ICAgICAgKgotICAgICAqIFJldHVybiB2YWx1ZTogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVy
cyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQorICAgICAqIFJldHVybiB2YWx1ZTogKHRyYW5z
ZmVyIG5vbmUpOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcgaW52b2tl
ZCBmb3IgdGhlCiAgICAgICogZXZlbnQuICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2ZW50IGZ1
cnRoZXIuCiAgICAgICovCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0NSSVBUX0FMRVJU
XSA9IGdfc2lnbmFsX25ldygic2NyaXB0LWFsZXJ0IiwKQEAgLTIxMzQsNyArMjEzNCw3IEBACiAg
ICAgICoKICAgICAgKiBBIEphdmFTY3JpcHQgY29uZmlybSBkaWFsb2cgd2FzIGNyZWF0ZWQsIHBy
b3ZpZGluZyBZZXMgYW5kIE5vIGJ1dHRvbnMuCiAgICAgICoKLSAgICAgKiBSZXR1cm4gdmFsdWU6
ICVUUlVFIHRvIHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUK
KyAgICAgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogJVRSVUUgdG8gc3RvcCBvdGhl
ciBoYW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQogICAgICAqIGV2ZW50LiAlRkFM
U0UgdG8gcHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgogICAgICAqLwogICAgIHdlYmtpdF93
ZWJfdmlld19zaWduYWxzW1NDUklQVF9DT05GSVJNXSA9IGdfc2lnbmFsX25ldygic2NyaXB0LWNv
bmZpcm0iLApAQCAtMjE1Nyw3ICsyMTU3LDcgQEAKICAgICAgKgogICAgICAqIEEgSmF2YVNjcmlw
dCBwcm9tcHQgZGlhbG9nIHdhcyBjcmVhdGVkLCBwcm92aWRpbmcgYW4gZW50cnkgdG8gaW5wdXQg
dGV4dC4KICAgICAgKgotICAgICAqIFJldHVybiB2YWx1ZTogJVRSVUUgdG8gc3RvcCBvdGhlciBo
YW5kbGVycyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZQorICAgICAqIFJldHVybiB2YWx1ZTog
KHRyYW5zZmVyIG5vbmUpOiAlVFJVRSB0byBzdG9wIG90aGVyIGhhbmRsZXJzIGZyb20gYmVpbmcg
aW52b2tlZCBmb3IgdGhlCiAgICAgICogZXZlbnQuICVGQUxTRSB0byBwcm9wYWdhdGUgdGhlIGV2
ZW50IGZ1cnRoZXIuCiAgICAgICovCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbU0NSSVBU
X1BST01QVF0gPSBnX3NpZ25hbF9uZXcoInNjcmlwdC1wcm9tcHQiLApAQCAtMjI4Niw3ICsyMjg2
LDcgQEAKICAgICAgKiBUaGUgI1dlYktpdFdlYlZpZXc6Om1vdmUtY3Vyc29yIHdpbGwgYmUgZW1p
dHRlZCB0byBhcHBseSB0aGUKICAgICAgKiBjdXJzb3IgbW92ZW1lbnQgZGVzY3JpYmVkIGJ5IGl0
cyBwYXJhbWV0ZXJzIHRvIHRoZSBAdmlldy4KICAgICAgKgotICAgICAqIFJldHVybiB2YWx1ZTog
JVRSVUUgb3IgJUZBTFNFCisgICAgICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVU
UlVFIG9yICVGQUxTRQogICAgICAqIAogICAgICAqIFNpbmNlOiAxLjEuNAogICAgICAqLwpAQCAt
MjMxNCw3ICsyMzE0LDcgQEAKICAgICAgKiB0byBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIG9mICJ3
ZWJraXQtd2lkZ2V0LWlzLXNlbGVjdGVkIi4gVGhpcyBjYW4KICAgICAgKiBiZSB1c2VkIHRvIGRy
YXcgYSB2aXN1YWwgaW5kaWNhdG9yIG9mIHRoZSBzZWxlY3Rpb24uCiAgICAgICoKLSAgICAgKiBS
ZXR1cm4gdmFsdWU6IGEgbmV3ICNHdGtXaWRnZXQsIG9yICVOVUxMCisgICAgICogUmV0dXJuIHZh
bHVlOiAodHJhbnNmZXIgbm9uZSk6IGEgbmV3ICNHdGtXaWRnZXQsIG9yICVOVUxMCiAgICAgICoK
ICAgICAgKiBTaW5jZTogMS4xLjgKICAgICAgKi8KQEAgLTMyODAsNyArMzI4MCw3IEBACiB9CiAK
IC8qKgotICogd2Via2l0X3dlYl92aWV3X2dldF93aW5kb3dfZmVhdHVyZXMKKyAqIHdlYmtpdF93
ZWJfdmlld19nZXRfd2luZG93X2ZlYXR1cmVzOgogICogQHdlYl92aWV3OiBhICNXZWJLaXRXZWJW
aWV3CiAgKgogICogUmV0dXJucyB0aGUgaW5zdGFuY2Ugb2YgI1dlYktpdFdlYldpbmRvd0ZlYXR1
cmVzIGhlbGQgYnkgdGhlIGdpdmVuCkBAIC0zMzA2LDcgKzMzMDYsNyBAQAogICoKICAqIFNpbmNl
OiAxLjEuNAogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIHRpdGxlIG9mIEB3ZWJfdmlldworICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSB0aXRsZSBvZiBAd2ViX3ZpZXcKICAq
LwogR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTMzMjQsNyArMzMyNCw3IEBACiAgKgogICogU2luY2U6
IDEuMS40CiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgVVJJIG9mIEB3ZWJfdmlldworICogUmV0
dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBVUkkgb2YgQHdlYl92aWV3CiAgKi8KIEdf
Q09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3KQogewpAQCAtMzM3Niw3ICszMzc2LDcgQEAKICAqCiAgKiBHbyB0byB0aGUgc3Bl
Y2lmaWVkICNXZWJLaXRXZWJIaXN0b3J5SXRlbQogICoKLSAqIFJldHVybiB2YWx1ZTogJVRSVUUg
aWYgbG9hZGluZyBvZiBpdGVtIGlzIHN1Y2Nlc3NmdWwsICVGQUxTRSBpZiBub3QKKyAqIFJldHVy
biB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBpZiBsb2FkaW5nIG9mIGl0ZW0gaXMgc3Vj
Y2Vzc2Z1bCwgJUZBTFNFIGlmIG5vdAogICovCiBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ29f
dG9fYmFja19mb3J3YXJkX2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIGl0ZW0pCiB7CkBAIC0zNDM5LDcgKzM0MzksNyBAQAogICoKICAqIERldGVybWlu
ZXMgd2hldGhlciAjd2ViX3ZpZXcgaGFzIGEgcHJldmlvdXMgaGlzdG9yeSBpdGVtLgogICoKLSAq
IFJldHVybiB2YWx1ZTogJVRSVUUgaWYgYWJsZSB0byBtb3ZlIGJhY2ssICVGQUxTRSBvdGhlcndp
c2UKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBpZiBhYmxlIHRvIG1v
dmUgYmFjaywgJUZBTFNFIG90aGVyd2lzZQogICovCiBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2JhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM0NTksNyArMzQ1OSw3
IEBACiAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgI3dlYl92aWV3IGhhcyBhIGhpc3RvcnkgaXRlbSBv
ZiBAc3RlcHMuIE5lZ2F0aXZlIHZhbHVlcwogICogcmVwcmVzZW50IHN0ZXBzIGJhY2t3YXJkIHdo
aWxlIHBvc2l0aXZlIHZhbHVlcyByZXByZXNlbnQgc3RlcHMgZm9yd2FyZC4KICAqCi0gKiBSZXR1
cm4gdmFsdWU6ICVUUlVFIGlmIGFibGUgdG8gbW92ZSBiYWNrIG9yIGZvcndhcmQgdGhlIGdpdmVu
IG51bWJlciBvZgorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVFIGlmIGFi
bGUgdG8gbW92ZSBiYWNrIG9yIGZvcndhcmQgdGhlIGdpdmVuIG51bWJlciBvZgogICogc3RlcHMs
ICVGQUxTRSBvdGhlcndpc2UKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19i
YWNrX29yX2ZvcndhcmQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgZ2ludCBzdGVwcykKQEAgLTM0
NzUsNyArMzQ3NSw3IEBACiAgKgogICogRGV0ZXJtaW5lcyB3aGV0aGVyICN3ZWJfdmlldyBoYXMg
YSBuZXh0IGhpc3RvcnkgaXRlbS4KICAqCi0gKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIGFibGUg
dG8gbW92ZSBmb3J3YXJkLCAlRkFMU0Ugb3RoZXJ3aXNlCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFu
c2ZlciBub25lKTogJVRSVUUgaWYgYWJsZSB0byBtb3ZlIGZvcndhcmQsICVGQUxTRSBvdGhlcndp
c2UKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcpCiB7CkBAIC0zNjQ2LDcgKzM2NDYsNyBAQAogICoKICAqIExvb2tzIGZv
ciBhIHNwZWNpZmllZCBzdHJpbmcgaW5zaWRlICN3ZWJfdmlldy4KICAqCi0gKiBSZXR1cm4gdmFs
dWU6ICVUUlVFIG9uIHN1Y2Nlc3Mgb3IgJUZBTFNFIG9uIGZhaWx1cmUKKyAqIFJldHVybiB2YWx1
ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBvbiBzdWNjZXNzIG9yICVGQUxTRSBvbiBmYWlsdXJl
CiAgKi8KIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19zZWFyY2hfdGV4dChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc3RyaW5nLCBnYm9vbGVhbiBjYXNlU2Vuc2l0aXZlLCBn
Ym9vbGVhbiBmb3J3YXJkLCBnYm9vbGVhbiBzaG91bGRXcmFwKQogewpAQCAtMzY2OCw3ICszNjY4
LDcgQEAKICAqCiAgKiBBdHRlbXB0cyB0byBoaWdobGlnaHQgYWxsIG9jY3VyYW5jZXMgb2YgI3N0
cmluZyBpbnNpZGUgI3dlYl92aWV3LgogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIG51bWJlciBv
ZiBzdHJpbmdzIGhpZ2hsaWdodGVkCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTog
dGhlIG51bWJlciBvZiBzdHJpbmdzIGhpZ2hsaWdodGVkCiAgKi8KIGd1aW50IHdlYmtpdF93ZWJf
dmlld19tYXJrX3RleHRfbWF0Y2hlcyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hh
ciogc3RyaW5nLCBnYm9vbGVhbiBjYXNlU2Vuc2l0aXZlLCBndWludCBsaW1pdCkKIHsKQEAgLTM3
MTEsNiArMzcxMSwxNCBAQAogICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT51bm1hcmtBbGxUZXh0
TWF0Y2hlcygpOwogfQogCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZToK
KyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKTogQSAjV2ViS2l0V2ViRnJhbWUKKyAqIFJlbW92ZXMgaGlnaGxpZ2h0aW5nIHByZXZp
b3VzbHkgc2V0IGJ5IHdlYmtpdF93ZWJfdmlld19tYXJrX3RleHRfbWF0Y2hlcy4KKyAqLworCiBX
ZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl92aWV3X2dldF9tYWluX2ZyYW1lKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBOVUxMKTsKQEAgLTM3MjUsNyArMzczMyw3IEBACiAgKgogICogUmV0dXJu
cyB0aGUgZnJhbWUgdGhhdCBoYXMgZm9jdXMgb3IgYW4gYWN0aXZlIHRleHQgc2VsZWN0aW9uLgog
ICoKLSAqIFJldHVybiB2YWx1ZTogVGhlIGZvY3VzZWQgI1dlYktpdFdlYkZyYW1lIG9yICVOVUxM
IGlmIG5vIGZyYW1lIGlzIGZvY3VzZWQKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUp
OiBUaGUgZm9jdXNlZCAjV2ViS2l0V2ViRnJhbWUgb3IgJU5VTEwgaWYgbm8gZnJhbWUgaXMgZm9j
dXNlZAogICovCiBXZWJLaXRXZWJGcmFtZSogd2Via2l0X3dlYl92aWV3X2dldF9mb2N1c2VkX2Zy
YW1lKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CkBAIC0zNzQ5LDcgKzM3NTcsNyBAQAogICoK
ICAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IHBvc3NpYmxlIHRv
IGN1dCB0byB0aGUgY2xpcGJvYXJkLgogICoKLSAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYgYSBz
ZWxlY3Rpb24gY2FuIGJlIGN1dCwgJUZBTFNFIGlmIG5vdAorICogUmV0dXJuIHZhbHVlOiAodHJh
bnNmZXIgbm9uZSk6ICVUUlVFIGlmIGEgc2VsZWN0aW9uIGNhbiBiZSBjdXQsICVGQUxTRSBpZiBu
b3QKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9jdXRfY2xpcGJvYXJkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiB7CkBAIC0zNzY1LDcgKzM3NzMsNyBAQAogICoKICAqIERldGVy
bWluZXMgd2hldGhlciBvciBub3QgaXQgaXMgY3VycmVudGx5IHBvc3NpYmxlIHRvIGNvcHkgdG8g
dGhlIGNsaXBib2FyZC4KICAqCi0gKiBSZXR1cm4gdmFsdWU6ICVUUlVFIGlmIGEgc2VsZWN0aW9u
IGNhbiBiZSBjb3BpZWQsICVGQUxTRSBpZiBub3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVy
IG5vbmUpOiAlVFJVRSBpZiBhIHNlbGVjdGlvbiBjYW4gYmUgY29waWVkLCAlRkFMU0UgaWYgbm90
CiAgKi8KIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19jYW5fY29weV9jbGlwYm9hcmQoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM3ODEsNyArMzc4OSw3IEBACiAgKgogICogRGV0ZXJt
aW5lcyB3aGV0aGVyIG9yIG5vdCBpdCBpcyBjdXJyZW50bHkgcG9zc2libGUgdG8gcGFzdGUgZnJv
bSB0aGUgY2xpcGJvYXJkLgogICoKLSAqIFJldHVybiB2YWx1ZTogJVRSVUUgaWYgYSBzZWxlY3Rp
b24gY2FuIGJlIHBhc3RlZCwgJUZBTFNFIGlmIG5vdAorICogUmV0dXJuIHZhbHVlOiAodHJhbnNm
ZXIgbm9uZSk6ICVUUlVFIGlmIGEgc2VsZWN0aW9uIGNhbiBiZSBwYXN0ZWQsICVGQUxTRSBpZiBu
b3QKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Nhbl9wYXN0ZV9jbGlwYm9hcmQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM4NTMsNyArMzg2MSw3IEBACiAgKgogICogRGV0
ZXJtaW5lcyB3aGV0aGVyIHRleHQgd2FzIHNlbGVjdGVkLgogICoKLSAqIFJldHVybiB2YWx1ZTog
JVRSVUUgaWYgdGhlcmUgaXMgc2VsZWN0ZWQgdGV4dCwgJUZBTFNFIGlmIG5vdAorICogUmV0dXJu
IHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVFIGlmIHRoZXJlIGlzIHNlbGVjdGVkIHRleHQs
ICVGQUxTRSBpZiBub3QKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2hhc19zZWxlY3Rp
b24oV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM4NjgsNyArMzg3Niw3IEBACiAgKgog
ICogUmV0cmlldmVzIHRoZSBzZWxlY3RlZCB0ZXh0IGlmIGFueS4KICAqCi0gKiBSZXR1cm4gdmFs
dWU6IGEgbmV3bHkgYWxsb2NhdGVkIHN0cmluZyB3aXRoIHRoZSBzZWxlY3Rpb24gb3IgJU5VTEwK
KyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBhIG5ld2x5IGFsbG9jYXRlZCBzdHJp
bmcgd2l0aCB0aGUgc2VsZWN0aW9uIG9yICVOVUxMCiAgKi8KIGdjaGFyKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NlbGVjdGVkX3RleHQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM5MDEs
NyArMzkwOSw3IEBACiAgKiBpdCBkb2Vzbid0LiBZb3UgY2FuIGNoYW5nZSBAd2ViX3ZpZXcncyBk
b2N1bWVudCBwcm9ncmFtbWF0aWNhbGx5IHJlZ2FyZGxlc3Mgb2YKICAqIHRoaXMgc2V0dGluZy4K
ICAqCi0gKiBSZXR1cm4gdmFsdWU6IGEgI2dib29sZWFuIGluZGljYXRpbmcgdGhlIGVkaXRhYmxl
IHN0YXRlCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogYSAjZ2Jvb2xlYW4gaW5k
aWNhdGluZyB0aGUgZWRpdGFibGUgc3RhdGUKICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3
X2dldF9lZGl0YWJsZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAtMzk2NSw3ICszOTcz
LDcgQEAKICAqIHVzaW5nIGd0a190YXJnZXRfbGlzdF9hZGQoKSBhbmQKICAqIGd0a190YXJnZXRf
bGlzdF9hZGRfdGV4dF90YXJnZXRzKCkuCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgI0d0a1Rh
cmdldExpc3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI0d0a1Rhcmdl
dExpc3QKICAqKi8KIEd0a1RhcmdldExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfY29weV90YXJn
ZXRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpAQCAtMzk4Miw3ICszOTkwLDcgQEAK
ICAqIHVzaW5nIGd0a190YXJnZXRfbGlzdF9hZGQoKSBhbmQKICAqIGd0a190YXJnZXRfbGlzdF9h
ZGRfdGV4dF90YXJnZXRzKCkuCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgI0d0a1RhcmdldExp
c3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgI0d0a1RhcmdldExpc3QK
ICAqKi8KIEd0a1RhcmdldExpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfcGFzdGVfdGFyZ2V0X2xp
c3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKQEAgLTM5OTYsNyArNDAwNCw3IEBACiAgKgog
ICogVGhpcyBmdW5jdGlvbnMgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhIE1JTUUgdHlwZSBjYW4g
YmUgZGlzcGxheWVkIHVzaW5nIHRoaXMgdmlldy4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IGEgI2di
b29sZWFuIGluZGljYXRpbmcgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUgZGlzcGxheWVkCisgKiBS
ZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogYSAjZ2Jvb2xlYW4gaW5kaWNhdGluZyBpZiB0
aGUgTUlNRSB0eXBlIGNhbiBiZSBkaXNwbGF5ZWQKICAqCiAgKiBTaW5jZTogMS4wLjMKICAqKi8K
QEAgLTQwMTgsNyArNDAyNiw3IEBACiAgKgogICogUmV0dXJucyB3aGV0aGVyIHRoZSAjV2ViS2l0
V2ViVmlldyBoYXMgYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLgogICoKLSAqIFJldHVybiB2YWx1
ZTogJUZBTFNFIHdoZW4gdGhlICNXZWJLaXRXZWJWaWV3IGRyYXdzIGEgc29saWQgYmFja2dyb3Vu
ZAorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVGQUxTRSB3aGVuIHRoZSAjV2Vi
S2l0V2ViVmlldyBkcmF3cyBhIHNvbGlkIGJhY2tncm91bmQKICAqICh0aGUgZGVmYXVsdCksIG90
aGVyd2lzZSAlVFJVRS4KICAqLwogZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2dldF90cmFuc3Bh
cmVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQpAQCAtNDA2Myw3ICs0MDcxLDcgQEAKICAqIHRo
ZSB6b29tIGxldmVsIGNoYW5nZXMgdGhlIHRleHQgc2l6ZSwgb3IgaWYgJVRSVUUsIHNjYWxlcyBh
bGwKICAqIGVsZW1lbnRzIGluIHRoZSBwYWdlLgogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIHpv
b20gbGV2ZWwgb2YgQHdlYl92aWV3CisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTog
dGhlIHpvb20gbGV2ZWwgb2YgQHdlYl92aWV3CiAgKgogICogU2luY2U6IDEuMC4xCiAgKi8KQEAg
LTQxNjUsNyArNDE3Myw3IEBACiAgKgogICogUmV0dXJucyB3aGV0aGVyIHRoZSB6b29tIGxldmVs
IGFmZmVjdHMgb25seSB0ZXh0IG9yIGFsbCBlbGVtZW50cy4KICAqCi0gKiBSZXR1cm4gdmFsdWU6
ICVGQUxTRSBpZiBvbmx5IHRleHQgc2hvdWxkIGJlIHNjYWxlZCAodGhlIGRlZmF1bHQpLAorICog
UmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVGQUxTRSBpZiBvbmx5IHRleHQgc2hvdWxk
IGJlIHNjYWxlZCAodGhlIGRlZmF1bHQpLAogICogJVRSVUUgaWYgdGhlIGZ1bGwgY29udGVudCBv
ZiB0aGUgdmlldyBzaG91bGQgYmUgc2NhbGVkLgogICoKICAqIFNpbmNlOiAxLjAuMQpAQCAtNDIz
OSw3ICs0MjQ3LDcgQEAKICAqCiAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRo
ZSAjV2ViS2l0V2ViVmlldy4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBkZWZhdWx0IGVuY29k
aW5nCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2ZlciBub25lKTogdGhlIGRlZmF1bHQgZW5jb2Rp
bmcKICAqCiAgKiBTaW5jZTogMS4xLjEKICAqLwpAQCAtNDI4Miw3ICs0MjkwLDcgQEAKICAqIFJl
dHVybnMgdGhlIGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhlICNXZWJLaXRXZWJWaWV3LCBub3QgdGhl
IGRlZmF1bHQtZW5jb2RpbmcKICAqIG9mIFdlYktpdFdlYlNldHRpbmdzLgogICoKLSAqIFJldHVy
biB2YWx1ZTogYSBzdHJpbmcgY29udGFpbmluZyB0aGUgY3VycmVudCBjdXN0b20gZW5jb2Rpbmcg
Zm9yIEB3ZWJfdmlldywgb3IgJU5VTEwgaWYgdGhlcmUncyBub25lIHNldC4KKyAqIFJldHVybiB2
YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjdXJyZW50IGN1
c3RvbSBlbmNvZGluZyBmb3IgQHdlYl92aWV3LCBvciAlTlVMTCBpZiB0aGVyZSdzIG5vbmUgc2V0
LgogICoKICAqIFNpbmNlOiAxLjEuMQogICovCkBAIC00MzQ0LDcgKzQzNTIsNyBAQAogICogI1dl
YktpdFdlYlZpZXcuIENoZWNrIHRoZSBwcm9wZXJ0eSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUK
ICAqIGluZm9ybWF0aW9uLgogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlICVXZWJLaXRXZWJWaWV3
Vmlld01vZGUgY3VycmVudGx5IHNldCBmb3IgdGhlCisgKiBSZXR1cm4gdmFsdWU6ICh0cmFuc2Zl
ciBub25lKTogdGhlICVXZWJLaXRXZWJWaWV3Vmlld01vZGUgY3VycmVudGx5IHNldCBmb3IgdGhl
CiAgKiAjV2ViS2l0V2ViVmlldy4KICAqCiAgKiBTaW5jZTogMS4zLjQKQEAgLTQ0MTMsNyArNDQy
MSw3IEBACiAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGl0IGlzIGN1cnJlbnRseSBwb3Nz
aWJsZSB0byB1bmRvIHRoZSBsYXN0CiAgKiBlZGl0aW5nIGNvbW1hbmQgaW4gdGhlIHZpZXcuCiAg
KgotICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiBhIHVuZG8gY2FuIGJlIGRvbmUsICVGQUxTRSBp
ZiBub3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJVRSBpZiBhIHVuZG8g
Y2FuIGJlIGRvbmUsICVGQUxTRSBpZiBub3QKICAqCiAgKiBTaW5jZTogMS4xLjE0CiAgKi8KQEAg
LTQ0NDgsNyArNDQ1Niw3IEBACiAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGl0IGlzIGN1
cnJlbnRseSBwb3NzaWJsZSB0byByZWRvIHRoZSBsYXN0CiAgKiBlZGl0aW5nIGNvbW1hbmQgaW4g
dGhlIHZpZXcuCiAgKgotICogUmV0dXJuIHZhbHVlOiAlVFJVRSBpZiBhIHJlZG8gY2FuIGJlIGRv
bmUsICVGQUxTRSBpZiBub3QKKyAqIFJldHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiAlVFJV
RSBpZiBhIHJlZG8gY2FuIGJlIGRvbmUsICVGQUxTRSBpZiBub3QKICAqCiAgKiBTaW5jZTogMS4x
LjE0CiAgKi8KQEAgLTQ1MDAsNyArNDUwOCw3IEBACiAgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Zp
ZXdfc291cmNlX21vZGU6CiAgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqCi0gKiBS
ZXR1cm4gdmFsdWU6ICVUUlVFIGlmIEB3ZWJfdmlldyBpcyBpbiB2aWV3IHNvdXJjZSBtb2RlLCAl
RkFMU0Ugb3RoZXJ3aXNlLgorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6ICVUUlVF
IGlmIEB3ZWJfdmlldyBpcyBpbiB2aWV3IHNvdXJjZSBtb2RlLCAlRkFMU0Ugb3RoZXJ3aXNlLgog
ICoKICAqIFNpbmNlOiAxLjEuMTQKICAqLwpAQCAtNDYxNCw3ICs0NjIyLDcgQEAKICAqIERvZXMg
YSAnaGl0IHRlc3QnIGluIHRoZSBjb29yZGluYXRlcyBzcGVjaWZpZWQgYnkgQGV2ZW50IHRvIGZp
Z3VyZQogICogb3V0IGNvbnRleHQgaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBwb3NpdGlvbiBpbiB0
aGUgQHdlYlZpZXcuCiAgKiAKLSAqIFJldHVybnM6IGEgbmV3bHkgY3JlYXRlZCAjV2ViS2l0SGl0
VGVzdFJlc3VsdCB3aXRoIHRoZSBjb250ZXh0IG9mIHRoZQorICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOiBhIG5ld2x5IGNyZWF0ZWQgI1dlYktpdEhpdFRlc3RSZXN1bHQgd2l0aCB0aGUgY29u
dGV4dCBvZiB0aGUKICAqIHNwZWNpZmllZCBwb3NpdGlvbi4KICAqCiAgKiBTaW5jZTogMS4xLjE1
CkBAIC00NjQwLDcgKzQ2NDgsNyBAQAogICogT2J0YWlucyB0aGUgVVJJIGZvciB0aGUgZmF2aWNv
biBmb3IgdGhlIGdpdmVuICNXZWJLaXRXZWJWaWV3LCBvcgogICogJU5VTEwgaWYgdGhlcmUgaXMg
bm9uZS4KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBVUkkgZm9yIHRoZSBmYXZpY29uLCBvciAl
TlVMTAorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBVUkkgZm9yIHRoZSBm
YXZpY29uLCBvciAlTlVMTAogICoKICAqIFNpbmNlOiAxLjEuMTgKICAqLwpAQCAtNDY2MSw3ICs0
NjY5LDcgQEAKICAqIHdlYmtpdF93ZWJfdmlld19nZXRfZG9tX2RvY3VtZW50OgogICogQHdlYlZp
ZXc6IGEgI1dlYktpdFdlYlZpZXcKICAqIAotICogUmV0dXJuczogdGhlICNXZWJLaXRET01Eb2N1
bWVudCBjdXJyZW50bHkgbG9hZGVkIGluIHRoZSBAd2ViVmlldworICogUmV0dXJuczogKGVsZW1l
bnQtdHlwZSAjV2ViS2l0RE9NRG9jdW1lbnQpICh0cmFuc2ZlciBub25lKTogdGhlICNXZWJLaXRE
T01Eb2N1bWVudCBjdXJyZW50bHkgbG9hZGVkIGluIHRoZSBAd2ViVmlldwogICoKICAqIFNpbmNl
OiAxLjMuMQogICoqLwpAQCAtNDY5OCw3ICs0NzA2LDcgQEAKICAqIHNvIGlmIHlvdSBpbnNlcnQg
eW91ciBvd24gI1NvdXBDb29raWVKYXIgYmVmb3JlIGFueSBuZXR3b3JrCiAgKiB0cmFmZmljIG9j
Y3VycywgV2ViS2l0IHdpbGwgdXNlIGl0IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQuCiAgKgotICog
UmV0dXJuIHZhbHVlOiB0aGUgZGVmYXVsdCAjU291cFNlc3Npb24KKyAqIFJldHVybiB2YWx1ZTog
KHRyYW5zZmVyIG5vbmUpOiB0aGUgZGVmYXVsdCAjU291cFNlc3Npb24KICAqCiAgKiBTaW5jZTog
MS4xLjEKICAqLwpAQCAtNDc3OSw3ICs0Nzg3LDcgQEAKICAqIHZhbHVlIGNoZWNrIHRoZSBkb2N1
bWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbgogICogd2Via2l0X3NldF9jYWNoZV9tb2RlbCgpLgog
ICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIGN1cnJlbnQgI1dlYktpdENhY2hlTW9kZWwKKyAqIFJl
dHVybiB2YWx1ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgY3VycmVudCAjV2ViS2l0Q2FjaGVNb2Rl
bAogICoKICAqIFNpbmNlOiAxLjEuMTgKICAqLwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViaGlzdG9yeWl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYmhpc3RvcnlpdGVtLmNwcAkocmV2aXNpw7NuOiA2Njk4NykKKysrIFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcAkoY29waWEgZGUgdHJhYmFqbykKQEAgLTQx
OSw3ICs0MTksNyBAQAogICoKICAqIFJldHVybnMgdGhlIGxhc3QgdGltZSBAd2ViX2hpc3Rvcnlf
aXRlbSB3YXMgdmlzaXRlZAogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIHRpbWUgaW4gc2Vjb25k
cyB0aGlzIEB3ZWJfaGlzdG9yeV9pdGVtIHdhcyBsYXN0IHZpc2l0ZWQKKyAqIFJldHVybiB2YWx1
ZTogKHRyYW5zZmVyIG5vbmUpOiB0aGUgdGltZSBpbiBzZWNvbmRzIHRoaXMgQHdlYl9oaXN0b3J5
X2l0ZW0gd2FzIGxhc3QgdmlzaXRlZAogICovCiBnZG91YmxlIHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX2dldF9sYXN0X3Zpc2l0ZWRfdGltZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
eUl0ZW0pCiB7CkBAIC00MzMsMTQgKzQzMywxNCBAQAogfQogCiAvKioKLSAqIHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX2NvcHkgOgorICogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fY29weToKICAq
IEB3ZWJfaGlzdG9yeV9pdGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQogICoKICAqIE1ha2Vz
IGEgY29weSBvZiB0aGUgaXRlbSBmb3IgdXNlIHdpdGggb3RoZXIgV2ViVmlldyBvYmplY3RzLgog
ICoKICAqIFNpbmNlOiAxLjEuMTgKICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBuZXcgI1dlYktp
dFdlYkhpc3RvcnlJdGVtLgorICogUmV0dXJuIHZhbHVlOiAodHJhbnNmZXIgbm9uZSk6IHRoZSBu
ZXcgI1dlYktpdFdlYkhpc3RvcnlJdGVtLgogICovCiBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
a2l0X3dlYl9oaXN0b3J5X2l0ZW1fY29weShXZWJLaXRXZWJIaXN0b3J5SXRlbSogc2VsZikKIHsK
SW5kZXg6IFdlYktpdC9ndGsvSlNDb3JlLmdpci5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L0pTQ29yZS5naXIuaW4JKHJldmlzacOzbjogNjY5ODcpCisrKyBXZWJLaXQvZ3RrL0pTQ29yZS5n
aXIuaW4JKGNvcGlhIGRlIHRyYWJham8pCkBAIC0xLDEyICsxLDE2IEBACiA8P3htbCB2ZXJzaW9u
PSIxLjAiPz4KLTxyZXBvc2l0b3J5IHZlcnNpb249IjEuMSIKKzxyZXBvc2l0b3J5IHZlcnNpb249
IjEuMiIKICAgICAgICAgICAgIHhtbG5zPSJodHRwOi8vd3d3Lmd0ay5vcmcvaW50cm9zcGVjdGlv
bi9jb3JlLzEuMCIKLSAgICAgICAgICAgIHhtbG5zOmM9Imh0dHA6Ly93d3cuZ3RrLm9yZy9pbnRy
b3NwZWN0aW9uL2MvMS4wIj4KLSAgPG5hbWVzcGFjZSBuYW1lPSJKU0NvcmUiIHZlcnNpb249IkBX
RUJLSVRHVEtfQVBJX1ZFUlNJT05AIiBzaGFyZWQtbGlicmFyeT0id2Via2l0Z3RrLUBXRUJLSVRH
VEtfQVBJX1ZFUlNJT05AIj4KKyAgICAgICAgICAgIHhtbG5zOmM9Imh0dHA6Ly93d3cuZ3RrLm9y
Zy9pbnRyb3NwZWN0aW9uL2MvMS4wIgorICAgICAgICAgICAgeG1sbnM6Z2xpYj0iaHR0cDovL3d3
dy5ndGsub3JnL2ludHJvc3BlY3Rpb24vZ2xpYi8xLjAiPgorICA8bmFtZXNwYWNlIG5hbWU9IkpT
Q29yZSIgdmVyc2lvbj0iMy4wIiBzaGFyZWQtbGlicmFyeT0id2Via2l0Z3RrLTMuMCI+CiAgICAg
PGFsaWFzIG5hbWU9Ikdsb2JhbENvbnRleHRSZWYiCi0gICAgICAgICAgIHRhcmdldD0ibm9uZSIK
LSAgICAgICAgICAgYzp0eXBlPSJKU0dsb2JhbENvbnRleHRSZWYiLz4KLSAgICA8YWxpYXMgbmFt
ZT0iT2JqZWN0UmVmIiB0YXJnZXQ9Im5vbmUiIGM6dHlwZT0iSlNPYmplY3RSZWYiLz4KKyAgICAg
ICAgICAgdGFyZ2V0PSJub25lIj4KKwkgICA8dHlwZSBuYW1lPSJKU0dsb2JhbENvbnRleHRSZWYi
IGM6dHlwZT0iSlNHbG9iYWxDb250ZXh0UmVmIi8+CisgICAgPC9hbGlhcz4gICAgCisgICAgPGFs
aWFzIG5hbWU9Ik9iamVjdFJlZiIgdGFyZ2V0PSJub25lIj4KKyAgICAgIDx0eXBlIG5hbWU9IkpT
T2JqZWN0UmVmIiBjOnR5cGU9IkpTT2JqZWN0UmVmIi8+CisgICAgPC9hbGlhcz4KICAgICA8ZnVu
Y3Rpb24gbmFtZT0iRXZhbHVhdGVTY3JpcHQiIGM6aWRlbnRpZmllcj0iSlNFdmFsdWF0ZVNjcmlw
dCI+CiAgICAgICA8cmV0dXJuLXZhbHVlIHRyYW5zZmVyLW93bmVyc2hpcD0ibm9uZSI+CiAgICAg
ICAgIDx0eXBlIG5hbWU9Im5vbmUiIGM6dHlwZT0idm9pZCIvPgpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQkocmV2aXNpw7NuOiA2
Njk4MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bQkoY29waWEgZGUgdHJhYmFqbykKQEAgLTgwMSw2ICs4MDEsMTkgQEAKICMgY2VydGFpbiBmZWF0
dXJlcyBpbiBXZWJLaXQgYXJlIGVuYWJsZWQuCiBteSAlY29uZGl0aW9uYWxNZXRob2RzID0gKCJ3
ZWJraXRfZG9tX2dlb2xvY2F0aW9uX2NsZWFyX3dhdGNoIiA9PiAiR0VPTE9DQVRJT04iKTsKIAor
CitzdWIgRml4VXBGdW5jdGlvbk5hbWUgeworICAgIG15ICRmdW5jdGlvbk5hbWUgPSBzaGlmdDsg
ICAgCisgICAgIyBGaXggdG8gY29tcGx5IHdpdGggZ29iamVjdCBpbnRyb3NwZWN0aW9uIHNjYW5u
ZXIgcmVxdWlyZW1lbnRzIHRvIGRldGVybWluZSB3aGljaCBmdW5jdGlvbiBiZWxvbmdzIHRvIHdo
aWNoIGNsYXNzCisgICAgJGZ1bmN0aW9uTmFtZSA9fiBzL153ZWJraXRfZG9tX2Nzcy93ZWJraXRf
ZG9tY3NzLzsKKyAgICAkZnVuY3Rpb25OYW1lID1+IHMvXndlYmtpdF9kb21faHRtbC93ZWJraXRf
ZG9taHRtbC87CisgICAgJGZ1bmN0aW9uTmFtZSA9fiBzL153ZWJraXRfZG9tX2RvbS93ZWJraXRf
ZG9tZG9tLzsKKyAgICAkZnVuY3Rpb25OYW1lID1+IHMvXndlYmtpdF9kb21fY2RhdGEvd2Via2l0
X2RvbWNkYXRhLzsKKyAgICAkZnVuY3Rpb25OYW1lID1+IHMvXndlYmtpdF9kb21feF9wYXRoL3dl
YmtpdF9kb214X3BhdGgvOworICAgICRmdW5jdGlvbk5hbWUgPX4gcy9ed2Via2l0X2RvbV91aS93
ZWJraXRfZG9tdWkvOworICAgIHJldHVybiAkZnVuY3Rpb25OYW1lOworfQorCiBzdWIgR2VuZXJh
dGVGdW5jdGlvbiB7CiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24s
ICRwcmVmaXgpID0gQF87CiAKQEAgLTgxMiw3ICs4MjUsOSBAQAogCiAgICAgbXkgJGZ1bmN0aW9u
U2lnTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgIG15ICRmdW5jdGlvblNp
Z1R5cGUgPSAkcHJlZml4IGVxICJzZXRfIiA/ICJ2b2lkIiA6ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT50eXBlOwotICAgIG15ICRmdW5jdGlvbk5hbWUgPSAid2Via2l0X2RvbV8iIC4gJGRlY2FtZWxp
emUgLiAiXyIgLiAkcHJlZml4IC4gZGVjYW1lbGl6ZSgkZnVuY3Rpb25TaWdOYW1lKTsKKyAgICBt
eSAkZGVmaW5lTmFtZSA9ICJ3ZWJraXRfZG9tXyIgLiAkZGVjYW1lbGl6ZSAuICJfIiAuICRwcmVm
aXggLiBkZWNhbWVsaXplKCRmdW5jdGlvblNpZ05hbWUpOworICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBGaXhVcEZ1bmN0aW9uTmFtZSgkZGVmaW5lTmFtZSk7CisKICAgICBteSAkcmV0dXJuVHlwZSA9
IEdldEdsaWJUeXBlTmFtZSgkZnVuY3Rpb25TaWdUeXBlKTsKICAgICBteSAkcmV0dXJuVmFsdWVJ
c0dET01UeXBlID0gSXNHRE9NQ2xhc3NUeXBlKCRmdW5jdGlvblNpZ1R5cGUpOwogICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5z
aWduYXR1cmUpOwpAQCAtODgwLDYgKzg5NSwzMSBAQAogICAgIH0KIAogICAgIHB1c2goQGhCb2R5
LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Cisg
ICAgCisgICAgIyBJbnNlcnQgaW50cm9zcGVjdGlvbiBhbm5vdGF0aW9ucworICAgIHB1c2goQGhC
b2R5LCAiLyoqXG4iKTsKKyAgICBwdXNoKEBoQm9keSwgIiAqICR7ZnVuY3Rpb25OYW1lfTpcbiIp
OworICAgIG15ICRzZWxmQ2xhc3MgPSAkY2xhc3NOYW1lOworICAgICRzZWxmQ2xhc3MgPX4gcy9c
KiQvLzsKKyAgICBwdXNoKEBoQm9keSwgIiAqIFxAc2VsZjogQSAjJHtjbGFzc05hbWV9XG4iKTsK
KworICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAg
ICAgICAgbXkgJHBhcmFtSURMVHlwZSA9ICRwYXJhbS0+dHlwZTsKKyAgICAgICAgbXkgJHBhcmFt
VHlwZSA9IEdldEdsaWJUeXBlTmFtZSgkcGFyYW1JRExUeXBlKTsKKyAgICAgICAgJHBhcmFtVHlw
ZSA9fiBzL1wqJC8vOyAgICAgICAgCisgICAgICAgIG15ICRwYXJhbU5hbWUgPSBkZWNhbWVsaXpl
KCRwYXJhbS0+bmFtZSk7CisgICAgICAgIHB1c2goQGhCb2R5LCAiICogXEAke3BhcmFtTmFtZX06
IEEgIyR7cGFyYW1UeXBlfVxuIik7CisKKyAgICB9CisgICAgaWYoQHskZnVuY3Rpb24tPnJhaXNl
c0V4Y2VwdGlvbnN9KSB7CisgICAgICAgIHB1c2goQGhCb2R5LCAiICogXEBlcnJvcjogI0dFcnJv
clxuIik7CisgICAgfQorICAgIHB1c2goQGhCb2R5LCAiICpcbiIpOworICAgICMgU2hvdWxkIGl0
IGFsd2F5cyBiZSBub25lPworICAgIHB1c2goQGhCb2R5LCAiICogUmV0dXJuczogKHRyYW5zZmVy
IG5vbmUpOlxuIik7ICAgIAorICAgIHB1c2goQGhCb2R5LCAiICpcbiIpOworICAgIHB1c2goQGhC
b2R5LCAiKiovXG4iKTsKKwogICAgIHB1c2goQGhCb2R5LCAiV0VCS0lUX0FQSSAkcmV0dXJuVHlw
ZVxuJGZ1bmN0aW9uTmFtZSgkZnVuY3Rpb25TaWcpO1xuIik7CiAgICAgcHVzaChAaEJvZHksICIj
ZW5kaWYgLyogJHtjb25kaXRpb25hbFN0cmluZ30gKi9cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICBwdXNoKEBoQm9keSwgIlxuIik7CkBAIC04OTksNiArOTM5LDExIEBACiAgICAgICAg
IHB1c2goQGNCb2R5LCAiICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7XG4iKTsKICAgICB9CiAK
KyAgICAjIEluc2VydCBhIGRlZmluZSB0byBtYW50YWluIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkg
Zm9yIGZpeGVkIHVwIG5hbWVzLgorICAgIGlmICgkZGVmaW5lTmFtZSBuZSAkZnVuY3Rpb25OYW1l
KSB7CisgICAgICBwdXNoKEBoQm9keSwgIiNkZWZpbmUgJGRlZmluZU5hbWUgJGZ1bmN0aW9uTmFt
ZSBcbiIpOworICAgIH0KKwogICAgICMgVGhlIFdlYktpdDo6Y29yZSBpbXBsZW1lbnRhdGlvbnMg
Y2hlY2sgZm9yIE5VTEwgYWxyZWFkeTsgbm8gbmVlZCB0bwogICAgICMgZHVwbGljYXRlIGVmZm9y
dC4KICAgICBwdXNoKEBjQm9keSwgIiAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTtcbiIpOwo=
</data>
<flag name="review"
          id="56568"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100360</attachid>
            <date>2011-07-11 14:08:26 -0700</date>
            <delta_ts>2011-07-12 01:21:23 -0700</delta_ts>
            <desc>extracted patch for issue 3</desc>
            <filename>45395_issue3.diff</filename>
            <type>text/plain</type>
            <size>1326</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckdPYmplY3QucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtCmluZGV4IDM4MDZiNzUuLjkyZmVmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAt
Nzg0LDYgKzc4NCwzMCBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbiB7CiAgICAgICAgICRmdW5jdGlv
blNpZyAuPSAiLCBHRXJyb3IgKiplcnJvciI7CiAgICAgfQogCisgICAgIyBJbnNlcnQgaW50cm9z
cGVjdGlvbiBhbm5vdGF0aW9ucworICAgIHB1c2goQGhCb2R5LCAiLyoqXG4iKTsKKyAgICBwdXNo
KEBoQm9keSwgIiAqICR7ZnVuY3Rpb25OYW1lfTpcbiIpOworICAgIG15ICRzZWxmQ2xhc3MgPSAk
Y2xhc3NOYW1lOworICAgICRzZWxmQ2xhc3MgPX4gcy9cKiQvLzsKKyAgICBwdXNoKEBoQm9keSwg
IiAqIFxAc2VsZjogQSAjJHtjbGFzc05hbWV9XG4iKTsKKworICAgIGZvcmVhY2ggbXkgJHBhcmFt
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbXkgJHBhcmFtSURMVHlwZSA9
ICRwYXJhbS0+dHlwZTsKKyAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdldEdsaWJUeXBlTmFtZSgk
cGFyYW1JRExUeXBlKTsKKyAgICAgICAgJHBhcmFtVHlwZSA9fiBzL1wqJC8vOyAgICAgICAgCisg
ICAgICAgIG15ICRwYXJhbU5hbWUgPSBkZWNhbWVsaXplKCRwYXJhbS0+bmFtZSk7CisgICAgICAg
IHB1c2goQGhCb2R5LCAiICogXEAke3BhcmFtTmFtZX06IEEgIyR7cGFyYW1UeXBlfVxuIik7Cisg
ICAgfQorICAgIGlmKEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgeworICAgICAgICBw
dXNoKEBoQm9keSwgIiAqIFxAZXJyb3I6ICNHRXJyb3JcbiIpOworICAgIH0KKyAgICBwdXNoKEBo
Qm9keSwgIiAqXG4iKTsKKyAgICBpZiAoSXNHRE9NQ2xhc3NUeXBlKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLT50eXBlKSkgeworICAgICAgICBwdXNoKEBoQm9keSwgIiAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKTpcbiIpOyAgICAKKyAgICB9CisgICAgcHVzaChAaEJvZHksICIgKlxuIik7CisgICAg
cHVzaChAaEJvZHksICIqKi9cbiIpOworCiAgICAgcHVzaChAaEJvZHksICJXRUJLSVRfQVBJICRy
ZXR1cm5UeXBlXG4kZnVuY3Rpb25OYW1lKCRmdW5jdGlvblNpZyk7XG4iKTsKICAgICBwdXNoKEBo
Qm9keSwgIlxuIik7CiAK
</data>
<flag name="review"
          id="95041"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100448</attachid>
            <date>2011-07-12 01:21:23 -0700</date>
            <delta_ts>2011-07-12 06:55:43 -0700</delta_ts>
            <desc>patch for issue 3</desc>
            <filename>0001-45395.patch</filename>
            <type>text/plain</type>
            <size>2226</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">RnJvbSBkOTljY2YyMWJmZTU0NjRmOTAzMDViZTIwYzEyN2MxZWU0YTAwMzQ2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5vIFJlbmV2aWVyIDxhcm5vQHJlbmV2aWVyLm5ldD4KRGF0
ZTogVHVlLCAxMiBKdWwgMjAxMSAxMDoxNjozMCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIDQ1Mzk1
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMSArKysrKysrKysrCiAuLi4vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbSAgICAgICB8ICAgMjIgKysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdl
ZCwgMzMgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFkNTAx
NC4uMmY4Y2M4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA3LTEyICBBcm5v
IFJlbmV2aWVyICA8YXJub0ByZW5ldmllci5uZXQ+CisKKyAgICAgICAgbW9kaWZ5IENvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtIHRvIGdlbmVyYXRlIGFubm90YXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTM5NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIGNoYW5nZSBvZiBmdW5jdGlvbmFsaXR5
LiBObyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtOgorCiAyMDExLTA3LTA5ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgV2luQ0UgYnVpbGQgZml4IGZvciByOTA2
ODAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yR09iamVjdC5wbQppbmRleCAzODA2Yjc1Li5jZDJlMjAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
QEAgLTc4NCw2ICs3ODQsMjggQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAgICAkZnVu
Y3Rpb25TaWcgLj0gIiwgR0Vycm9yICoqZXJyb3IiOwogICAgIH0KIAorICAgICMgSW5zZXJ0IGlu
dHJvc3BlY3Rpb24gYW5ub3RhdGlvbnMKKyAgICBwdXNoKEBoQm9keSwgIi8qKlxuIik7CisgICAg
cHVzaChAaEJvZHksICIgKiAke2Z1bmN0aW9uTmFtZX06XG4iKTsKKyAgICBwdXNoKEBoQm9keSwg
IiAqIFxAc2VsZjogQSAjJHtjbGFzc05hbWV9XG4iKTsKKworICAgIGZvcmVhY2ggbXkgJHBhcmFt
IChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbXkgJHBhcmFtVHlwZSA9IEdl
dEdsaWJUeXBlTmFtZSgkcGFyYW0tPnR5cGUpOworICAgICAgICBteSAkcGFyYW1OYW1lID0gZGVj
YW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworICAgICAgICBwdXNoKEBoQm9keSwgIiAqIFxAJHtwYXJh
bU5hbWV9OiBBICMke3BhcmFtVHlwZX1cbiIpOworICAgIH0KKyAgICBpZihAeyRmdW5jdGlvbi0+
cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgcHVzaChAaEJvZHksICIgKiBcQGVycm9yOiAj
R0Vycm9yXG4iKTsKKyAgICB9CisgICAgcHVzaChAaEJvZHksICIgKlxuIik7CisgICAgaWYgKElz
R0RPTUNsYXNzVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkpIHsKKyAgICAgICAgcHVz
aChAaEJvZHksICIgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6XG4iKTsgICAgCisgICAgfSBl
bHNlIHsKKyAgICAgICAgcHVzaChAaEJvZHksICIgKiBSZXR1cm5zOlxuIik7ICAgIAorICAgIH0K
KyAgICBwdXNoKEBoQm9keSwgIiAqXG4iKTsKKyAgICBwdXNoKEBoQm9keSwgIioqL1xuIik7CisK
ICAgICBwdXNoKEBoQm9keSwgIldFQktJVF9BUEkgJHJldHVyblR5cGVcbiRmdW5jdGlvbk5hbWUo
JGZ1bmN0aW9uU2lnKTtcbiIpOwogICAgIHB1c2goQGhCb2R5LCAiXG4iKTsKIAotLSAKMS43LjUu
NAoK
</data>
<flag name="review"
          id="95115"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100479</attachid>
            <date>2011-07-12 06:55:43 -0700</date>
            <delta_ts>2011-07-12 12:41:59 -0700</delta_ts>
            <desc>patch for issue 3</desc>
            <filename>0001-45395.patch</filename>
            <type>text/plain</type>
            <size>27261</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">RnJvbSA1NGU0NmNlOGY2MmYwYzg1ZTY3NDA1MTAyYjM5ZTA3NzFiOTE0NTQyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBcm5vIFJlbmV2aWVyIDxhcm5vQHJlbmV2aWVyLm5ldD4KRGF0
ZTogVHVlLCAxMiBKdWwgMjAxMSAxNTo1MzoyMCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIDQ1Mzk1
CgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxNCArCiAuLi4vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAg
ICAgICB8ICAgMjIgKwogLi4uL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxs
YmFjay5oICAgfCAgIDQwICsrCiAuLi4vc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5oICAgICAgICB8ICA2OTEgKysrKysrKysrKysrKysrKysrKysKIC4uLi9XZWJLaXRET01U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggIHwgICAgNyArCiA1IGZpbGVzIGNo
YW5nZWQsIDc3NCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjVkYTlmLi4wM2UzNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTEtMDctMTIg
IEFybm8gUmVuZXZpZXIgIDxhcm5vQHJlbmV2aWVyLm5ldD4KIAorICAgICAgICBtb2RpZnkgQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0gdG8gZ2VuZXJhdGUgYW5ub3RhdGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1Mzk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIG9mIGZ1bmN0aW9u
YWxpdHkuIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckdPYmplY3QucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaDoKKworMjAxMS0wNy0xMiAgQXJubyBSZW5ldmllciAgPGFybm9AcmVuZXZpZXIubmV0Pgor
CiAgICAgICAgIHF1b3RlICJhdHRyaWJ1dGVzIiBrZXl3b3JkIGluIENvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDM0OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yR09iamVjdC5wbQppbmRleCA0ZWJlZmM4Li4zYTVjMDYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3Qu
cG0KQEAgLTc4NCw2ICs3ODQsMjggQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAgICAk
ZnVuY3Rpb25TaWcgLj0gIiwgR0Vycm9yICoqZXJyb3IiOwogICAgIH0KIAorICAgICMgSW5zZXJ0
IGludHJvc3BlY3Rpb24gYW5ub3RhdGlvbnMKKyAgICBwdXNoKEBoQm9keSwgIi8qKlxuIik7Cisg
ICAgcHVzaChAaEJvZHksICIgKiAke2Z1bmN0aW9uTmFtZX06XG4iKTsKKyAgICBwdXNoKEBoQm9k
eSwgIiAqIFxAc2VsZjogQSAjJHtjbGFzc05hbWV9XG4iKTsKKworICAgIGZvcmVhY2ggbXkgJHBh
cmFtIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKKyAgICAgICAgbXkgJHBhcmFtVHlwZSA9
IEdldEdsaWJUeXBlTmFtZSgkcGFyYW0tPnR5cGUpOworICAgICAgICBteSAkcGFyYW1OYW1lID0g
ZGVjYW1lbGl6ZSgkcGFyYW0tPm5hbWUpOworICAgICAgICBwdXNoKEBoQm9keSwgIiAqIFxAJHtw
YXJhbU5hbWV9OiBBICMke3BhcmFtVHlwZX1cbiIpOworICAgIH0KKyAgICBpZihAeyRmdW5jdGlv
bi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICAgICAgcHVzaChAaEJvZHksICIgKiBcQGVycm9y
OiAjR0Vycm9yXG4iKTsKKyAgICB9CisgICAgcHVzaChAaEJvZHksICIgKlxuIik7CisgICAgaWYg
KElzR0RPTUNsYXNzVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkpIHsKKyAgICAgICAg
cHVzaChAaEJvZHksICIgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6XG4iKTsgICAgCisgICAg
fSBlbHNlIHsKKyAgICAgICAgcHVzaChAaEJvZHksICIgKiBSZXR1cm5zOlxuIik7ICAgIAorICAg
IH0KKyAgICBwdXNoKEBoQm9keSwgIiAqXG4iKTsKKyAgICBwdXNoKEBoQm9keSwgIioqL1xuIik7
CisKICAgICBwdXNoKEBoQm9keSwgIldFQktJVF9BUEkgJHJldHVyblR5cGVcbiRmdW5jdGlvbk5h
bWUoJGZ1bmN0aW9uU2lnKTtcbiIpOwogICAgIHB1c2goQGhCb2R5LCAiXG4iKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdENhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaAppbmRleCA1NDFhZmIyLi4yNjdlMzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suaApAQCAtNDYsMTggKzQ2LDU4
IEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVzdENhbGxiYWNrQ2xhc3MgewogV0VCS0lUX0FQSSBHVHlw
ZQogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2dldF90eXBlICh2b2lkKTsKIAorLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9ub19wYXJhbToKKyAqIEBzZWxm
OiBBICNXZWJLaXRET01UZXN0Q2FsbGJhY2sKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VC
S0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2NhbGxiYWNrX3dpdGhf
bm9fcGFyYW0oV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9jbGFzczFwYXJhbToKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0Q2FsbGJhY2sKKyAqIEBjbGFzczFwYXJhbTogQSAjV2ViS2l0RE9NQ2xh
c3MxKgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3ZWJr
aXRfZG9tX3Rlc3RfY2FsbGJhY2tfY2FsbGJhY2tfd2l0aF9jbGFzczFwYXJhbShXZWJLaXRET01U
ZXN0Q2FsbGJhY2sqIHNlbGYsIFdlYktpdERPTUNsYXNzMSogY2xhc3MxcGFyYW0pOwogCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX2NsYXNzMnBhcmFtOgor
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RDYWxsYmFjaworICogQGNsYXNzMnBhcmFtOiBBICNX
ZWJLaXRET01DbGFzczIqCisgKiBAc3RyX2FyZzogQSAjZ2NoYXIqCisgKgorICogUmV0dXJuczoK
KyAqCisqKi8KIFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19j
YWxsYmFja193aXRoX2NsYXNzMnBhcmFtKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2Vi
S2l0RE9NQ2xhc3MyKiBjbGFzczJwYXJhbSwgY29uc3QgZ2NoYXIqIHN0cl9hcmcpOwogCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9ib29sX3JldHVy
bl90eXBlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RDYWxsYmFjaworICogQGNsYXNzM3Bh
cmFtOiBBICNXZWJLaXRET01DbGFzczMqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJ
VF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19jYWxsYmFja193aXRoX25vbl9i
b29sX3JldHVybl90eXBlKFdlYktpdERPTVRlc3RDYWxsYmFjayogc2VsZiwgV2ViS2l0RE9NQ2xh
c3MzKiBjbGFzczNwYXJhbSk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2NhbGxiYWNrX2Nh
bGxiYWNrX3dpdGhfc3RyaW5nX2xpc3Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdENhbGxi
YWNrCisgKiBAbGlzdF9wYXJhbTogQSAjV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCoKKyAqCisgKiBS
ZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NhbGxiYWNrX3dpdGhfc3RyaW5nX2xpc3QoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiBz
ZWxmLCBXZWJLaXRET01ET01TdHJpbmdMaXN0KiBsaXN0X3BhcmFtKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCmluZGV4IDBmMGYzYzEuLmM1MjVkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmgKQEAgLTQ2LDI3MCArNDYsOTYxIEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVz
dE9iakNsYXNzIHsKIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3R5
cGUgKHZvaWQpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2Q6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfdm9pZF9tZXRob2QoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial92b2lkX21ldGhv
ZF93aXRoX2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGludF9hcmc6
IEEgI2dsb25nCisgKiBAc3RyX2FyZzogQSAjZ2NoYXIqCisgKiBAb2JqX2FyZzogQSAjV2ViS2l0
RE9NVGVzdE9iaioKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3ZvaWRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVz
dE9iaiogb2JqX2FyZyk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9pbnRfbWV0aG9k
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoq
LwogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9pbnRfbWV0aG9kKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfaW50X21l
dGhvZF93aXRoX2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGludF9h
cmc6IEEgI2dsb25nCisgKiBAc3RyX2FyZzogQSAjZ2NoYXIqCisgKiBAb2JqX2FyZzogQSAjV2Vi
S2l0RE9NVGVzdE9iaioKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnbG9u
Zwogd2Via2l0X2RvbV90ZXN0X29ial9pbnRfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9N
VGVzdE9iaiogb2JqX2FyZyk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0
aG9kOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJh
bnNmZXIgbm9uZSk6CisgKgorKiovCiBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX29ial9tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8q
KgorICogd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJnczoKKyAqIEBzZWxm
OiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAaW50X2FyZzogQSAjZ2xvbmcKKyAqIEBzdHJfYXJn
OiBBICNnY2hhcioKKyAqIEBvYmpfYXJnOiBBICNXZWJLaXRET01UZXN0T2JqKgorICoKKyAqIFJl
dHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KIFdFQktJVF9BUEkgV2ViS2l0RE9NVGVz
dE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2xvbmcgaW50X2FyZywgY29uc3QgZ2NoYXIqIHN0cl9hcmcsIFdlYktp
dERPTVRlc3RPYmoqIG9ial9hcmcpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0
aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3M6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9i
agorICogQHN0cl9hcmc6IEEgI2djaGFyKgorICogQG9ial9hcmc6IEEgI1dlYktpdERPTVRlc3RP
YmoqCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLwogV0VCS0lUX0FQ
SSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1
aXJlc19hbGxfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyX2Fy
ZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqX2FyZyk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0
X29ial9tZXRob2RfdGhhdF9yZXF1aXJlc19hbGxfYXJnc19hbmRfdGhyb3dzOgorICogQHNlbGY6
IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBzdHJfYXJnOiBBICNnY2hhcioKKyAqIEBvYmpfYXJn
OiBBICNXZWJLaXRET01UZXN0T2JqKgorICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLwogV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2Jq
Kgogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1aXJlc19hbGxfYXJnc19hbmRf
dGhyb3dzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJL
aXRET01UZXN0T2JqKiBvYmpfYXJnLCBHRXJyb3IgKiplcnJvcik7CiAKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial9zZXJpYWxpemVkX3ZhbHVlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKKyAqIEBzZXJpYWxpemVkX2FyZzogQSAjV2ViS2l0RE9NU2VyaWFsaXplZFNjcmlwdFZh
bHVlKgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2VyaWFsaXplZF92YWx1ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJL
aXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRfYXJnKTsKIAorLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2lkYl9rZXk6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9i
agorICogQGtleTogQSAjV2ViS2l0RE9NSURCS2V5KgorICoKKyAqIFJldHVybnM6CisgKgorKiov
CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfaWRiX2tleShXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBXZWJLaXRET01JREJLZXkqIGtleSk7CiAKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X29ial9vcHRpb25zX29iamVjdDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAb286IEEgI1dlYktpdERPTU9wdGlvbnNPYmplY3QqCisgKiBAb29vOiBBICNXZWJLaXRE
T01PcHRpb25zT2JqZWN0KgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfb3B0aW9uc19vYmplY3QoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgV2ViS2l0RE9NT3B0aW9uc09iamVjdCogb28sIFdlYktpdERPTU9wdGlvbnNPYmplY3Qq
IG9vbyk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9leGNlcHRp
b246CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0
X29ial9tZXRob2Rfd2l0aF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9y
ICoqZXJyb3IpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2Zy
YW1lOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoK
KyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1pY19m
cmFtZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3dpdGhfZHluYW1pY19mcmFtZV9hbmRfYXJnOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRl
c3RPYmoKKyAqIEBpbnRfYXJnOiBBICNnbG9uZworICoKKyAqIFJldHVybnM6CisgKgorKiovCiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2Fu
ZF9hcmcoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgaW50X2FyZyk7CiAKKy8qKgorICog
d2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX29wdGlvbmFsX2FyZzoK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAaW50X2FyZzogQSAjZ2xvbmcKKyAq
IEBvcHRpb25hbF9hcmc6IEEgI2dsb25nCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJ
VF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX29w
dGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBnbG9uZyBv
cHRpb25hbF9hcmcpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9keW5hbWlj
X2ZyYW1lX2FuZF91c2VyX2dlc3R1cmU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagor
ICogQGludF9hcmc6IEEgI2dsb25nCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9B
UEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX2R5bmFtaWNfZnJhbWVfYW5kX3VzZXJf
Z2VzdHVyZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBnYm9vbGVhbiBp
c1VzZXJHZXN0dXJlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfZHluYW1p
Y19mcmFtZV9hbmRfdXNlcl9nZXN0dXJlX2FzYWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVz
dE9iagorICogQGludF9hcmc6IEEgI2dsb25nCisgKiBAb3B0aW9uYWxfYXJnOiBBICNnbG9uZwor
ICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfd2l0aF9keW5hbWljX2ZyYW1lX2FuZF91c2VyX2dlc3R1cmVfYXNhZChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBnbG9uZyBpbnRfYXJnLCBnbG9uZyBvcHRpb25hbF9hcmcsIGdib29sZWFu
IGlzVXNlckdlc3R1cmUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3Jp
cHRfc3RhdGVfdm9pZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0
dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial93aXRo
X3NjcmlwdF9zdGF0ZV92b2lkKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfc3RhdGVfb2JqOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiov
CiBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhf
c2NyaXB0X3N0YXRlX29iaihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X3N0YXRlX3ZvaWRfZXhjZXB0aW9uOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBlcnJvcjogI0dFcnJvcgorICoKKyAqIFJldHVy
bnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9z
Y3JpcHRfc3RhdGVfdm9pZF9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9y
ICoqZXJyb3IpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfc3Rh
dGVfb2JqX2V4Y2VwdGlvbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAZXJy
b3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCiBX
RUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2Ny
aXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoq
ZXJyb3IpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0
aW9uX2NvbnRleHQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVy
bnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9z
Y3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgor
ICogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25hbF9hcmc6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQG9wdDogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5z
OgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93
aXRoX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBvcHQpOwogCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19h
bmRfb3B0aW9uYWxfYXJnOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBub25f
b3B0OiBBICNnbG9uZworICogQG9wdDogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5zOgorICoKKyoq
LwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX25vbl9v
cHRpb25hbF9hcmdfYW5kX29wdGlvbmFsX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9u
ZyBub25fb3B0LCBnbG9uZyBvcHQpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0
aG9kX3dpdGhfbm9uX29wdGlvbmFsX2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3M6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQG5vbl9vcHQ6IEEgI2dsb25nCisgKiBAb3B0MTog
QSAjZ2xvbmcKKyAqIEBvcHQyOiBBICNnbG9uZworICoKKyAqIFJldHVybnM6CisgKgorKiovCiBX
RUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfbm9uX29wdGlv
bmFsX2FyZ19hbmRfdHdvX29wdGlvbmFsX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xv
bmcgbm9uX29wdCwgZ2xvbmcgb3B0MSwgZ2xvbmcgb3B0Mik7CiAKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X29ial9jbGFzc19tZXRob2Q6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagor
ICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfY2xhc3NfbWV0aG9kKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfbWV0aG9kX3dpdGhfb3B0aW9uYWw6CisgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagorICogQGFyZzogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRo
b2Rfd2l0aF9vcHRpb25hbChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpOwogCisv
KioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9pbnRfYXR0cjoKKyAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJ
VF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV9pbnRfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF9yZWFkX29ubHlfc3RyaW5nX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagor
ICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIGdjaGFyKgogd2Via2l0X2RvbV90
ZXN0X29ial9nZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYp
OwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRfb25seV90ZXN0X29ial9h
dHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJh
bnNmZXIgbm9uZSk6CisgKgorKiovCiBXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfdGVzdF9vYmpfYXR0cihXZWJLaXRET01UZXN0
T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zaG9ydF9hdHRy
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoq
LwogV0VCS0lUX0FQSSBnc2hvcnQKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nob3J0X2F0dHIo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfc2hvcnRfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6
IEEgI2dzaG9ydAorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3Nob3J0X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwg
Z3Nob3J0IHZhbHVlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF91bnNpZ25l
ZF9zaG9ydF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1
cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBndXNob3J0CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF91bnNpZ25lZF9zaG9ydF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Vuc2lnbmVkX3Nob3J0X2F0dHI6CisgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNndXNob3J0CisgKgorICogUmV0dXJu
czoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfdW5z
aWduZWRfc2hvcnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndXNob3J0IHZhbHVlKTsK
IAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9pbnRfYXR0cjoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkg
Z2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2ludF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2ludF9hdHRyOgorICog
QHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2xvbmcKKyAqCisgKiBS
ZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF9pbnRfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSk7CiAKKy8qKgor
ICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbG9uZ19sb25nX2F0dHI6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIGdp
bnQ2NAogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfbG9uZ19sb25nX2F0dHIoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfbG9uZ19sb25n
X2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnaW50
NjQKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnaW50
NjQgdmFsdWUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Vuc2lnbmVkX2xv
bmdfbG9uZ19hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1
cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBndWludDY0CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cjoKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2d1aW50NjQKKyAqCisg
KiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF91bnNpZ25lZF9sb25nX2xvbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBndWlu
dDY0IHZhbHVlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0
cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisq
Ki8KIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0
cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF9zdHJpbmdfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFs
dWU6IEEgI2djaGFyKgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQK
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNl
bGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfdGVzdF9vYmpfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLwogV0VCS0lUX0FQSSBXZWJLaXRET01U
ZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfdGVzdF9vYmpfYXR0cihXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF90ZXN0X29i
al9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjV2Vi
S2l0RE9NVGVzdE9iaioKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiov
CiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpOwogCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3htbF9vYmpfYXR0cjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoq
LwogV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
eG1sX29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X3htbF9vYmpfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKiBAdmFsdWU6IEEgI1dlYktpdERPTVRlc3RPYmoqCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF94bWxfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVz
dE9iaiogdmFsdWUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NyZWF0ZToK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8K
IFdFQktJVF9BUEkgZ2Jvb2xlYW4KIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NyZWF0ZShXZWJL
aXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9j
cmVhdGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnYm9v
bGVhbgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X2NyZWF0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnYm9vbGVhbiB2
YWx1ZSk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3N0cmlu
Z19hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSBnY2hhcioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxl
Y3RlZF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHI6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnY2hhcioKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0
ZWRfc3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVl
KTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfaW50ZWdyYWxf
YXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KIFdFQktJVF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3Rl
ZF9pbnRlZ3JhbF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9pbnRlZ3JhbF9hdHRyOgorICogQHNlbGY6IEEg
I1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0
ZWRfaW50ZWdyYWxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSk7CiAK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3Vuc2lnbmVkX2ludGVn
cmFsX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6
CisgKgorKiovCiBXRUJLSVRfQVBJIGd1bG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVm
bGVjdGVkX3Vuc2lnbmVkX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX3Vuc2lnbmVkX2ludGVn
cmFsX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNn
dWxvbmcKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfdW5zaWduZWRfaW50ZWdyYWxfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmLCBndWxvbmcgdmFsdWUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3JlZmxlY3RlZF9ib29sZWFuX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIGdib29sZWFuCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfYm9vbGVhbl9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3Rl
ZF9ib29sZWFuX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVl
OiBBICNnYm9vbGVhbgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQK
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9ib29sZWFuX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3JlZmxlY3RlZF91cmxfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfdXJsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
Zik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX3VybF9hdHRy
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2NoYXIqCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfcmVmbGVjdGVkX3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0
IGdjaGFyKiB2YWx1ZSk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVmbGVj
dGVkX25vbl9lbXB0eV91cmxfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF9yZWZsZWN0ZWRfbm9uX2VtcHR5X3VybF9hdHRyKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9ub25f
ZW1wdHlfdXJsX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVl
OiBBICNnY2hhcioKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfbm9uX2VtcHR5X3VybF9hdHRyKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CiAKKy8qKgorICogd2Via2l0
X2RvbV90ZXN0X29ial9nZXRfcmVmbGVjdGVkX3N0cmluZ19hdHRyOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnY2hh
cioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9zdHJpbmdfYXR0cihXZWJLaXRE
T01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZs
ZWN0ZWRfc3RyaW5nX2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZh
bHVlOiBBICNnY2hhcioKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfc3RyaW5nX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX2ludGVncmFsX2F0dHI6CisgKiBAc2VsZjog
QSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJ
IGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX2ludGVncmFs
X2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfcmVmbGVjdGVkX2N1c3RvbV9pbnRlZ3JhbF9hdHRyOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5zOgorICoK
KyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRf
Y3VzdG9tX2ludGVncmFsX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUp
OwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fYm9v
bGVhbl9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5z
OgorICoKKyoqLwogV0VCS0lUX0FQSSBnYm9vbGVhbgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
cmVmbGVjdGVkX2N1c3RvbV9ib29sZWFuX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVjdGVkX2N1c3RvbV9ib29sZWFu
X2F0dHI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnYm9v
bGVhbgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9k
b21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fYm9vbGVhbl9hdHRyKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX3VybF9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERP
TVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnY2hhcioKIHdl
YmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlZmxlY3RlZF9jdXN0b21fdXJsX2F0dHIoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfcmVmbGVj
dGVkX2N1c3RvbV91cmxfYXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBA
dmFsdWU6IEEgI2djaGFyKgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZv
aWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fdXJsX2F0dHIoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKIAorLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3VzdG9tX25vbl9lbXB0eV91cmxfYXR0cjoK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8K
IFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWZsZWN0ZWRfY3Vz
dG9tX25vbl9lbXB0eV91cmxfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisg
KiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9yZWZsZWN0ZWRfY3VzdG9tX25vbl9lbXB0eV91cmxf
YXR0cjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2djaGFy
KgorICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3JlZmxlY3RlZF9jdXN0b21fbm9uX2VtcHR5X3VybF9hdHRyKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CiAKKy8qKgorICogd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb246CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KIFdFQktJVF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0
aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAqKmVycm9y
KTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfZ2V0dGVyX2V4
Y2VwdGlvbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2ds
b25nCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lU
X0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9hdHRyX3dpdGhfZ2V0dGVyX2V4Y2Vw
dGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSwgR0Vycm9yICoqZXJyb3Ip
OwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJfd2l0aF9zZXR0ZXJfZXhj
ZXB0aW9uOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfYXR0cl93
aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgorICog
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb246CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnbG9uZworICogQGVycm9y
OiAjR0Vycm9yCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfYXR0cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKIAorLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb246
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgor
ICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9zdHJpbmdfYXR0cl93aXRoX2dldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3N0cmluZ19hdHRyX3dpdGhfZ2V0dGVyX2V4Y2VwdGlvbjoKKyAqIEBzZWxmOiBBICNXZWJL
aXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2djaGFyKgorICogQGVycm9yOiAjR0Vycm9yCisg
KgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9nZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yICoqZXJyb3IpOwogCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3N0cmluZ19hdHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlv
bjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisq
Ki8KIFdFQktJVF9BUEkgZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zdHJpbmdfYXR0
cl93aXRoX3NldHRlcl9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgor
ICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0
aW9uOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2NoYXIq
CisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQ
SSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zdHJpbmdfYXR0cl93aXRoX3NldHRlcl9l
eGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJy
b3IgKiplcnJvcik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2NyaXB0X3N0
cmluZ19hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5z
OgorICoKKyoqLwogV0VCS0lUX0FQSSBnY2hhcioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nj
cmlwdF9zdHJpbmdfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2dldF9jb25kaXRpb25hbF9hdHRyMToKKyAqIEBzZWxmOiBBICNXZWJL
aXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisqKi8KIFdFQktJVF9BUEkgZ2xvbmcK
IHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2NvbmRpdGlvbmFsX2F0dHIxKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X2NvbmRpdGlvbmFs
X2F0dHIxOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjZ2xv
bmcKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF9jb25kaXRpb25hbF9hdHRyMShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBn
bG9uZyB2YWx1ZSk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9u
YWxfYXR0cjI6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6
CisgKgorKiovCiBXRUJLSVRfQVBJIGdsb25nCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9jb25k
aXRpb25hbF9hdHRyMihXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKIAorLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF9jb25kaXRpb25hbF9hdHRyMjoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI2dsb25nCisgKgorICogUmV0dXJuczoKKyAqCisqKi8K
IFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxfYXR0
cjIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpOwogCisvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X2NvbmRpdGlvbmFsX2F0dHIzOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnbG9uZwog
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfY29uZGl0aW9uYWxfYXR0cjMoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfY29uZGl0aW9uYWxf
YXR0cjM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnbG9u
ZworICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X2NvbmRpdGlvbmFsX2F0dHIzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGds
b25nIHZhbHVlKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9kZXNjcmlwdGlv
bjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAqCisq
Ki8KIFdFQktJVF9BUEkgZ2xvbmcKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X2Rlc2NyaXB0aW9u
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X2lkOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgor
ICoKKyoqLwogV0VCS0lUX0FQSSBnbG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfaWQoV2Vi
S2l0RE9NVGVzdE9iaiogc2VsZik7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRf
aWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnbG9uZwor
ICoKKyAqIFJldHVybnM6CisgKgorKiovCiBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X2lkKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIHZhbHVlKTsKIAorLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9oYXNoOgorICogQHNlbGY6IEEgI1dlYktpdERP
TVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLwogV0VCS0lUX0FQSSBnY2hhcioKIHdl
YmtpdF9kb21fdGVzdF9vYmpfZ2V0X2hhc2goV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCA0YmNjNzU1Li43ZTcxMjYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZS5oCkBAIC00Niw2ICs0NiwxMyBAQCBzdHJ1Y3QgX1dlYktpdERPTVRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDbGFzcyB7CiBXRUJLSVRfQVBJIEdUeXBl
CiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF90
eXBlICh2b2lkKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRf
dmFsdWVfaW50ZXJmYWNlX2dldF92YWx1ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOgorICoKKyoqLwogV0VCS0lUX0FQSSBXZWJLaXRET01TZXJpYWxpemVkU2NyaXB0VmFsdWUq
CiB3ZWJraXRfZG9tX3Rlc3Rfc2VyaWFsaXplZF9zY3JpcHRfdmFsdWVfaW50ZXJmYWNlX2dldF92
YWx1ZShXZWJLaXRET01UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBzZWxmKTsK
IAotLSAKMS43LjUuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>