Saravanan666/pypi-org huggingface dataset:
Package: xldiff
XL DiffA dead-simple command line diffing of datasets stored in Excel
format (.xlsx).Usagepython -m xldiff file_left.xlsx file_right.xlsxIf the datasets match then the program will exit successfully
and produce no output. If they do not match then the first
non-matching row from the "left" and the "right" versions will
be printed and the program will terminate with a non-zero
exit code.OK, but what's it for?Mostly to make it easier to verify
that data has been moved successfully from one system to another
or that a new "version" of a dataset has actually changed.
Package: xld-logchecker
XLD LogcheckerThis is a fork ofhttps://github.com/puddly/xld_logsigner, to be used within our
downstream applications, removing unnecessary functionality that we do not need.Based heavily onbarrybingo/xld_sign.
This is a complete disassembly of the XLD log signing algorithm, re-implemented in
Python 3.5+.Usageusage: xld.py [-h] (--verify | --sign) FILE

Verifies and resigns XLD logs

positional arguments:
  FILE        path to the log file

optional arguments:
  -h, --help  show this help message and exit
  --verify    verify a log
  --sign      sign or fix an existing logOverviewThe final code isn't pretty, but it is simple enough to describe the algorithm.The log is encoded as UTF-8 and hashed with a SHA-256 variant that uses a different IV.The digest is converted to hex and the string\nVersion=0001is appended onto the end.The versioned hex-digest is then passed through an unidentified scrambling function that operates on pairs of bytes (open an issue if you recognize it).The resulting bytestring is then encoded using a 65-character lookup table with a strange mapping.
Package: xld-py-cli
Python CLI forXL Deploy.
For more information, see thedocumentation.Usage$ xld --url URL --username USERNAME --password PASSWORD apply FILENAME

$ xld --url URL --username USERNAME --password PASSWORD generate DIRECTORIES

$ xld --url URL --username USERNAME --password PASSWORD deploy VERSION ENVIRONMENTAdd–debugto see the stacktrace$ xld –url URL –username USERNAME –password PASSWORD apply FILENAME –debug$ xld –url URL –username USERNAME –password PASSWORD generate DIRECTORIES –debug$ xld –url URL –username USERNAME –password PASSWORD deploy VERSION ENVIRONMENT –debugInstallation$ pip install xld-py-cliTestingOn xl-deploy base folder$ ./gradle pytest
Package: xleaf
xleafLeaf and canopy radiative transfer modeling tools built on PROSPECT-D and SAIL.Introduction🌳xleafis a python package for running leaf and canopy simulation models using PROSAIL. It provides python bindings to the PROSPECT-D & 4SAILFortran code.🌿 It includes sensible defaults that make it easy to get up and running quickly, and clear code documentation in the form of docstrings and type hints.📚 All credit for the fundamental modeling code and for the underlying science belongs to the original researchers.xleafis mostly a wrapper. Please cite their most recent research:@article{feret2017prospect,
  title={PROSPECT-D: Towards modeling leaf optical properties through a complete lifecycle},
  author={Feret, J-B and Gitelson, AA and Noble, SD and Jacquemoud, S},
  journal={Remote Sensing of Environment},
  volume={193},
  pages={204--215},
  year={2017},
  publisher={Elsevier}
}🧙 Shout out to my man JB.Installpip install xleaf🖥️ Depending on your OS, you may need a FORTRAN compiler. So on ubuntu you could runsudo apt install gcc. On macos you'd runbrew install gcc.Leaf and canopy simulationsimportxleafimportmatplotlib.pyplotasplt# run with off-the-shelf defaultsleaf=xleaf.simulate_leaf()# or specify detailed parameterscanopy=xleaf.simulate_canopy(chl=40,# ug/cm2car=8,# ug/cm2antho=0.5,# ug/cm2ewt=0.01,# cmlma=0.009,# g/cm2N=1.5,# unitlesslai=3.0,# m2/m2lidf=30,# degreessoil_dryness=0.75,# %solar_zenith=35,# degreessolar_azimuth=120,# degreesview_zenith=0,# degreesview_azimuth=60,# degreeshot_spot=0.01,# unitless)# and plot them togetherplt.plot(xleaf.wavelengths,leaf,label='leaf')plt.plot(xleaf.wavelengths,canopy,label='canopy')plt.legend()📄 The definitions and expected range of values for each parameter are described in thexleafdocstrings.Random forests📊xleafprovides classes for generating random parameters within the global range of expected values. These classes have a.sample()method for generating an appropriate random value based on a literature review.importxleafimportmatplotlib.pyplotasplt# generate 5 random leaf spectra from global defaultsforidxinrange(5):chl=xleaf.ChlorophyllSampler.sample()car=xleaf.CarotenoidSampler.sample()antho=xleaf.AnthocyaninSampler.sample()ewt=xleaf.EWTSampler.sample()lma=xleaf.LMASampler.sample()N=xleaf.NSampler.sample()leaf=xleaf.simulate_leaf(chl,car,antho,ewt,lma,N)plt.plot(xleaf.wavelengths,leaf,label=f"leaf{idx+1}")plt.legend()🧪 Or experiment by setting the range of values yourself:importxleafimportmatplotlib.pyplotaspltMyLAISampler=xleaf.UniformSampler(min=2,max=6)MyVZASampler=xleaf.NormalSampler(mean=0,stdv=3,min=-10,max=10)# generate 5 random canopy spectra just varying LAI/VZAforidxinrange(5):lai=MyLAISampler.sample()vza=MyVZASampler.sample()canopy=xleaf.simulate_canopy(lai=lai,view_zenith=vza)plt.plot(xleaf.wavelengths,canopy,label=f"lai:{lai:0.2f}, vza:{vza:0.2f}")plt.legend()⚡ These parameters don't always vary independently. Try to exercise caution when constructing parameter estimates to ensure biological realism.Developed byChristopher Anderson[^1] [^2][^1]:Planet Labs PBC, San Francisco[^2]:Center for Conservation Biology, Stanford University
Package: xleapp
xLEAPPDevelopment build. Please be cauious using on real cases.Framework for Logs, Events, And Plists Parser (LEAPP)This framework is a complete rewrite of the excellent tool iLEAPP.Details of iLEAPP can be found in thisblog postxLEAPP is the framework created to merge several tools together. More information about the rewrite is given in by talk (YouTube) at Black Hills Info Security's Wild West Hackin' Fest (WWHF): Deadwood in 2021.FeaturesProvides a centralized and modular frameworkProvides a simplified way to write plugins (artifacts) for each different supported platform.Parses iOS, macOS, Android, Chromebook, warranty returns, and Windows artifacts depending on the plugins installed.Other DocumentationArtifact CreationPre-requisitesThis project requires you to have Python >= 3.9PluginsHere is a list of plugins that need to be completed. Plugin package suffixed with "non-free" use licenses that may not conform with MIT licenses and are seperated out.xleapp-ios [Github] [PyPI]xleapp-ios-non-free [Github]xleapp-androidxleapp-android-non-freexleapp-chromexleapp-chrome-non-freexleapp-returnsxleapp-returns-non-freexleapp-vehiclesxleapp-vehicles-non-freexleapp-windowsxleapp-windows-non-freeInstallationWindowsPythonPS>py-3-mpipinstallxleappPS>py-3-mpipinstallxleapp-<plugin>PIPXPS>py-3-mpipinstallpipxPS>pipxinstallxleappPS>pipxinjectxleappxleapp-<plugin>LinuxPython$python3-mpipinstallxleapp
$python3-mpipinstallxleapp-<plugin>PIPX$python3-mpipinstallpipx
$pipxinstallxleapp
$pipxinjectxleappxleapp-<plugin>Installation from Github and Development InformationWindowsLinuxVS Code configuration filesThere are severalconfiguration filesthat I have been using for VS Code.Compile to executableNOTE:This may not work at this time with this alpha version.To compile to an executable so you can run this on a system without python installed.To create xleapp.exe, run:pyinstaller--onefilexleapp.specTo create xleappGUI.exe, run:pyinstaller--onefile--noconsolexleappGUI.specUsageCLI$xleapp-h
usage:xleapp[-h][-I][-R][-A][-C][-V][-oOUTPUT_FOLDER][-iINPUT_PATH][--artifacts[ARTIFACTS...]][-p][-l][--gui][--version]xLEAPP:Logs,Events,andPlistsParser.

optionalarguments:-h,--helpshowthishelpmessageandexit-Iparseiosartifacts-RparseWarrantReturns/UserGeneratedArchivesartifacts-Aparseandroidartifacts-CparseChromebookartifacts-Vparsevehicleartifacts-oOUTPUT_FOLDER,--output_folderOUTPUT_FOLDEROutputfolderpath-iINPUT_PATH,--input_pathINPUT_PATHPathtoinputfile/folder--artifact[ARTIFACT...]Filteredlistofartifactstorun.Allowed:core,<checkartifactlistindocumentation>-p,--artifact_pathsTextfilelistofartifactpaths-l,--artifact_tableTextfilewithtableofartifacts--guiRunsxLEAPPintographicalmode--versionshowprogram&#39;s version number and exitGUIThis needs work and may not work properly!$xleapp--guiHelp$xleapp.py--helpThe GUI will open in another window.AcknowledgementsThis tool is the result of a collaborative effort of many people in the DFIR community.This product includes software developed by Sarah Edwards (Station X Labs, LLC, @iamevltwin, mac4n6.com) and other contributors as part of APOLLO (Apple Pattern of Life Lazy Output'er).
Package: xleditor
xleditor打开并在原有基础上编辑 xls / xlsx 文档Useage:# pip install xlrd
# pip install xlutils

import xleditor

book = xleditor.open_workbook('old.xls')
sheet = book.get_sheet_by_index(0)

print sheet.get_value(3, 0)
sheet.write(0, 5, 'hello world')

book.save('new.xls')
Package: xler8r-lite
XLER8R PatternsXLER8R Patterns are designed to fast track most commonly used architectures, while XLER8R Lite supports provisioning
for static web hosting infrastructure only, XLER8R premium provides support for building serverless APIs, container based
applications, organizational hierarchy setup, sso setup, management account and member account setup and many more.
Reach out toinfo@cre8ivelogix.comto find out more about premium version of XLER8Rhttps://xler8r.comCreate a CDK projectTo try out XLER8R Lite by itself you can create a new CDK project by running the following commandscdkinitapp--languagetypescriptThis will create a bare bone CDK project.Adding WA-CDK Lite dependencyOpen CDK project in your favorite IDE, goto package.json file and add the WA-CDK-Lite dependency{"dependencies":{"@cre8ivelogix/xler8r-lite":"CURRENT_VERSION"}}Install DependenciesOnce package.json file is updated, you can install the dependencies by running the following commandsnpminstallUsing Well Architected CDK constructsNow that you have all the constructs available from XLER8R Lite,
use them just like any other class in typescript.For example in the following code snippet we are using WaBucket from AWS-CDK-Lite packagenewX8Website(this,"TestWebSite",{waDomainName:'example.com',});The Bucket created using WaBucket by default satisfies various security and compliance requirements,
checkout WaBucket class documentation for details.Well Architected CDK Version UpdatesThe version of all CDK packages are fixed to the same version. If an
upgrade is desired, please make sure that all CDK packages are upgraded
to the same version at the same time. Different versions of CDK mixed
in the project may cause type incompatibilities.Useful commandsnpm run buildcompile typescript to jsnpm run watchwatch for changes and compilenpm run testperform the jest unit testsnpm run build-testbuilds and runs unit testsnpm run doc-gengenerate documentationnpm run prettyruns prettier on source code
Package: xlerai
XlerAI Python API libraryThe XlerAI Python library provides convenient access to the XlerAI REST API from any Python 3.7+
application. The library wraps theopenai python library,
points it atapi.xler.ai/v1for you, and extends their library further with additional functionality.DocumentationThe REST API documentation can be foundon docs.xler.ai.InstallationpipinstallxleraiUsageThe full API of this library can be found inapi.md.importosfromxleraiimportXlerAIclient=XlerAI(# This is the default and can be omittedapi_key=os.environ.get("OPENAI_API_KEY"),)chat_completion=client.chat.completions.create(messages=[{"role":"user","content":"Say this is a test",}],model="gpt-3.5-turbo",)While you can provide anapi_keykeyword argument,
we recommend usingpython-dotenvto addOPENAI_API_KEY="My API Key"to your.envfile
so that your API Key is not stored in source control.Async usageSimply importAsyncXlerAIinstead ofXlerAIand useawaitwith each API call:importosimportasynciofromxleraiimportAsyncXlerAIclient=AsyncXlerAI(# This is the default and can be omittedapi_key=os.environ.get("OPENAI_API_KEY"),)asyncdefmain()->None:chat_completion=awaitclient.chat.completions.create(messages=[{"role":"user","content":"Say this is a test",}],model="gpt-3.5-turbo",)asyncio.run(main())Functionality between the synchronous and asynchronous clients is otherwise identical.Streaming ResponsesWe provide support for streaming responses using Server Side Events (SSE).fromxleraiimportXlerAIclient=XlerAI()stream=client.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":"Say this is a test"}],stream=True,)forchunkinstream:print(chunk.choices[0].delta.contentor"",end="")The async client uses the exact same interface.fromxleraiimportAsyncXlerAIclient=AsyncXlerAI()asyncdefmain():stream=awaitclient.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":"Say this is a test"}],stream=True,)asyncforchunkinstream:print(chunk.choices[0].delta.contentor"",end="")asyncio.run(main())RequirementsPython 3.7 or higher.
Package: xless
xlessxlessis a python script that allows display excel files directly on linux command line.[kai@admin~]$xlesstest.xlsx-s1-g-HNone-N+------+----------+---------+------+----------+----------+|index|0|1|2|3|4|+------+----------+---------+------+----------+----------+|0|Bat25|KIT|chr4|55598212|55598236||1|Bat-26|MSH2|chr2|47641560|47641586||2|MONO-27|MAP4K3|chr2|39564894|39564921||3|NR-21|SLC7A8|chr14|23652347|23652367||4|NR-24|ZNF2|chr2|95849362|95849384||5|MSI-01|NAV1|chr1|201754411|201754427||6|MSI-03|FAM161A|chr2|62063094|62063110||7|MSI-04|RGPD4|chr2|108479623|108479640||8|MSI-06|ATP6V0E1|chr5|172421761|172421775||9|MSI-07|GPR126|chr6|142691951|142691967||10|MSI-08|ELFN1|chr7|1787520|1787536||11|MSI-09|GTF2IP1|chr7|74608741|74608753||12|MSI-11|GUCY1A2|chr11|106695515|106695526||13|MSI-12|BLOC1S6|chr15|45897772|45897785||14|MSI-13|SMG1|chr16|18882660|18882674||15|MSI-14|RNF112|chr17|19314918|19314935||16|HSPH1-T17|HSPH1|chr13|31722621|31722637||17|EWSR1|EWSR1|chr22|29696469|29696484|+------+----------+---------+------+----------+----------+Installxlessrequires only thepandasandopenpyxllibrary and no other dependencies.Installxlessviapip:pip3 install xlessor simply clone from Github:gitclonehttps://github.com/ZKai0801/xless.gitcpxless/xless/usr/local/bin/Usage[kai@admin~]$xless-h
usage:xless[-h][-HHEADER][-s[SHEET[SHEET...]]][-g][-N][-FFIELD_SEPARATOR][-v]excel

Displayexceldirectlyonthescreen

positionalarguments:excelInputexcel,oruse'-'toreadfromstdin

optionalarguments:-h,--helpshowthishelpmessageandexit-HHEADER,--headerHEADERRow(0-indexed)touseforthecolumnlabelsoftheparsedDataFrame;UseNoneifthereisnoheader.-s[SHEET[SHEET...]],--sheet[SHEET[SHEET...]]0-indexedsheetposition,orsheetname.set'all'todisplayallsheets-g,--show_gridShowinggridforcells-N,--show_indexShowingindexforrows-FFIELD_SEPARATOR,--field_separatorFIELD_SEPARATORUsethisfortheinputfieldseparator.Ifthisisspecified,thentheinputfilewillbetreatedasaplain-txtfile-v,--versionshowprogram'sversionnumberandexitThe input file could be inxlsx,tsvorcsvformat. All files will be automatically parsed and output as tab-delimited that could be easily processed by other tools likeawk. Files in other format will not be parsed by the xless.
Package: xlf-merge
xlf-mergeTool to merge XLF translation files.
And it can also find dupes in XLF files.InstallationUsing PIPpipinstallxlf-mergeUsing package Debian/Archlinux packageGo tohttps://repository.salamek.cz/to see how to setup access to my public repository, then just do:debianaptupdate&&aptinstallxlf-mergearchlinuxpacman-Syxlf-mergeUsageMergingxlf-mergemerge<old_translation_file><new_translation_file><output_file>--method='source/id'Merge files by source:xlf-mergemergemessages.cs.xlf.oldmessages.xlfmessages.cs.xlf--method='source'Merge files by id:xlf-mergemergemessages.cs.xlf.oldmessages.xlfmessages.cs.xlf--method='id'Finding dupesxlf-merge dupes <file_to_check> --method='source/id/target'Finding dupes by source:xlf-merge dupes messages.cs.xlf --method='source'Finding dupes by id:xlf-merge dupes messages.cs.xlf --method='id'Finding dupes by target:xlf-merge dupes messages.cs.xlf --method='target'
Package: xlform
xlform一个仿 django form 的表单验证库InstallationpipinstallxlformExamplefromxlform.formsimportFormfromxlform.fieldsimport*classNF(Form):a=CharField(max_length=4,min_length=2,empty_value='123')b=CharField(max_length=4,min_length=2,required=False,empty_value='222')phone=PhoneField(max_length=11)email=EmailField()reg=RegexField(regex='^1[3456789]\d{9}$')uuid=UUIDField(required=False)boolean=BooleanField(required=False)integer=IntegerField(max_value=11)ft=FloatField(max_value=12)dc=DecimalField(max_digits=3,decimal_places=1,required=False)data={# 'a': '12','b':'123','phone':'16666666666','email':'16666666666@qq.com','reg':'16666666666','uuid':'998a281c-e257-11e8-b428-8c85904e5604','boolean':0,'integer':'11','ft':'11.1111','dc':11.0}nf=NF(data)ifnf.is_valid():print(nf.cleaned_data)else:print(nf.errors)
Package: xl-formulas
xlFormulasHelper class to write Excel-style formula strings to worksheets when saving from a Pandas dataframe.Default initialization assumes the worksheet will be saved with an index and header row (the first real 'data' cell would be B2) but an index and header parameter are available to ensure alignment.Pass in mathematical operators with strings, limited support currently for Excel built-in functions. If a value is not a column name in df.columns it is passed in as it is, whether that means it's an operator or builtin function.The.formula()method returns a list of strings beginning with '=' and containing the row index for the Excel formulaInstallation:pip install xl-formulasBasic usage:import pandas as pd
from xlFormulas import ExcelFormulas

df = pd.read_excel('sample_data.xlsx')

# Pass in Pandas dataframe to intialize ExcelFormulas helper
ef = ExcelFormulas(df)

# Returns a column like "=B2+C2" in df['C']
df['C'] = ef.formula('A + B')

# Makes a "=(B2 + C2)/(C2 - D2)" column in df['D']
df['D'] = ef.formula(f'{ef.paren('A + B')} / {ef.paren('B - C')}'

# Use Excel built-in functions (Still pretty buggy)
# This would get a column of "=SUM(B2,C2,5)" in df['E']
df['E'] = ef.formula(ef.builtin('SUM', 'A', 'B', 'C'))
Package: xliee-sentry-telegram
Plugin for Sentry which allows sending notification viaTelegrammessenger.Presented plugin tested with Sentry 23.8.0.dev0DISCLAIMER: Sentry API is under development andis not frozen.How will it look likeInstallationInstall this packagepipinstallxliee-sentry-telegramRestart your Sentry instance.Go to your Sentry web interface. OpenSettingspage of one of your projects.OnIntegrations(orLegacy Integrations) page, findTelegram Notifications Python3plugin and enable it.Configure plugin onConfigure pluginpage.SeeTelegram’s documentationto know how to createBotAPI Token.Done!
Package: xliff-ai-translator
XLIFF AI TranslatorXLIFF AI Translator is an AI-powered tool designed to translate XLIFF files, enhancing content accessibility across different languages. This application utilizes advanced machine learning models to offer precise and context-aware translations, ensuring seamless localization of digital content.FeaturesAutomated Translation: Efficiently translates XLIFF files from one language to another, supporting multiple languages.AI Integration: Employs cutting-edge AI translation models for accurate file translation.Customizable Workflow: Adaptable to specific translation needs and preferences.Batch Processing Capability: Allows translation of multiple text at once, optimizing productivity.User-Oriented Design: Simple and accessible, suitable for both technical and non-technical users.InstallationUsing pipTo install XLIFF AI Translator, execute the following command:pip install xliff-ai-translatorThis command installs the latest version along with its dependencies.Installing from SourceAlternatively, install from source with these commands:git clone https://github.com/sutasrof/xliff-ai-translator.git
cd xliff-ai-translator
pip install .These steps clone the repository and install the package with its required dependencies.UsageRun XLIFF AI Translator from the command line. Here's a basic example:xliff-ai-translator source.xliff destination.xliff target_language_codeReplacesource.xliffwith your original file path,destination.xlifffor the translated file path, andtarget_language_codewith the desired language code (e.g., 'en' for English, 'fr' for French, etc.).
Package: xlink
xlinkMaster与Slave心跳协议说明：
Master与Slave之间通过multiprocessing的BaseManager进行通讯
Master需要先启动，Slave后启动，Slave（在整个生命周期）启动时先调用且只调用一次bind方法与Master绑定
Slave定时（秒级）通过take方法获取Master的分法信息（schedule key）
Slave在take的时候也会（上）传自己的指标作为参数给Master接收
如果Master超时（分钟级）没有接收Slave的take请求，则判断Slave已失联，废弃该Slave，Slave同事也会在分钟级内自行关闭
Package: xlj
xlinjietool打造集成工具库总览amazon(亚马逊解析)db(数据库)headers(header头解析)amazon(亚马逊解析)各个站点日期解析站点链接组装db(数据库)esredismysqlheaders(header头解析)把web复制的headers解析成为json时间相关fromxlj.CommimportTimeprint(Time.timestamp_to_time())print(Time.timestamp_to_time(16563153))print(Time.timestamp_to_time(1656315389))print(Time.timestamp_to_time('1656315389'))print(Time.now_timestamp())print(Time.now_timestamp(10))2022-06-2715:37:492022-06-2715:35:002022-06-2715:36:292022-06-2715:36:2916563154693531656315469
Package: xlmhg
masterdevelopThis is an efficient Python/Cython implementation of the semiparametricXL-mHG testfor enrichment in ranked lists. The XL-mHG test is an extension
of the nonparametricmHG test, which was developed byDr. Zohar
Yakhiniand colleagues.Installation$pipinstallxlmhgGetting startedThexlmhgpackage provides two functions (one simple and more more advanced)
for performing XL-mHG tests. These functions are documented in theUser Manual. Here’s a quick example using the “simple” test function:importxlmhgstat,cutoff,pval=xlmhg.xlmhg_test(v,X,L)Where:vis the ranked list of 0’s and 1’s, represented by a NumPy array of
integers,XandLare the XL-mHG parameters, and the return values have
the following meanings:stat: The XL-mHG test statisticcutoff: The cutoff at which XL-mHG test statistic was attainedpval: The XL-mHG p-valueDocumentationPlease refer to theXL-mHG User Manual(hosted on ReadTheDocs).Citing XL-mHGIf you use the XL-mHG test in your research, please citeEden et al. (PLoS
Comput Biol, 2007)andWagner (PLoS One, 2015).Copyright and LicenseCopyright (c) 2015-2019 Florian WagnerRedistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.