Produced by Araxis Merge on 5/9/2017 12:03:03 PM Eastern Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
| # | Location | File | Last Modified |
|---|---|---|---|
| 1 | Tue May 9 16:03:03 2017 UTC | ||
| 2 | OSCIF_HEC_v1.4_Sprint23_build4_Apr_2017.zip\CRM_solutions\Managed\North52BPA_1_0_0_506_managed_2013_2015_2016..zip\WebResources | north52_javascriptnorth52formulahelperC4B5F01C-4DB5-E011-B37A-00155DF5B00D | Mon Sep 19 18:20:18 2016 UTC |
| Description | Between Files 1 and 2 |
|
|---|---|---|
| Text Blocks | Lines | |
| Unchanged | 0 | 0 |
| Changed | 0 | 0 |
| Inserted | 1 | 313 |
| Removed | 0 | 0 |
| Whitespace | |
|---|---|
| Character case | Differences in character case are significant |
| Line endings | Differences in line endings (CR and LF characters) are ignored |
| CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
| 1 | //If the S DK namespa ce object is not def ined, crea te it. | |||||
| 2 | if (typeof (N52) == "undefined ") | |||||
| 3 | { N52 = {} ; } | |||||
| 4 | // Create Namespace container for functi ons in thi s library; | |||||
| 5 | N52.Helper s = { | |||||
| 6 | ||||||
| 7 | GetServerU rl: functi on() | |||||
| 8 | { | |||||
| 9 | var co ntext, crm ServerUrl; | |||||
| 10 | if (ty peof GetGl obalContex t != "unde fined") { | |||||
| 11 | co ntext = Ge tGlobalCon text(); | |||||
| 12 | } | |||||
| 13 | else i f (typeof Xrm != "un defined") { | |||||
| 14 | co ntext = Xr m.Page.con text; | |||||
| 15 | } | |||||
| 16 | else { | |||||
| 17 | th row new Er ror("CRM c ontext is not availa ble."); | |||||
| 18 | } | |||||
| 19 | ||||||
| 20 | ||||||
| 21 | ||||||
| 22 | if (ty peof conte xt.getClie ntUrl != " undefined" ) | |||||
| 23 | { | |||||
| 24 | crm ServerUrl = context. getClientU rl(); | |||||
| 25 | } | |||||
| 26 | else | |||||
| 27 | { | |||||
| 28 | c rmServerUr l = contex t.getServe rUrl(); | |||||
| 29 | c rmServerUr l = crmSer verUrl.rep lace(/^(ht tp|https): \/\/([_a-z A-Z0-9\-\. ]+)(:([0-9 ]{1,5}))?/ , window.l ocation.pr otocol + " //" + wind ow.locatio n.host); | |||||
| 30 | c rmServerUr l = crmSer verUrl.rep lace(/\/$/ , ""); // remove tra iling slas h if any | |||||
| 31 | } | |||||
| 32 | ||||||
| 33 | return crmServer Url; | |||||
| 34 | }, | |||||
| 35 | ||||||
| 36 | SearchTrac eLog: func tion() | |||||
| 37 | { | |||||
| 38 | var fin alUrl = N5 2.Helpers. GetServerU rl() + '/a dvancedfin d/advfind. aspx?etn=n orth52_tra ce'; | |||||
| 39 | window. open(final Url); | |||||
| 40 | }, | |||||
| 41 | ||||||
| 42 | openFormul aView: fun ction() | |||||
| 43 | { | |||||
| 44 | ||||||
| 45 | window.ope n(N52.Help ers.GetSer verUrl() + "/main.as px?etn=nor th52_formu la&pagetyp e=entityli st"); | |||||
| 46 | }, | |||||
| 47 | ||||||
| 48 | openXCache View: func tion() | |||||
| 49 | { | |||||
| 50 | ||||||
| 51 | window.ope n(N52.Help ers.GetSer verUrl() + "/main.as px?etn=nor th52_xcach e&pagetype =entitylis t"); | |||||
| 52 | }, | |||||
| 53 | ||||||
| 54 | ||||||
| 55 | doNothing: function( ) | |||||
| 56 | { | |||||
| 57 | ||||||
| 58 | return fal se; | |||||
| 59 | }, | |||||
| 60 | ||||||
| 61 | openGenieV iew: funct ion() | |||||
| 62 | { | |||||
| 63 | ||||||
| 64 | window.ope n(N52.Help ers.GetSer verUrl() + "/main.as px?etn=nor th52_formu la&extraqs =%3fpagemo de%3difram e%26sitema ppath%3dSe ttings%257 cNorth52%2 57cnorth52 _formula&p agetype=en titylist&v iewid=%7b0 8B5937B-7D 36-E311-89 F7-00155DF 5B00D%7d&v iewtype=10 39"); | |||||
| 65 | }, | |||||
| 66 | ||||||
| 67 | openSmartF lowView: f unction() | |||||
| 68 | { | |||||
| 69 | ||||||
| 70 | window.ope n(N52.Help ers.GetSer verUrl() + "/main.as px?etn=nor th52_formu la&extraqs =%3fpagemo de%3difram e%26sitema ppath%3dSe ttings%257 cNorth52%2 57cnorth52 _formula&p agetype=en titylist&v iewid=%7bF B1F9BAE-5F 57-E211-8F 46-00155DF 5B00D%7d&v iewtype=10 39"); | |||||
| 71 | }, | |||||
| 72 | ||||||
| 73 | ||||||
| 74 | openSchedu leView: fu nction() | |||||
| 75 | { | |||||
| 76 | ||||||
| 77 | window.ope n(N52.Help ers.GetSer verUrl() + "/main.as px?etn=nor th52_sched ule&pagety pe=entityl ist"); | |||||
| 78 | }, | |||||
| 79 | ||||||
| 80 | openFormul a: functio n(formulaT ype) | |||||
| 81 | { | |||||
| 82 | ||||||
| 83 | var param ="north52_ formulatyp e=" + for mulaType; | |||||
| 84 | ||||||
| 85 | var params Local = {} ; | |||||
| 86 | paramsLoca l["north52 _formulaty pe"] = for mulaType; | |||||
| 87 | ||||||
| 88 | Xrm.Utilit y.openEnti tyForm("no rth52_form ula", null , paramsLo cal); | |||||
| 89 | ||||||
| 90 | ||||||
| 91 | }, | |||||
| 92 | ||||||
| 93 | ||||||
| 94 | ||||||
| 95 | openXCache : function () | |||||
| 96 | { | |||||
| 97 | ||||||
| 98 | Xrm.Utilit y.openEnti tyForm("no rth52_xcac he", null, null); | |||||
| 99 | ||||||
| 100 | }, | |||||
| 101 | ||||||
| 102 | ||||||
| 103 | openSchedu le: functi on(schedul eType) | |||||
| 104 | { | |||||
| 105 | ||||||
| 106 | var param ="north52_ schedulety pe=" + sc heduleType ; | |||||
| 107 | ||||||
| 108 | var params Local = {} ; | |||||
| 109 | paramsLoca l["north52 _schedulet ype"] = sc heduleType ; | |||||
| 110 | ||||||
| 111 | Xrm.Utilit y.openEnti tyForm("no rth52_sche dule", nul l, paramsL ocal); | |||||
| 112 | ||||||
| 113 | }, | |||||
| 114 | ||||||
| 115 | GetConfigu rationId: function() | |||||
| 116 | { | |||||
| 117 | OData Path = N52 .Helpers.G etServerUr l() + "/XR MServices/ 2011/Organ izationDat a.svc"; | |||||
| 118 | ||||||
| 119 | var r etrieveRec ordsReq = new XMLHtt pRequest() ; | |||||
| 120 | var c onfigurati onId = nul l; | |||||
| 121 | ||||||
| 122 | retri eveRecords Req.open(' GET', ODat aPath+"/no rth52_conf igurationS et",false) ; | |||||
| 123 | retri eveRecords Req.setReq uestHeader ("Accept", "applicat ion/json") ; | |||||
| 124 | retri eveRecords Req.setReq uestHeader ("Content- Type", "ap plication/ json; char set=utf-8" ); | |||||
| 125 | retri eveRecords Req.send() ; | |||||
| 126 | ||||||
| 127 | var n 52config = JSON.par se(retriev eRecordsRe q.response Text).d.re sults; | |||||
| 128 | ||||||
| 129 | if (n 52config[0 ] == null) { | |||||
| 130 | alert(" The North5 2 configur ation reco rd could n ot be foun d. This is probably because yo u have not yet accep ted the li cense. Ple ase naviga te to the North52 So lution, cl ick on the Informati on link & then accep t the lice nse which will creat e the conf iguration record. ") ; | |||||
| 131 | } | |||||
| 132 | else { | |||||
| 133 | configurat ionId= n52 config[0]. north52_co nfiguratio nId; | |||||
| 134 | } | |||||
| 135 | return configurat ionId; | |||||
| 136 | }, | |||||
| 137 | ||||||
| 138 | CallComman dPublish: function ( ) | |||||
| 139 | { | |||||
| 140 | ||||||
| 141 | if ( nav igator.use rAgent.sea rch('iPad' ) > 0) | |||||
| 142 | ale rt("North5 2 Formula Manager: F eature not supported on this d evice."); | |||||
| 143 | else | |||||
| 144 | { | |||||
| 145 | var recordid = Xrm.Page. data.entit y.getId(); | |||||
| 146 | var sourceenti tyname = X rm.Page.ge tAttribute ("north52_ sourceenti tyname").g etValue(); | |||||
| 147 | var finalUrl = N52.Helpe rs.GetServ erUrl() + '/WebResou rces/north 52_html_pu blishformu la?id=' +r ecordid + '&data=' + sourceent ityname; | |||||
| 148 | ||||||
| 149 | if ( (navigat or.userAge nt.search( 'MSIE') > 0) || (nav igator.use rAgent.sea rch('Tride nt/') > 0) ) | |||||
| 150 | window. showModalD ialog(fina lUrl, self , 'dialogW idth: 400p x;dialogHe ight:200px '); | |||||
| 151 | el se | |||||
| 152 | windo w.open(fin alUrl, '_b lank', 'to p=300, lef t=300, wid th=400, he ight=200') ; | |||||
| 153 | ||||||
| 154 | ||||||
| 155 | } | |||||
| 156 | }, | |||||
| 157 | ||||||
| 158 | CallComman dNewFormul aDetail: f unction () | |||||
| 159 | { | |||||
| 160 | ||||||
| 161 | var f ormulaID = Xrm.Page. data.entit y.getId(); | |||||
| 162 | var f ormulaName = Xrm.Pag e.getAttri bute("nort h52_name") .getValue( ); | |||||
| 163 | ||||||
| 164 | var e xtraqs = "north52_f ormula_nor th52_formu ladetail_i d=" + form ulaID; | |||||
| 165 | extra qs += "&n orth52_for mula_north 52_formula detail_idn ame=" + fo rmulaName ; | |||||
| 166 | ||||||
| 167 | var f eatures = "location= no,menubar =no,status =no,toolba r=no"; | |||||
| 168 | ||||||
| 169 | windo w.open("ma in.aspx?et n=north52_ formuladet ail&pagety pe=entityr ecord&extr aqs=" + en codeURICom ponent(ext raqs), "_b lank", fea tures, fal se); | |||||
| 170 | }, | |||||
| 171 | ||||||
| 172 | CallComman dTestFormu la: functi on () | |||||
| 173 | { | |||||
| 174 | ||||||
| 175 | var recordid = Xrm.Page. data.entit y.getId(); | |||||
| 176 | var formulaNam e = Xrm.Pa ge.getAttr ibute("nor th52_name" ).getValue (); | |||||
| 177 | var finalUrl = N52.Helpe rs.GetServ erUrl() + '/WebResou rces/north 52_html_fo rmula_test er?id=' +r ecordid + '&data=' + formulaNa me; | |||||
| 178 | ||||||
| 179 | if ( (navi gator.user Agent.sear ch('MSIE') > 0) || ( navigator. userAgent. search('Tr ident/') > 0) ) | |||||
| 180 | windo w.showModa lDialog(fi nalUrl, se lf, 'dialo gWidth: 55 0px;dialog Height:425 px'); | |||||
| 181 | el se | |||||
| 182 | windo w.open(fin alUrl, '_b lank', 'to p=300, lef t=300, wid th=550, he ight=425') ; | |||||
| 183 | ||||||
| 184 | }, | |||||
| 185 | ||||||
| 186 | OpenConfig uration: f unction() | |||||
| 187 | { | |||||
| 188 | var con figuration Id = N52.H elpers.Get Configurat ionId(); | |||||
| 189 | if ( configurat ionId != n ull) | |||||
| 190 | { | |||||
| 191 | var server UrlFinal = N52.Helpe rs.GetServ erUrl() + '/main.asp x?etn=nort h52_config uration&pa getype=ent ityrecord& id=' + '%7 B'+ config urationId+ '%7D' | |||||
| 192 | ||||||
| 193 | window.ope n(serverUr lFinal); | |||||
| 194 | } | |||||
| 195 | ||||||
| 196 | }, | |||||
| 197 | ||||||
| 198 | OpenConfig urationUti lity: func tion() | |||||
| 199 | { | |||||
| 200 | var con figuration Id = N52.H elpers.Get Configurat ionId(); | |||||
| 201 | if ( configurat ionId != n ull) | |||||
| 202 | { | |||||
| 203 | Xrm.Utilit y.openEnti tyForm('no rth52_conf iguration' , configur ationId , null); | |||||
| 204 | ||||||
| 205 | } | |||||
| 206 | ||||||
| 207 | }, | |||||
| 208 | ||||||
| 209 | ||||||
| 210 | CallSuppor t: functio n() | |||||
| 211 | { | |||||
| 212 | ||||||
| 213 | if(wind ow.UserVoi ce) | |||||
| 214 | return win dow.UserVo ice.showPo pupWidget( ); | |||||
| 215 | else | |||||
| 216 | { | |||||
| 217 | ||||||
| 218 | var protocolty pe = 'http s:' == doc ument.loca tion.proto col ? 'htt ps://' : ' http://'; | |||||
| 219 | var scriptsrc = protocol type + 'w idget.user voice.com/ VV5Js1PsQK Fcgv9gm7hz g.js'; | |||||
| 220 | var head = doc ument.getE lementsByT agName('he ad')[0]; | |||||
| 221 | var script = d ocument.cr eateElemen t('script' ); | |||||
| 222 | scri pt.type = "text/java script"; | |||||
| 223 | scri pt.src = s criptsrc ; | |||||
| 224 | head .appendChi ld(script) ; | |||||
| 225 | ||||||
| 226 | windo w.UserVoic e.showPopu pWidget(); | |||||
| 227 | } | |||||
| 228 | ||||||
| 229 | }, | |||||
| 230 | ||||||
| 231 | CallComman dCloneForm ula: funct ion(comman d, recordi d) | |||||
| 232 | { | |||||
| 233 | ||||||
| 234 | try{ | |||||
| 235 | ||||||
| 236 | if ( n avigator.u serAgent.s earch('iPa d') > 0) | |||||
| 237 | ale rt("North5 2 Formula Manager: F eature not supported on this d evice."); | |||||
| 238 | else i f (recordi d == null) { | |||||
| 239 | alert('No rth52 Form ula Manage r : Please select a Formula to clone.'); | |||||
| 240 | } | |||||
| 241 | else | |||||
| 242 | { | |||||
| 243 | var finalUrl = N52.Help ers.GetSer verUrl() + '/WebReso urces/nort h52_html_c lone_formu la?id=' +r ecordid + '&data=' + command; | |||||
| 244 | ||||||
| 245 | if ( (navi gator.user Agent.sear ch('MSIE') > 0) || ( navigator. userAgent. search('Tr ident/') > 0) ) | |||||
| 246 | window .showModal Dialog(fin alUrl, sel f, 'dialog Width: 400 px;dialogH eight:200p x'); | |||||
| 247 | el se | |||||
| 248 | windo w.open(fin alUrl, '_b lank', 'to p=300, lef t=300, wid th=400, he ight=200') ; | |||||
| 249 | ||||||
| 250 | } | |||||
| 251 | ||||||
| 252 | } | |||||
| 253 | catch (ex ) | |||||
| 254 | { | |||||
| 255 | alert(' North52 Fo rmula Mana ger Error: ' + ex.me ssage); | |||||
| 256 | } | |||||
| 257 | ||||||
| 258 | }, | |||||
| 259 | ||||||
| 260 | PublishAll : function () | |||||
| 261 | { | |||||
| 262 | ||||||
| 263 | try{ | |||||
| 264 | ||||||
| 265 | v ar finalUr l = N52.He lpers.GetS erverUrl() + '/WebRe sources/no rth52_html _deploy'; | |||||
| 266 | ||||||
| 267 | if ( (navi gator.user Agent.sear ch('MSIE') > 0) || ( navigator. userAgent. search('Tr ident/') > 0) ) | |||||
| 268 | windo w.showModa lDialog(fi nalUrl, se lf, 'dialo gWidth: 40 0px;dialog Height:200 px'); | |||||
| 269 | el se | |||||
| 270 | windo w.open(fin alUrl, '_b lank', 'to p=300, lef t=300, wid th=400, he ight=200') ; | |||||
| 271 | ||||||
| 272 | } | |||||
| 273 | catch (ex ) | |||||
| 274 | { | |||||
| 275 | alert(' North52 Fo rmula Mana ger Error: ' + ex.me ssage); | |||||
| 276 | } | |||||
| 277 | ||||||
| 278 | }, | |||||
| 279 | ||||||
| 280 | ||||||
| 281 | ||||||
| 282 | insertAtC aret: func tion (elem entname,te xt) | |||||
| 283 | { | |||||
| 284 | va r element = document .getElemen tById(elem entname); | |||||
| 285 | if (document .selection ) { | |||||
| 286 | el ement.focu s(); | |||||
| 287 | va r sel = do cument.sel ection.cre ateRange() ; | |||||
| 288 | se l.text = t ext; | |||||
| 289 | el ement.focu s(); | |||||
| 290 | } else if (eleme nt.selecti onStart || element.s electionSt art === 0) { | |||||
| 291 | va r startPos = element .selection Start; | |||||
| 292 | va r endPos = element.s electionEn d; | |||||
| 293 | va r scrollTo p = elemen t.scrollTo p; | |||||
| 294 | el ement.valu e = elemen t.value.su bstring(0, startPos) + text + element.va lue.substr ing(endPos , element. value.leng th); | |||||
| 295 | el ement.focu s(); | |||||
| 296 | el ement.sele ctionStart = startPo s + text.l ength; | |||||
| 297 | el ement.sele ctionEnd = startPos + text.len gth; | |||||
| 298 | el ement.scro llTop = sc rollTop; | |||||
| 299 | } else { | |||||
| 300 | el ement.valu e += text; | |||||
| 301 | el ement.focu s(); | |||||
| 302 | } | |||||
| 303 | }, | |||||
| 304 | ||||||
| 305 | ||||||
| 306 | showHelp: function () | |||||
| 307 | { | |||||
| 308 | al ert('North 52 Formula Manager: Online hel p coming s oon...'); | |||||
| 309 | } | |||||
| 310 | ||||||
| 311 | } | |||||
| 312 | ||||||
| 313 | if (!this. JSON) { th is.JSON = {}; } (fun ction () { function f(n) { ret urn n < 10 ? '0' + n : n; } if (typeof D ate.protot ype.toJSON !== 'func tion') { D ate.protot ype.toJSON = functio n (key) { return isF inite(this .valueOf() ) ? this.g etUTCFullY ear() + '- ' + f(this .getUTCMon th() + 1) + '-' + f( this.getUT CDate()) + 'T' + f(t his.getUTC Hours()) + ':' + f(t his.getUTC Minutes()) + ':' + f (this.getU TCSeconds( )) + 'Z' : null; }; String.pro totype.toJ SON = Numb er.prototy pe.toJSON = Boolean. prototype. toJSON = f unction (k ey) { retu rn this.va lueOf(); } ; } var cx = /[\u000 0\u00ad\u0 600-\u0604 \u070f\u17 b4\u17b5\u 200c-\u200 f\u2028-\u 202f\u2060 -\u206f\uf eff\ufff0- \uffff]/g, escapable = /[\\\"\ x00-\x1f\x 7f-\x9f\u0 0ad\u0600- \u0604\u07 0f\u17b4\u 17b5\u200c -\u200f\u2 028-\u202f \u2060-\u2 06f\ufeff\ ufff0-\uff ff]/g, gap , indent, meta = { ' \b': '\\b' , '\t': '\ \t', '\n': '\\n', '\ f': '\\f', '\r': '\\ r', '"': ' \\"', '\\' : '\\\\' } , rep; fun ction quot e(string) { escapabl e.lastInde x = 0; ret urn escapa ble.test(s tring) ? ' "' + strin g.replace( escapable, function (a) { var c = meta[a ]; return typeof c = == 'string ' ? c : '\ \u' + ('00 00' + a.ch arCodeAt(0 ).toString (16)).slic e(-4); }) + '"' : '" ' + string + '"'; } function s tr(key, ho lder) { va r i, k, v, length, m ind = gap, partial, value = ho lder[key]; if (value && typeof value === 'object' && typeof value.toJS ON === 'fu nction') { value = v alue.toJSO N(key); } if (typeof rep === ' function') { value = rep.call( holder, ke y, value); } switch (typeof va lue) { cas e 'string' : return q uote(value ); case 'n umber': re turn isFin ite(value) ? String( value) : ' null'; cas e 'boolean ': case 'n ull': retu rn String( value); ca se 'object ': if (!va lue) { ret urn 'null' ; } gap += indent; p artial = [ ]; if (Obj ect.protot ype.toStri ng.apply(v alue) === '[object A rray]') { length = v alue.lengt h; for (i = 0; i < l ength; i + = 1) { par tial[i] = str(i, val ue) || 'nu ll'; } v = partial.l ength === 0 ? '[]' : gap ? '[\ n' + gap + partial.j oin(',\n' + gap) + ' \n' + mind + ']' : ' [' + parti al.join(', ') + ']'; gap = mind ; return v ; } if (re p && typeo f rep === 'object') { length = rep.lengt h; for (i = 0; i < l ength; i + = 1) { k = rep[i]; i f (typeof k === 'str ing') { v = str(k, v alue); if (v) { part ial.push(q uote(k) + (gap ? ': ' : ':') + v); } } } } else { for (k in value) { i f (Object. hasOwnProp erty.call( value, k)) { v = str (k, value) ; if (v) { partial.p ush(quote( k) + (gap ? ': ' : ' :') + v); } } } } v = partial. length === 0 ? '{}' : gap ? '{ \n' + gap + partial. join(',\n' + gap) + '\n' + min d + '}' : '{' + part ial.join(' ,') + '}'; gap = min d; return v; } } if (typeof JS ON.stringi fy !== 'fu nction') { JSON.stri ngify = fu nction (va lue, repla cer, space ) { var i; gap = ''; indent = ''; if (ty peof space === 'numb er') { for (i = 0; i < space; i += 1) { indent += ' '; } } e lse if (ty peof space === 'stri ng') { ind ent = spac e; } rep = replacer; if (repla cer && typ eof replac er !== 'fu nction' && (typeof r eplacer != = 'object' || typeof replacer. length !== 'number') ) { throw new Error( 'JSON.stri ngify'); } return st r('', { '' : value }) ; }; } if (typeof JS ON.parse ! == 'functi on') { JSO N.parse = function ( text, revi ver) { var j; functi on walk(ho lder, key) { var k, v, value = holder[ke y]; if (va lue && typ eof value === 'objec t') { for (k in valu e) { if (O bject.hasO wnProperty .call(valu e, k)) { v = walk(va lue, k); i f (v !== u ndefined) { value[k] = v; } el se { delet e value[k] ; } } } } return rev iver.call( holder, ke y, value); } text = String(tex t); cx.las tIndex = 0 ; if (cx.t est(text)) { text = text.repla ce(cx, fun ction (a) { return ' \\u' + ('0 000' + a.c harCodeAt( 0).toStrin g(16)).sli ce(-4); }) ; } if (/^ [\],:{}\s] *$/.test(t ext.replac e(/\\(?:[" \\\/bfnrt] |u[0-9a-fA -F]{4})/g, '@').repl ace(/"[^"\ \\n\r]*"|t rue|false| null|-?\d+ (?:\.\d*)? (?:[eE][+\ -]?\d+)?/g , ']').rep lace(/(?:^ |:|,)(?:\s *\[)+/g, ' '))) { j = eval('(' + text + ' )'); retur n typeof r eviver === 'function ' ? walk({ '': j }, '') : j; } throw new SyntaxErr or('JSON.p arse'); }; } } ()); |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.