{{define "mit-grant-no-cond"}}
Permission is hereby granted,
((free of charge))??
to any person obtaining a copy of
__7__ //** (allow parenthetical descriptions) **//
((and associated documentation files))??
((
	the
	((Software || Materials || â€œSoftwareâ€))
||
//** Using a __1__ wildcard here causes some licenses to fail to match. **//
	Clausify
||
	EchoWBT
))
to deal in the
((Software || Materials))
((under the copyrights))??
((without restriction))??
including
((without limitation))??
the rights
((to))??
use, copy, modify, merge,
((
    publish, distribute,
    ((sublicense))??
    ((
	    and/or
	    ((sell))??
	    ((modified))??
    ))??
    copies of the
    ((Software || Materials))
))??
((
    and to permit persons to whom the
    ((Software is || Materials are))
    furnished to do so,
))??
{{end}}

{{define "mit-grant"}}
{{template "mit-grant-no-cond"}}
subject to
((the following || all))
conditions:
{{end}}

{{define "mit-conditions"}}
__1__
((
	The above
	((copyright || authorship))
	notice
	(( and
		((this permission || thismssion))
		notice
		((including the next paragraph))??
	|| as well as this permission notice
	|| this permission notice, and the below disclaimer
	|| and every other copyright notice found in this software,
		and all the attributions in every file, and this permission notice
	|| and this permission notice (or reference to this permission notice) ))
||
	This permission notice
))
((must || shall))
be included in all
copies
or
((substantial || any))??
portions of the
((Software || Materials))
(( (Unless stated in separate file). ))??
{{end}}

{{define "mit-disclaimer"}}
((DISCLAIMER))??
((2.))??

THE
((SOFTWARE || MATERIALS))
IS PROVIDED "AS IS",
WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO
THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE
AND NONINFRINGEMENT.
IN NO EVENT
((SHALL || WILL))
__6__ BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION
((OF || F))
CONTRACT,
((TORT || FART))
OR OTHERWISE,
ARISING FROM, OUT OF OR
((IN || I))
CONNECTION WITH
((TE || THE))
((SOFTWARE || MATERIALS))
OR THE USE OR OTHER DEALINGS IN
((THE
	((SOFTWARE || MATERIALS))
))??
{{end}}


//**
MIT License
https://spdx.org/licenses/MIT.json
https://opensource.org/licenses/MIT
https://fedoraproject.org/wiki/Licensing:MIT
**//
(( MIT License))??
//**Copyright**//
{{template "mit-grant"}}
{{template "mit-conditions"}}
{{template "mit-disclaimer"}}

//** from https://github.com/ku/go-change-case/blob/master/LICENSE **//
((
    The goworker Logo

    The goworker logo is a work by Rachel Falwell combining the Go mascot by Renée
    French (CC-BY) and the Ruby logo by the Ruby Visual Identity Team (CC-BY-SA).
    The logo is released under a Creative Commons Attribution-ShareAlike 4.0
    International License in keeping with the restrictions of the works from which
    it is derived.
||
    Part of the code: files kdtree.go, kdtree_test.go and kdtree_bench_test.go
    is adapted version of the code from https://godoc.org/code.google.com/p/eaburns/kdtree,
    which is licensed under New BSD License: http://opensource.org/licenses/BSD-3-Clause
||
    Portions adapted from python-unidiff:

    Copyright (c) 2012 Matias Bordese

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
||
    Copyright (C) 2015 Glider Labs, LLC

      Permission is hereby granted, free of charge, to any person obtaining a
      copy of this software and associated documentation files (the "Software"),
      to deal in the Software without restriction, including without limitation
      the rights to use, copy, modify, merge, publish, distribute, sublicense,
      and/or sell copies of the Software, and to permit persons to whom the
      Software is furnished to do so, subject to the following conditions:

      The above copyright notice and this permission notice shall be included in
      all copies or substantial portions of the Software.
))??


{{define "MIT-0.lre"}}
//**
MIT No Attribution
https://spdx.org/licenses/MIT-0.json
https://github.com/aws/mit-0
https://romanrm.net/mit-zero
https://github.com/awsdocs/aws-cloud9-user-guide/blob/master/LICENSE-SAMPLECODE
**//
{{template "mit-grant-no-cond"}}
((subject to the following conditions))??
{{template "mit-disclaimer"}}
{{end}}


{{define "MITNFA.lre"}}
//**
MIT +no-false-attribs license
https://spdx.org/licenses/MITNFA.json
https://fedoraproject.org/wiki/Licensing/MITNFA
**//
{{template "mit-grant"}}
{{template "mit-conditions"}}

Distributions of all or part of the Software intended to be used by the
recipients as they would use the unmodified Software, containing modifications
that substantially alter, remove, or disable functionality of the Software,
outside of the documented configuration mechanisms provided by the Software,
shall be modified such that the Original Author's bug reporting email addresses
and urls are either replaced with the contact information of the parties
responsible for the changes, or removed entirely.

{{template "mit-disclaimer"}}
{{end}}

{{define "MIT-NoAd.lre"}}
{{template "mit-grant"}}
{{template "mit-conditions"}}

Except as contained in this notice, the
((name || names))
__10__
shall not be used in advertising or otherwise
to promote the sale, use or other dealings in this Software
without prior written authorization
((
    ((
	    ((of || from))
	    __10__
    ))??

    {{template "mit-disclaimer"}}
||
    from ekino
))

{{end}}
