From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ista Zahn Subject: Re: Enabling another language in org-babel Date: Wed, 30 Jul 2014 12:47:11 -0400 Message-ID: References: <87ionqhelv.fsf@wivenhoe.ul.ie> <87lhsmefj9.fsf@gmail.com> <87vbrpl76d.fsf@bzg.ath.cx> <878und1jm8.fsf@bzg.ath.cx> <87oaw8b5bd.fsf@bzg.ath.cx> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a11c1d8fa8d0f2a04ff6be950 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55635) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XCX2N-0002u2-Oi for emacs-orgmode@gnu.org; Wed, 30 Jul 2014 12:47:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XCX2L-0001kH-LS for emacs-orgmode@gnu.org; Wed, 30 Jul 2014 12:47:35 -0400 In-Reply-To: <87oaw8b5bd.fsf@bzg.ath.cx> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: "G. Jay Kerns" , emacs-orgmode , brendan.halpin@ul.ie, Eric Schulte --001a11c1d8fa8d0f2a04ff6be950 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I've made the suggested changes, with the exception of the "part of Emacs bit", as this should go in contrib not core. I asked Bastien privately about getting access to the git repository, but will ask here as well: When I run 'git clone orgmode@orgmode.org:org-mode.git' I get a response saying "Permission denied (publickey). fatal: Could not read from remote repository" Does that mean my key wasn't properly added, or did I miss some required se= t-up? Best, Ista On Tue, Jul 29, 2014 at 10:36 AM, Bastien wrote: > Hi Ista, > > some comments on the code below. > > Ista Zahn writes: > >> ;; Copyright (C) 2014 Ista Zahn >> ;; Author: Ista Zahn, based on ob-julia.el by G. Jay Kerns, and ob-R.el >> ;; by Eric Schulte and Dan Davison > > You need to reformat this -- see files with multiple authors in Org or > in Emacs. > >> ;; This file is not part of GNU Emacs. > > We plan to add this to Org's core, so this will be part of Emacs. > >> ;; Stata and ESS are required. > > Maybe add some links for the requirements. > >> (defcustom org-babel-stata-command inferior-STA-program-name >> "Name of command to use for executing stata code." >> :group 'org-babel >> :version "24.4" >> :package-version '(Org . "8.0") > ^^^ > > This needs to be 8.3 > >> ;; The following was a very complicated write object command >> ;; The replacement needs to add error catching >> ;(defvar org-babel-stata-write-object-command "{function(object,transfer= .file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(obje= ct,file=3Dtfile,sep=3D\"\\t\",na=3D\"nil\",row.names=3D%s,col.names=3D%s,qu= ote=3DFALSE);file.rename(tfile,transfer.file)},silent=3DTRUE),\"try-error\"= )){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=3D%= s,transfer.file=3D\"%s\")") > > Maybe simply remove this, or make it more readable. > > Thanks in advance for this contribution! > > -- > Bastien --001a11c1d8fa8d0f2a04ff6be950 Content-Type: text/x-emacs-lisp; charset=US-ASCII; name="ob-stata.el" Content-Disposition: attachment; filename="ob-stata.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hy8vyzku0 Ozs7IG9iLXN0YXRhLmVsIC0tLSBvcmctYmFiZWwgZnVuY3Rpb25zIGZvciBzdGF0YSBjb2RlIGV2 YWx1YXRpb24KCjs7IENvcHlyaWdodCAoQykgMjAxNCBJc3RhIFphaG4KOzsgQXV0aG9yOiBJc3Rh IFphaG4gaXN0YXphaG5AZ21haWwuY29tCjs7ICAgICAgRy4gSmF5IEtlcm5zCjs7ICAgICAgRXJp YyBTY2h1bHRlCjs7ICAgICAgRGFuIERhdmlzb24KCgo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQg b2YgR05VIEVtYWNzLgoKOzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9u KQo7OyBhbnkgbGF0ZXIgdmVyc2lvbi4KOzsKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KOzsKOzsgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90 LCB3cml0ZSB0byB0aGUKOzsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAo7OyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K Cjs7OyBDb21tZW50YXJ5OgoKOzsgVGhlIGZpbGUgcHJvdmlkZXMgT3JnLUJhYmVsIHN1cHBvcnQg Zm9yIGV2YWx1YXRpbmcgc3RhdGEgY29kZS4KOzsgSXQgaXMgYmFzaWNhbGx5IHJlc3VsdCBvZiBm aW5kLWFuZC1yZXBsYWNlICJzdGF0YSIgZm9yICJqdWxpYSIKOzsgaW4gb2ItanVsaWEuZWwgYnkg Ry4gSmF5IEtlcm5zLiBPbmx5ICI6cmVzdWx0cyBvdXRwdXQiIHdvcmtzOiB0aGUKOzsgaGVhZGVy IGFyZ3MgbXVzdCBpbmNsdWRlICI6cmVzdWx0cyBvdXRwdXQiICh0aGlzIGlzIHRoZSBkZWZhdWx0 KS4KOzsgTm90ZSB0aGF0IEknbSBub3Qgc3VyZSAnOnJlc3VsdHMgdmFsdWUnIG1ha2VzIHNlbnNl IG9yIGlzIHVzZWZ1bCAKOzsgYnV0IEkgaGF2ZSBsZWZ0IGFsbCB0aGUgdmFsdWUtcHJvY2Vzc2lu ZyBzdHVmZiBpbmhlcml0ZWQgZnJvbSAKOzsgb2ItanVsaWEgYW5kIG9iLVIuICc6cmVzdWx0cyBn cmFwaGljcycgd291bGQgYmUgbmljZSwgYnV0IEkgaGF2ZQo7OyBub3QgdHJpZWQgdG8gaW1wbGVt ZW50IGl0LiAKOzsgLS1Jc3RhLCAwNy8zMC8yMDE0Cgo7OzsgUmVxdWlyZW1lbnRzOgo7OyBTdGF0 YTogaHR0cDovL3N0YXRhLmNvbQo7OyBFU1M6IGh0dHA6Ly9lc3Muci1wcm9qZWN0Lm9yZwoKOzs7 IENvZGU6CihyZXF1aXJlICdvYikKKGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbCkpCgoo ZGVjbGFyZS1mdW5jdGlvbiBvcmd0YmwtdG8tY3N2ICJvcmctdGFibGUiICh0YWJsZSBwYXJhbXMp KQooZGVjbGFyZS1mdW5jdGlvbiBzdGF0YSAiZXh0OmVzcy1zdGF0YSIgKCZvcHRpb25hbCBzdGFy dC1hcmdzKSkKKGRlY2xhcmUtZnVuY3Rpb24gaW5mZXJpb3ItZXNzLXNlbmQtaW5wdXQgImV4dDpl c3MtaW5mIiAoKSkKKGRlY2xhcmUtZnVuY3Rpb24gZXNzLW1ha2UtYnVmZmVyLWN1cnJlbnQgImV4 dDplc3MtaW5mIiAoKSkKKGRlY2xhcmUtZnVuY3Rpb24gZXNzLWV2YWwtYnVmZmVyICJleHQ6ZXNz LWluZiIgKHZpcykpCihkZWNsYXJlLWZ1bmN0aW9uIG9yZy1udW1iZXItc2VxdWVuY2UgIm9yZy1j b21wYXQiIChmcm9tICZvcHRpb25hbCB0byBpbmMpKQooZGVjbGFyZS1mdW5jdGlvbiBvcmctcmVt b3ZlLWlmLW5vdCAib3JnIiAocHJlZGljYXRlIHNlcSkpCgooZGVmY29uc3Qgb3JnLWJhYmVsLWhl YWRlci1hcmdzOnN0YXRhCiAgJygod2lkdGgJCSAuIDphbnkpCiAgICAoaG9yaXpvbnRhbAkJIC4g OmFueSkKICAgIChyZXN1bHRzICAgICAgICAgICAgIC4gKChmaWxlIGxpc3QgdmVjdG9yIHRhYmxl IHNjYWxhciB2ZXJiYXRpbSkKCQkJICAgIChyYXcgb3JnIGh0bWwgbGF0ZXggY29kZSBwcCB3cmFw KQoJCQkgICAgKHJlcGxhY2Ugc2lsZW50IGFwcGVuZCBwcmVwZW5kKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgOzsgTk9URTogbm90IHN1cmUgJ3ZhbHVlJyBtYWtlcyBzZW5zZSBpbiBzdGF0 YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2UgbWF5IHdhbnQgdG8gcmVtb3ZlIGl0 IGZyb20gdGhlIGxpc3QKCQkJICAgIChvdXRwdXQgdmFsdWUgZ3JhcGhpY3MpKSkpCiAgInN0YXRh LXNwZWNpZmljIGhlYWRlciBhcmd1bWVudHMuIikKCihhZGQtdG8tbGlzdCAnb3JnLWJhYmVsLXRh bmdsZS1sYW5nLWV4dHMgJygic3RhdGEiIC4gImRvIikpCgo7OyBvbmx5ICc6cmVzdWx0cyBvdXRw dXQnIGN1cnJlbnRseSB3b3Jrcywgc28gbWFrZSB0aGF0IHRoZSBkZWZhdWx0CihkZWZ2YXIgb3Jn LWJhYmVsLWRlZmF1bHQtaGVhZGVyLWFyZ3M6c3RhdGEgJygoOnJlc3VsdHMgLiAib3V0cHV0Iikp KQoKKGRlZmN1c3RvbSBvcmctYmFiZWwtc3RhdGEtY29tbWFuZCBpbmZlcmlvci1TVEEtcHJvZ3Jh bS1uYW1lCiAgIk5hbWUgb2YgY29tbWFuZCB0byB1c2UgZm9yIGV4ZWN1dGluZyBzdGF0YSBjb2Rl LiIKICA6Z3JvdXAgJ29yZy1iYWJlbAogIDp2ZXJzaW9uICIyNC40IgogIDpwYWNrYWdlLXZlcnNp b24gJyhPcmcgLiAiOC4zIikKICA6dHlwZSAnc3RyaW5nKQoKKGRlZnZhciBlc3MtbG9jYWwtcHJv Y2Vzcy1uYW1lKSA7IGR5bmFtaWNhbGx5IHNjb3BlZAooZGVmdW4gb3JnLWJhYmVsLWVkaXQtcHJl cDpzdGF0YSAoaW5mbykKICAobGV0ICgoc2Vzc2lvbiAoY2RyIChhc3NvYyA6c2Vzc2lvbiAobnRo IDIgaW5mbykpKSkpCiAgICAod2hlbiAoYW5kIHNlc3Npb24gKHN0cmluZy1tYXRjaCAiXlxcKlxc KC4rP1xcKVxcKiQiIHNlc3Npb24pKQogICAgICAoc2F2ZS1tYXRjaC1kYXRhIChvcmctYmFiZWwt c3RhdGEtaW5pdGlhdGUtc2Vzc2lvbiBzZXNzaW9uIG5pbCkpKSkpCgooZGVmdW4gb3JnLWJhYmVs LWV4cGFuZC1ib2R5OnN0YXRhIChib2R5IHBhcmFtcyAmb3B0aW9uYWwgZ3JhcGhpY3MtZmlsZSkK ICAiRXhwYW5kIEJPRFkgYWNjb3JkaW5nIHRvIFBBUkFNUywgcmV0dXJuIHRoZSBleHBhbmRlZCBi b2R5LiIKICAobGV0ICgoZ3JhcGhpY3MtZmlsZQoJIChvciBncmFwaGljcy1maWxlIChvcmctYmFi ZWwtc3RhdGEtZ3JhcGhpY2FsLW91dHB1dC1maWxlIHBhcmFtcykpKSkKICAgIChtYXBjb25jYXQK ICAgICAjJ2lkZW50aXR5CiAgICAgKChsYW1iZGEgKGluc2lkZSkKCShpZiBncmFwaGljcy1maWxl CiAgICAgICAgICAgIGluc2lkZQoJICBpbnNpZGUpKQogICAgICAoYXBwZW5kIChvcmctYmFiZWwt dmFyaWFibGUtYXNzaWdubWVudHM6c3RhdGEgcGFyYW1zKQoJICAgICAgKGxpc3QgYm9keSkpKSAi XG4iKSkpCgooZGVmdW4gb3JnLWJhYmVsLWV4ZWN1dGU6c3RhdGEgKGJvZHkgcGFyYW1zKQogICJF eGVjdXRlIGEgYmxvY2sgb2Ygc3RhdGEgY29kZS4KVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkg YG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaycuIgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGxl dCogKChyZXN1bHQtcGFyYW1zIChjZHIgKGFzc29jIDpyZXN1bHQtcGFyYW1zIHBhcmFtcykpKQoJ ICAgKHJlc3VsdC10eXBlIChjZHIgKGFzc29jIDpyZXN1bHQtdHlwZSBwYXJhbXMpKSkKICAgICAg ICAgICAoc2Vzc2lvbiAob3JnLWJhYmVsLXN0YXRhLWluaXRpYXRlLXNlc3Npb24KCQkgICAgIChj ZHIgKGFzc29jIDpzZXNzaW9uIHBhcmFtcykpIHBhcmFtcykpCgkgICAoY29sbmFtZXMtcCAoY2Ry IChhc3NvYyA6Y29sbmFtZXMgcGFyYW1zKSkpCgkgICAocm93bmFtZXMtcCAoY2RyIChhc3NvYyA6 cm93bmFtZXMgcGFyYW1zKSkpCgkgICAoZ3JhcGhpY3MtZmlsZSAob3JnLWJhYmVsLXN0YXRhLWdy YXBoaWNhbC1vdXRwdXQtZmlsZSBwYXJhbXMpKQoJICAgKGZ1bGwtYm9keSAob3JnLWJhYmVsLWV4 cGFuZC1ib2R5OnN0YXRhIGJvZHkgcGFyYW1zIGdyYXBoaWNzLWZpbGUpKQoJICAgKHJlc3VsdAoJ ICAgIChvcmctYmFiZWwtc3RhdGEtZXZhbHVhdGUKCSAgICAgc2Vzc2lvbiBmdWxsLWJvZHkgcmVz dWx0LXR5cGUgcmVzdWx0LXBhcmFtcwoJICAgICAob3IgKGVxdWFsICJ5ZXMiIGNvbG5hbWVzLXAp CgkJIChvcmctYmFiZWwtcGljay1uYW1lCgkJICAoY2RyIChhc3NvYyA6Y29sbmFtZS1uYW1lcyBw YXJhbXMpKSBjb2xuYW1lcy1wKSkKCSAgICAgKG9yIChlcXVhbCAieWVzIiByb3duYW1lcy1wKQoJ CSAob3JnLWJhYmVsLXBpY2stbmFtZQoJCSAgKGNkciAoYXNzb2MgOnJvd25hbWUtbmFtZXMgcGFy YW1zKSkgcm93bmFtZXMtcCkpKSkpCiAgICAgIChpZiBncmFwaGljcy1maWxlIG5pbCByZXN1bHQp KSkpCgooZGVmdW4gb3JnLWJhYmVsLXByZXAtc2Vzc2lvbjpzdGF0YSAoc2Vzc2lvbiBwYXJhbXMp CiAgIlByZXBhcmUgU0VTU0lPTiBhY2NvcmRpbmcgdG8gdGhlIGhlYWRlciBhcmd1bWVudHMgc3Bl Y2lmaWVkIGluIFBBUkFNUy4iCiAgKGxldCogKChzZXNzaW9uIChvcmctYmFiZWwtc3RhdGEtaW5p dGlhdGUtc2Vzc2lvbiBzZXNzaW9uIHBhcmFtcykpCgkgKHZhci1saW5lcyAob3JnLWJhYmVsLXZh cmlhYmxlLWFzc2lnbm1lbnRzOnN0YXRhIHBhcmFtcykpKQogICAgKG9yZy1iYWJlbC1jb21pbnQt aW4tYnVmZmVyIHNlc3Npb24KICAgICAgKG1hcGMgKGxhbWJkYSAodmFyKQogICAgICAgICAgICAg IChlbmQtb2YtbGluZSAxKSAoaW5zZXJ0IHZhcikgKGNvbWludC1zZW5kLWlucHV0IG5pbCB0KQog ICAgICAgICAgICAgIChvcmctYmFiZWwtY29taW50LXdhaXQtZm9yLW91dHB1dCBzZXNzaW9uKSkg dmFyLWxpbmVzKSkKICAgIHNlc3Npb24pKQoKKGRlZnVuIG9yZy1iYWJlbC1sb2FkLXNlc3Npb246 c3RhdGEgKHNlc3Npb24gYm9keSBwYXJhbXMpCiAgIkxvYWQgQk9EWSBpbnRvIFNFU1NJT04uIgog IChzYXZlLXdpbmRvdy1leGN1cnNpb24KICAgIChsZXQgKChidWZmZXIgKG9yZy1iYWJlbC1wcmVw LXNlc3Npb246c3RhdGEgc2Vzc2lvbiBwYXJhbXMpKSkKICAgICAgKHdpdGgtY3VycmVudC1idWZm ZXIgYnVmZmVyCiAgICAgICAgKGdvdG8tY2hhciAocHJvY2Vzcy1tYXJrIChnZXQtYnVmZmVyLXBy b2Nlc3MgKGN1cnJlbnQtYnVmZmVyKSkpKQogICAgICAgIChpbnNlcnQgKG9yZy1iYWJlbC1jaG9t cCBib2R5KSkpCiAgICAgIGJ1ZmZlcikpKQoKOzsgaGVscGVyIGZ1bmN0aW9ucwoKKGRlZnVuIG9y Zy1iYWJlbC12YXJpYWJsZS1hc3NpZ25tZW50czpzdGF0YSAocGFyYW1zKQogICJSZXR1cm4gbGlz dCBvZiBzdGF0YSBzdGF0ZW1lbnRzIGFzc2lnbmluZyB0aGUgYmxvY2sncyB2YXJpYWJsZXMuIgog IChsZXQgKCh2YXJzIChtYXBjYXIgIydjZHIgKG9yZy1iYWJlbC1nZXQtaGVhZGVyIHBhcmFtcyA6 dmFyKSkpKQogICAgKG1hcGNhcgogICAgIChsYW1iZGEgKHBhaXIpCiAgICAgICAob3JnLWJhYmVs LXN0YXRhLWFzc2lnbi1lbGlzcAoJKGNhciBwYWlyKSAoY2RyIHBhaXIpCgkoZXF1YWwgInllcyIg KGNkciAoYXNzb2MgOmNvbG5hbWVzIHBhcmFtcykpKQoJKGVxdWFsICJ5ZXMiIChjZHIgKGFzc29j IDpyb3duYW1lcyBwYXJhbXMpKSkpKQogICAgIChtYXBjYXIKICAgICAgKGxhbWJkYSAoaSkKCShj b25zIChjYXIgKG50aCBpIHZhcnMpKQoJICAgICAgKG9yZy1iYWJlbC1yZWFzc2VtYmxlLXRhYmxl CgkgICAgICAgKGNkciAobnRoIGkgdmFycykpCgkgICAgICAgKGNkciAobnRoIGkgKGNkciAoYXNz b2MgOmNvbG5hbWUtbmFtZXMgcGFyYW1zKSkpKQoJICAgICAgIChjZHIgKG50aCBpIChjZHIgKGFz c29jIDpyb3duYW1lLW5hbWVzIHBhcmFtcykpKSkpKSkKICAgICAgKG9yZy1udW1iZXItc2VxdWVu Y2UgMCAoMS0gKGxlbmd0aCB2YXJzKSkpKSkpKQoKKGRlZnVuIG9yZy1iYWJlbC1zdGF0YS1xdW90 ZS1jc3YtZmllbGQgKHMpCiAgIlF1b3RlIGZpZWxkIFMgZm9yIGV4cG9ydCB0byBzdGF0YS4iCiAg KGlmIChzdHJpbmdwIHMpCiAgICAgIChjb25jYXQgIlwiIiAobWFwY29uY2F0ICdpZGVudGl0eSAo c3BsaXQtc3RyaW5nIHMgIlwiIikgIlwiXCIiKSAiXCIiKQogICAgKGZvcm1hdCAiJVMiIHMpKSkK CihkZWZ1biBvcmctYmFiZWwtc3RhdGEtYXNzaWduLWVsaXNwIChuYW1lIHZhbHVlIGNvbG5hbWVz LXAgcm93bmFtZXMtcCkKICAiQ29uc3RydWN0IHN0YXRhIGNvZGUgYXNzaWduaW5nIHRoZSBlbGlz cCBWQUxVRSB0byBhIHZhcmlhYmxlIG5hbWVkIE5BTUUuIgogIChpZiAobGlzdHAgdmFsdWUpCiAg ICAgIChsZXQgKChtYXggKGFwcGx5ICMnbWF4IChtYXBjYXIgIydsZW5ndGggKG9yZy1yZW1vdmUt aWYtbm90CgkJCQkJCSMnc2VxdWVuY2VwIHZhbHVlKSkpKQoJICAgIChtaW4gKGFwcGx5ICMnbWlu IChtYXBjYXIgIydsZW5ndGggKG9yZy1yZW1vdmUtaWYtbm90CgkJCQkJCSMnc2VxdWVuY2VwIHZh bHVlKSkpKQoJICAgICh0cmFuc2l0aW9uLWZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgInN0YXRh LWltcG9ydC0iKSkpCiAgICAgICAgOzsgZW5zdXJlIFZBTFVFIGhhcyBhbiBvcmd0Ymwgc3RydWN0 dXJlIChkZXB0aCBvZiBhdCBsZWFzdCAyKQogICAgICAgICh1bmxlc3MgKGxpc3RwIChjYXIgdmFs dWUpKSAoc2V0cSB2YWx1ZSAobGlzdCB2YWx1ZSkpKQogICAgICAgICh3aXRoLXRlbXAtZmlsZSB0 cmFuc2l0aW9uLWZpbGUKICAgICAgICAgIChpbnNlcnQKCSAgIChvcmd0YmwtdG8tY3N2IHZhbHVl ICcoOmZtdCBvcmctYmFiZWwtc3RhdGEtcXVvdGUtY3N2LWZpZWxkKSkKCSAgICJcbiIpKQoJKGxl dCAoKGZpbGUgKG9yZy1iYWJlbC1wcm9jZXNzLWZpbGUtbmFtZSB0cmFuc2l0aW9uLWZpbGUgJ25v cXVvdGUpKQoJICAgICAgKGhlYWRlciAoaWYgKG9yIChlcSAobnRoIDEgdmFsdWUpICdobGluZSkg Y29sbmFtZXMtcCkKCQkJICAiVFJVRSIgIkZBTFNFIikpCgkgICAgICAocm93LW5hbWVzIChpZiBy b3duYW1lcy1wICIxIiAiTlVMTCIpKSkKCSAgKGlmICg9IG1heCBtaW4pCgkgICAgICAoZm9ybWF0 ICIlcyA9IGluc2hlZXQgdXNpbmcgXCIlc1wiIiBuYW1lIGZpbGUpCgkgICAgKGZvcm1hdCAiJXMg PSBpbnNoZWV0IHVzaW5nIFwiJXNcIiIKCQkgICAgbmFtZSBmaWxlKSkpKQogICAgKGZvcm1hdCAi JXMgPSAlcyIgbmFtZSAob3JnLWJhYmVsLXN0YXRhLXF1b3RlLWNzdi1maWVsZCB2YWx1ZSkpKSkK CihkZWZ2YXIgZXNzLWFzay1mb3ItZXNzLWRpcmVjdG9yeSkgOyBkeW5hbWljYWxseSBzY29wZWQK CihkZWZ1biBvcmctYmFiZWwtc3RhdGEtaW5pdGlhdGUtc2Vzc2lvbiAoc2Vzc2lvbiBwYXJhbXMp CiAgIklmIHRoZXJlIGlzIG5vdCBhIGN1cnJlbnQgc3RhdGEgcHJvY2VzcyB0aGVuIGNyZWF0ZSBv bmUuIgogICh1bmxlc3MgKHN0cmluZz0gc2Vzc2lvbiAibm9uZSIpCiAgICAobGV0ICgoc2Vzc2lv biAob3Igc2Vzc2lvbiAiKnN0YXRhKiIpKQoJICAoZXNzLWFzay1mb3ItZXNzLWRpcmVjdG9yeQoJ ICAgKGFuZCAoYW5kIChib3VuZHAgJ2Vzcy1hc2stZm9yLWVzcy1kaXJlY3RvcnkpIGVzcy1hc2st Zm9yLWVzcy1kaXJlY3RvcnkpCgkJKG5vdCAoY2RyIChhc3NvYyA6ZGlyIHBhcmFtcykpKSkpKQog ICAgICAoaWYgKG9yZy1iYWJlbC1jb21pbnQtYnVmZmVyLWxpdmVwIHNlc3Npb24pCgkgIHNlc3Np b24KCShzYXZlLXdpbmRvdy1leGN1cnNpb24KCSAgKHJlcXVpcmUgJ2VzcykgKHN0YXRhKQoJICAo cmVuYW1lLWJ1ZmZlcgoJICAgKGlmIChidWZmZXJwIHNlc3Npb24pCgkgICAgICAgKGJ1ZmZlci1u YW1lIHNlc3Npb24pCgkgICAgIChpZiAoc3RyaW5ncCBzZXNzaW9uKQoJCSBzZXNzaW9uCgkgICAg ICAgKGJ1ZmZlci1uYW1lKSkpKQoJICAoY3VycmVudC1idWZmZXIpKSkpKSkKCihkZWZ1biBvcmct YmFiZWwtc3RhdGEtYXNzb2NpYXRlLXNlc3Npb24gKHNlc3Npb24pCiAgIkFzc29jaWF0ZSBzdGF0 YSBjb2RlIGJ1ZmZlciB3aXRoIGEgc3RhdGEgc2Vzc2lvbi4KTWFrZSBTRVNTSU9OIGJlIHRoZSBp bmZlcmlvciBFU1MgcHJvY2VzcyBhc3NvY2lhdGVkIHdpdGggdGhlCmN1cnJlbnQgY29kZSBidWZm ZXIuIgogIChzZXRxIGVzcy1sb2NhbC1wcm9jZXNzLW5hbWUKCShwcm9jZXNzLW5hbWUgKGdldC1i dWZmZXItcHJvY2VzcyBzZXNzaW9uKSkpCiAgKGVzcy1tYWtlLWJ1ZmZlci1jdXJyZW50KSkKCihk ZWZ1biBvcmctYmFiZWwtc3RhdGEtZ3JhcGhpY2FsLW91dHB1dC1maWxlIChwYXJhbXMpCiAgIk5h bWUgb2YgZmlsZSB0byB3aGljaCBzdGF0YSBzaG91bGQgc2VuZCBncmFwaGljYWwgb3V0cHV0LiIK ICAoYW5kIChtZW1iZXIgImdyYXBoaWNzIiAoY2RyIChhc3NxIDpyZXN1bHQtcGFyYW1zIHBhcmFt cykpKQogICAgICAgKGNkciAoYXNzcSA6ZmlsZSBwYXJhbXMpKSkpCgooZGVmdmFyIG9yZy1iYWJl bC1zdGF0YS1lb2UtaW5kaWNhdG9yICJkaXNwbGF5IFwib3JnX2JhYmVsX3N0YXRhX2VvZVwiIikK KGRlZnZhciBvcmctYmFiZWwtc3RhdGEtZW9lLW91dHB1dCAib3JnX2JhYmVsX3N0YXRhX2VvZSIp CgooZGVmdmFyIG9yZy1iYWJlbC1zdGF0YS13cml0ZS1vYmplY3QtY29tbWFuZCAib3V0c2hlZXQg dXNpbmcgXCIlc1wiIikKCihkZWZ1biBvcmctYmFiZWwtc3RhdGEtZXZhbHVhdGUKICAoc2Vzc2lv biBib2R5IHJlc3VsdC10eXBlIHJlc3VsdC1wYXJhbXMgY29sdW1uLW5hbWVzLXAgcm93LW5hbWVz LXApCiAgIkV2YWx1YXRlIHN0YXRhIGNvZGUgaW4gQk9EWS4iCiAgKGlmIHNlc3Npb24KICAgICAg KG9yZy1iYWJlbC1zdGF0YS1ldmFsdWF0ZS1zZXNzaW9uCiAgICAgICBzZXNzaW9uIGJvZHkgcmVz dWx0LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkKICAgIChv cmctYmFiZWwtc3RhdGEtZXZhbHVhdGUtZXh0ZXJuYWwtcHJvY2VzcwogICAgIGJvZHkgcmVzdWx0 LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkpKQoKKGRlZnVu IG9yZy1iYWJlbC1zdGF0YS1ldmFsdWF0ZS1leHRlcm5hbC1wcm9jZXNzCiAgKGJvZHkgcmVzdWx0 LXR5cGUgcmVzdWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkKICAiRXZhbHVh dGUgQk9EWSBpbiBleHRlcm5hbCBzdGF0YSBwcm9jZXNzLgpJZiBSRVNVTFQtVFlQRSBlcXVhbHMg J291dHB1dCB0aGVuIHJldHVybiBzdGFuZGFyZCBvdXRwdXQgYXMgYQpzdHJpbmcuICBJZiBSRVNV TFQtVFlQRSBlcXVhbHMgJ3ZhbHVlIHRoZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKbGFzdCBz dGF0ZW1lbnQgaW4gQk9EWSwgYXMgZWxpc3AuIgogIChjYXNlIHJlc3VsdC10eXBlCiAgICAodmFs dWUKICAgICAobGV0ICgodG1wLWZpbGUgKG9yZy1iYWJlbC10ZW1wLWZpbGUgInN0YXRhLSIpKSkK ICAgICAgIChvcmctYmFiZWwtZXZhbCBvcmctYmFiZWwtc3RhdGEtY29tbWFuZAoJCSAgICAgICAo Zm9ybWF0IG9yZy1iYWJlbC1zdGF0YS13cml0ZS1vYmplY3QtY29tbWFuZAoJCQkgICAgICAgKG9y Zy1iYWJlbC1wcm9jZXNzLWZpbGUtbmFtZSB0bXAtZmlsZSAnbm9xdW90ZSkKCQkJICAgICAgIChm b3JtYXQgImJlZ2luXG4lc1xuZW5kIiBib2R5KSkpCiAgICAgICAob3JnLWJhYmVsLXN0YXRhLXBy b2Nlc3MtdmFsdWUtcmVzdWx0Cgkob3JnLWJhYmVsLXJlc3VsdC1jb25kIHJlc3VsdC1wYXJhbXMK CSAgKHdpdGgtdGVtcC1idWZmZXIKCSAgICAoaW5zZXJ0LWZpbGUtY29udGVudHMgdG1wLWZpbGUp CgkgICAgKGJ1ZmZlci1zdHJpbmcpKQoJICAob3JnLWJhYmVsLWltcG9ydC1lbGlzcC1mcm9tLWZp bGUgdG1wLWZpbGUgJyg0KSkpCgljb2x1bW4tbmFtZXMtcCkpKQogICAgKG91dHB1dCAob3JnLWJh YmVsLWV2YWwgb3JnLWJhYmVsLXN0YXRhLWNvbW1hbmQgYm9keSkpKSkKCihkZWZ1biBvcmctYmFi ZWwtc3RhdGEtZXZhbHVhdGUtc2Vzc2lvbgogIChzZXNzaW9uIGJvZHkgcmVzdWx0LXR5cGUgcmVz dWx0LXBhcmFtcyBjb2x1bW4tbmFtZXMtcCByb3ctbmFtZXMtcCkKICAiRXZhbHVhdGUgQk9EWSBp biBTRVNTSU9OLgpJZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ291dHB1dCB0aGVuIHJldHVybiBzdGFu ZGFyZCBvdXRwdXQgYXMgYQpzdHJpbmcuICBJZiBSRVNVTFQtVFlQRSBlcXVhbHMgJ3ZhbHVlIHRo ZW4gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKbGFzdCBzdGF0ZW1lbnQgaW4gQk9EWSwgYXMgZWxp c3AuIgogIChjYXNlIHJlc3VsdC10eXBlCiAgICAodmFsdWUKICAgICAod2l0aC10ZW1wLWJ1ZmZl cgogICAgICAgKGluc2VydCAob3JnLWJhYmVsLWNob21wIGJvZHkpKQogICAgICAgKGxldCAoKGVz cy1sb2NhbC1wcm9jZXNzLW5hbWUKCSAgICAgIChwcm9jZXNzLW5hbWUgKGdldC1idWZmZXItcHJv Y2VzcyBzZXNzaW9uKSkpCgkgICAgIChlc3MtZXZhbC12aXNpYmx5LXAgbmlsKSkKCSAoZXNzLWV2 YWwtYnVmZmVyIG5pbCkpKQogICAgIChsZXQgKCh0bXAtZmlsZSAob3JnLWJhYmVsLXRlbXAtZmls ZSAic3RhdGEtIikpKQogICAgICAgKG9yZy1iYWJlbC1jb21pbnQtZXZhbC1pbnZpc2libHktYW5k LXdhaXQtZm9yLWZpbGUKCXNlc3Npb24gdG1wLWZpbGUKCShmb3JtYXQgb3JnLWJhYmVsLXN0YXRh LXdyaXRlLW9iamVjdC1jb21tYW5kCgkJKG9yZy1iYWJlbC1wcm9jZXNzLWZpbGUtbmFtZSB0bXAt ZmlsZSAnbm9xdW90ZSkgImFucyIpKQogICAgICAgKG9yZy1iYWJlbC1zdGF0YS1wcm9jZXNzLXZh bHVlLXJlc3VsdAoJKG9yZy1iYWJlbC1yZXN1bHQtY29uZCByZXN1bHQtcGFyYW1zCgkgICh3aXRo LXRlbXAtYnVmZmVyCgkgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIHRtcC1maWxlKQoJICAgIChi dWZmZXItc3RyaW5nKSkKCSAgKG9yZy1iYWJlbC1pbXBvcnQtZWxpc3AtZnJvbS1maWxlIHRtcC1m aWxlICcoNCkpKQoJY29sdW1uLW5hbWVzLXApKSkKICAgIChvdXRwdXQKICAgICAobWFwY29uY2F0 CiAgICAgICMnb3JnLWJhYmVsLWNob21wCiAgICAgIChidXRsYXN0CiAgICAgICAoZGVscSBuaWwK CSAgICAgKG1hcGNhcgoJICAgICAgKGxhbWJkYSAobGluZSkgKHdoZW4gKD4gKGxlbmd0aCBsaW5l KSAwKSBsaW5lKSkKCSAgICAgIChtYXBjYXIKCSAgICAgICAobGFtYmRhIChsaW5lKSA7OyBjbGVh bnVwIGV4dHJhIHByb21wdHMgbGVmdCBpbiBvdXRwdXQKCQkgKGlmIChzdHJpbmctbWF0Y2gKCQkg ICAgICAiXlxcKFsgXSpbPitcXC5dWyBdP1xcKStcXChbWzAtOV0rXFx8WyBdXFwpIiBsaW5lKQoJ CSAgICAgKHN1YnN0cmluZyBsaW5lIChtYXRjaC1lbmQgMSkpCgkJICAgbGluZSkpCgkgICAgICAg KG9yZy1iYWJlbC1jb21pbnQtd2l0aC1vdXRwdXQgKHNlc3Npb24gb3JnLWJhYmVsLXN0YXRhLWVv ZS1vdXRwdXQpCgkJIChpbnNlcnQgKG1hcGNvbmNhdCAjJ29yZy1iYWJlbC1jaG9tcAoJCQkJICAg IChsaXN0IGJvZHkgb3JnLWJhYmVsLXN0YXRhLWVvZS1pbmRpY2F0b3IpCgkJCQkgICAgIlxuIikp CgkJIChpbmZlcmlvci1lc3Mtc2VuZC1pbnB1dCkpKSkpKSAiXG4iKSkpKQoKKGRlZnVuIG9yZy1i YWJlbC1zdGF0YS1wcm9jZXNzLXZhbHVlLXJlc3VsdCAocmVzdWx0IGNvbHVtbi1uYW1lcy1wKQog ICJzdGF0YS1zcGVjaWZpYyBwcm9jZXNzaW5nIG9mIHJldHVybiB2YWx1ZS4KSW5zZXJ0IGhsaW5l IGlmIGNvbHVtbiBuYW1lcyBpbiBvdXRwdXQgaGF2ZSBiZWVuIHJlcXVlc3RlZC4iCiAgKGlmIGNv bHVtbi1uYW1lcy1wCiAgICAgIChjb25zIChjYXIgcmVzdWx0KSAoY29ucyAnaGxpbmUgKGNkciBy ZXN1bHQpKSkKICAgIHJlc3VsdCkpCgoocHJvdmlkZSAnb2Itc3RhdGEpCgo7Ozsgb2Itc3RhdGEu ZWwgZW5kcyBoZXJlCg== --001a11c1d8fa8d0f2a04ff6be950--