text:
@article{sen_maximization_1997,
	title = {Maximization and the Act of Choice},
	volume = {65},
	copyright = {Copyright © 1997 The Econometric Society},
	doi = {10.2307/2171939},
	abstract = {The act of choosing can have particular relevance in maximizing behavior for at least two distinct reasons: (1) process significance (preferences may be sensitive to the choice process, including the identity of the chooser), and (2) decisional inescapability (choices may have to be made whether or not the judgemental process has been completed). The general approach of maximizing behavior can--appropriately formulated--accommodate both concerns, but the regularities of choice behavior assumed in standard models of rational choice will need significant modification. These differences have considerable relevance in studies of economic, social, and political behavior.},
	number = {4},
	urldate = {2013-12-30},
	journal = {Econometrica},
	author = {Sen, Amartya},
	year = {1997},
	pages = {745--779}
}

@book{fishburn_utility_1970,
	title = {Utility {Theory} for {Decision} {Making}},
	publisher = {Wiley, New York},
	author = {Fishburn, P. C.},
	year = {1970}
}

@article{scott_foundational_1958,
	title = {Foundational {Aspects} of theories of {Measurement}},
	volume = {23},
	journal = {Journal of Symbolic Logic},
	author = {Scott, D. and Suppes, P.},
	year = {1958},
	pages = {113--128}
}

@article{luce_semiorders_1956,
	title = {Semiorders and a theory of utility discrimination},
	volume = {24},
	journal = {Econometrica},
	author = {Luce, R.D.},
	year = {1956},
	pages = {178--191}
}

@book{roy_multicriteria_1996,
	address = {Dordrecht},
	title = {Multicriteria {Methodology} for {Decision} {Aiding}},
	publisher = {Kluwer Academic},
	author = {Roy, B.},
	year = {1996}
}

@article{deparis_when_2012,
	title = {When conflict induces the expression of incomplete preferences},
	volume = {221},
	issn = {03772217},
	doi = {10.1016/j.ejor.2012.03.041},
	number = {3},
	urldate = {2012-09-23},
	journal = {European Journal of Operational Research},
	author = {Deparis, Stéphane and Mousseau, Vincent and Öztürk, Meltem and Pallier, Christophe and Huron, Caroline},
	month = sep,
	year = {2012},
	pages = {593--602}
}

@book{bouyssou_evaluation_2006,
	address = {Boston},
	edition = {1st},
	series = {International {Series} in {Operations} {Research} and {Management} {Science}, {Volume} 86},
	title = {Evaluation and decision models with multiple criteria: {Stepping} stones for the analyst},
	isbn = {0-387-31098-3},
	url = {http://doi.org/10.1007/0-387-31099-1},
	publisher = {Springer},
	author = {Bouyssou, Denis and Marchant, Thierry and Pirlot, Marc and Tsoukiàs, Alexis and Vincke, Philippe},
	year = {2006}
}

@article{greco_electregkms:_2011,
	title = {{ELECTREGKMS}: {Robust} ordinal regression for outranking methods},
	volume = {214},
	shorttitle = {{ELECTREGKMS}},
	doi = {10.1016/j.ejor.2011.03.045},
	abstract = {We present a new method, called ELECTREGKMS, which employs robust ordinal regression to construct a set of outranking models compatible with preference information. The preference information supplied by the decision maker (DM) is composed of pairwise comparisons stating the truth or falsity of the outranking relation for some real or fictitious reference alternatives. Moreover, the DM specifies some ranges of variation of comparison thresholds on considered pseudo-criteria. Using robust ordinal regression, the method builds a set of values of concordance indices, concordance thresholds, indifference, preference, and veto thresholds, for which all specified pairwise comparisons can be restored. Such sets are called compatible outranking models. Using these models, two outranking relations are defined, necessary and possible. Whether for an ordered pair of alternatives there is necessary or possible outranking depends on the truth of outranking relation for all or at least one compatible model, respectively. Distinguishing the most certain recommendation worked out by the necessary outranking, and a possible recommendation worked out by the possible outranking, ELECTREGKMS answers questions of robustness concern. The method is intended to be used interactively with incremental specification of pairwise comparisons, possibly with decreasing confidence levels. In this way, the necessary and possible outranking relations can be, respectively, enriched or impoverished with the growth of the number of pairwise comparisons. Furthermore, the method is able to identify troublesome pieces of preference information which are responsible for incompatibility. The necessary and possible outranking relations are to be exploited as usual outranking relations to work out recommendation in choice or ranking problems. The introduced approach is illustrated by a didactic example showing how ELECTREGKMS can support real-world decision problems.},
	number = {1},
	urldate = {2011-10-09},
	journal = {European Journal of Operational Research},
	author = {Greco, Salvatore and Kadziński, Miłosz and Mousseau, Vincent and Słowiński, Roman},
	month = oct,
	year = {2011},
	keywords = {ELECTRE-like method, Multiple criteria ranking and choice, Outranking relation, Robust ordinal regression},
	pages = {118--135}
}

@book{kahneman_choices_2000,
	title = {Choices, {Values}, and {Frames}},
	isbn = {978-0-521-62749-8},
	publisher = {Cambridge University Press},
	editor = {Kahneman, Daniel and Tversky, Amos},
	year = {2000}
}

@article{greco_ordinal_2008,
	title = {Ordinal regression revisited: multiple criteria ranking using a set of additive value functions},
	volume = {191},
	doi = {10.1016/j.ejor.2007.08.013},
	abstract = {We present a new method, called UTA-GMS, for multiple criteria ranking of alternatives from set A using a set of additive value functions which result from an ordinal regression. The preference information provided by the decision maker is a set of pairwise comparisons on a subset of alternatives A{\textasciicircum}R {\textbackslash}subseteq A, called reference alternatives. The preference model built via ordinal regression is the set of all additive value functions compatible with the preference information. Using this model, one can define two relations in the set A: the necessary weak preference relation which holds for any two alternatives a,b from set A if and only if for all compatible value functions a is preferred to b, and the possible weak preference relation which holds for this pair if and only if for at least one compatible value function a is preferred to b. These relations establish a necessary and a possible ranking of alternatives from A, being, respectively, a partial preorder and a strongly complete relation. The UTA-GMS method is intended to be used interactively, with an increasing subset A{\textasciicircum}R and a progressive statement of pairwise comparisons. When no preference information is provided, the necessary weak preference relation is a weak dominance relation, and the possible weak preference relation is a complete relation. Every new pairwise comparison of reference alternatives, for which the dominance relation does not hold, is enriching the necessary relation and it is impoverishing the possible relation, so that they converge with the growth of the preference information. Distinguishing necessary and possible consequences of preference information on the complete set of actions, UTA-GMS answers questions of robustness analysis. Moreover, the method can support the decision maker when his/her preference statements cannot be represented in terms of an additive value function. The method is illustrated by an example solved using the UTA-GMS software. Some extensions of the method are also presented},
	number = {2},
	journal = {European Journal of Operational Research},
	author = {Greco, S. and Mousseau, V. and Słowiński, R.},
	month = dec,
	year = {2008},
	pages = {415--435}
}

@book{roy_aide_1993,
	address = {Paris},
	title = {Aide {Multicritère} à la {Décision} : {Méthodes} et {Cas}},
	url = {http://www.lamsade.dauphine.fr/~bouyssou/pub.html},
	publisher = {Economica},
	author = {Roy, B. and Bouyssou, D.},
	year = {1993}
}

@book{roy_methodologie_1985,
	address = {Paris},
	title = {Méthodologie multicritère d’aide à la décision},
	publisher = {Economica},
	author = {Roy, B.},
	year = {1985}
}

@article{tversky_contingent_1988,
	title = {Contingent weighting in judgment and choice},
	volume = {95},
	doi = {10.1037/0033-295X.95.3.371},
	number = {3},
	urldate = {2012-07-31},
	journal = {Psychological Review},
	author = {Tversky, Amos and Sattath, Shmuel and Slovic, Paul},
	year = {1988},
	pages = {371--384}
}

@article{roy_decision_1993,
	title = {Decision science or decision-aid science?},
	volume = {66},
	doi = {10.1016/0377-2217(93)90312-B},
	journal = {European Journal of Operational Research},
	author = {Roy, B.},
	year = {1993},
	pages = {184--203}
}

@book{lichtenstein_construction_2006,
	title = {The {Construction} of {Preference}},
	isbn = {0-521-83428-7},
	publisher = {Cambridge University Press},
	editor = {Lichtenstein, Sarah and Slovic, Paul},
	year = {2006}
}

@incollection{lichtenstein_reversals_2006,
	title = {Reversals of preferences between bids and choices gambling decisions},
	isbn = {0-521-83428-7},
	booktitle = {The {Construction} of {Preference}},
	publisher = {Cambridge University Press},
	author = {Lichtenstein, Sarah and Slovic, Paul},
	editor = {Lichtenstein, Sarah and Slovic, Paul},
	year = {2006},
	pages = {52--68}
}

@article{lichtenstein_reversals_1971,
	title = {Reversals of preference between bids and choices in gambling decisions},
	volume = {89},
	journal = {Journal of Experimental Psychology},
	author = {Lichtenstein, S. and Slovic, P.},
	year = {1971},
	pages = {46--55}
}

@phdthesis{deparis_etude_2012,
	address = {Châtenay-Malabry, France},
	title = {Etude de l’{Effet} du {Conflit} {Multicritère} sur l’{Expression} des {Préférences} : une {Approche} {Empirique}},
	language = {French},
	school = {École Centrale Paris},
	author = {Deparis, Stéphane},
	month = jun,
	year = {2012}
}

@article{tsoukias_concept_2007,
	title = {On the concept of decision aiding process: an operational perspective},
	volume = {154},
	issn = {0254-5330},
	shorttitle = {On the concept of decision aiding process},
	doi = {10.1007/s10479-007-0187-z},
	number = {1},
	urldate = {2011-03-30},
	journal = {Annals of Operations Research},
	author = {Tsoukiàs, Alexis},
	month = oct,
	year = {2007},
	pages = {3--27}
}

@article{ellsberg_risk_1961,
	title = {Risk, {Ambiguity}, and the {Savage} {Axiomes}},
	volume = {75},
	journal = {Quarterly Journal of Economics},
	author = {Ellsberg, D.},
	year = {1961},
	pages = {643--669}
}

@incollection{fischhoff_knowing_1988,
	title = {Knowing what you want: {Measuring} labile values},
	isbn = {0-521-35149-9},
	booktitle = {Decision {Making}: {Descriptive}, {Normative} and {Prescriptive} {Interactions}},
	publisher = {Cambridge University Press, Cambridge},
	author = {Fischhoff, B. and Slovic, P. and Lichtenstein, S.},
	editor = {Bell, David E. and Raiffa, Howard and Tversky, Amos},
	year = {1988},
	pages = {398--421}
}

@book{keeney_decisions_1993,
	edition = {2nd},
	title = {Decisions with {Multiple} {Objectives}: {Preferences} and {Value} {Tradeoffs}},
	isbn = {978-0-521-43883-4},
	shorttitle = {Decisions with multiple objectives},
	abstract = {Many of the complex problems faced by decision makers involve multiple conflicting objectives. This book describes how a confused decision maker, who wishes to make a reasonable and responsible choice among alternatives, can systematically probe his true feelings in order to make those critically important, vexing tradeoffs between incommensurable objectives. The theory is illustrated by many real concrete examples taken from a host of disciplinary settings. The standard approach in decision theory or decision analysis specifies a simplified single objective like monetary return to maximize. By generalizing from the single objective case to the multiple objective case, this book considerably widens the range of applicability of decision analysis.},
	language = {English},
	publisher = {Cambridge University Press},
	author = {Keeney, Ralph L. and Raiffa, Howard},
	month = aug,
	year = {1993}
}

@article{aumann_utility_1962,
	title = {Utility {Theory} without the {Completeness} {Axiom}},
	volume = {30},
	copyright = {Copyright © 1962 The Econometric Society},
	issn = {0012-9682},
	doi = {10.2307/1909888},
	abstract = {A utility theory is developed that parallels the von Neumann-Morgenstern utility theory, but makes no use of the assumption that preferences are complete (i.e., that any two alternatives are comparable).},
	number = {3},
	urldate = {2013-10-23},
	journal = {Econometrica},
	author = {Aumann, Robert J.},
	year = {1962},
	pages = {445--462}
}

@book{greco_multiple_2016,
	edition = {2nd},
	title = {Multiple {Criteria} {Decision} {Analysis} - {State} of the {Art} {Surveys}},
	url = {http://doi.org/10.1007/978-1-4939-3094-4},
	abstract = {In two volumes, this new edition presents the state of the art in Multiple Criteria Decision Analysis (MCDA). Reflecting the explosive growth in the field...},
	urldate = {2016-11-17},
	publisher = {Springer},
	editor = {Greco, Salvatore and Ehrgott, Matthias and Figueira, José Rui},
	year = {2016}
}

@article{tversky_rational_1986,
	title = {Rational {Choice} and the {Framing} of {Decisions}},
	volume = {59},
	issn = {0021-9398},
	doi = {10.1086/296365},
	abstract = {Alternative descriptions of a decision problem often give rise to different preferences, contrary to the principle of invariance that underlies the rational theory of choice. Violations of this theory are traced to the rules that govern the framing of decision and to the psychophysical principles of evaluation embodied in prospect theory. Invariance and dominance are obeyed when their application is transparent and often violated in other situations. Because these rules are normatively essential but descriptively invalid, no theory of choice can be both normatively adequate and descriptively accurate.},
	number = {4},
	urldate = {2017-06-17},
	journal = {The Journal of Business},
	author = {Tversky, Amos and Kahneman, Daniel},
	year = {1986},
	pages = {S251--S278}
}

@book{luce_utility_2000,
	address = {Mahwah, New Jersey},
	title = {Utility of {Gains} and {Losses}: {Measurement}-theoretical and {Experimental} {Approaches}},
	publisher = {Lawrence Erlbaum Publishers},
	author = {Luce, R. D},
	year = {2000}
}

@article{thaler_toward_1980,
	title = {Toward a positive theory of consumer choice},
	volume = {1},
	journal = {Journal of Economic Behavior and Organization},
	author = {Thaler, R.},
	year = {1980},
	pages = {39--60}
}

@article{tversky_causes_1990,
	title = {The causes of preference reversals},
	volume = {80},
	number = {1},
	journal = {American Economic Review},
	author = {Tversky, A. and Slovic, P. and Kahneman, D.},
	month = mar,
	year = {1990},
	pages = {204--217}
}

@article{slovic_preference_1983,
	title = {Preference reversals: {A} broader perspective.},
	volume = {73},
	journal = {American Economic Review},
	author = {Slovic, P. and Lichtentstein, S.},
	year = {1983},
	pages = {596--605}
}

@incollection{maccrimmon_utility_1979,
	title = {Utility {Theory}: {Axioms} {Versus} ‘{Paradoxes}’},
	copyright = {©1979 Springer Science+Business Media Dordrecht},
	shorttitle = {Utility {Theory}},
	url = {http://doi.org/10.1007/978-94-015-7629-1_15},
	abstract = {Few attempts have yet been made to interrelate the major axiom systems of expected utility theory such as those presented by von Neumann—Morgenstern, Marschak, Savage, and Arrow. This paper attempts to consolidate the theoretical and empirical research on these axioms by showing the correspondences among the major axioms of each system and highlighting their similarities and differences in dealing with concepts such as probability and utility. Allais, Ellsberg, and others have proposed decision problems which are designed to elicit choices which violate the utility axioms. To the extent that people accept the axioms, choices which violate the axioms can be considered ‘paradoxical’. Whether people make such choices is an empirical matter, and we therefore investigate the rate of violation in previous and new experimental studies. Our results show that although there is considerable violation of the utility axioms, the rate can fall drastically as the probability and pay-off parameters are varied away from critical levels. To provide a better understanding of the implications of the axioms and their relationship to some of the decision ‘paradoxes’, we have stated the implications as ‘rules’. Since the subjects were asked to rate the appeal of each rule as a decision norm, we can determine the relative attractiveness of each rule and can show the relationship between subjects’ actual choices and their agreement with the rules which guide choice. We found that people often prefer rules which contradict choices they have made.},
	language = {en},
	urldate = {2017-06-07},
	booktitle = {Expected {Utility} {Hypotheses} and the {Allais} {Paradox}},
	publisher = {Springer Netherlands},
	author = {MacCrimmon, Kenneth R. and Larsson, Stig},
	editor = {Allais, Maurice and Hagen, Ole},
	year = {1979},
	keywords = {Methodology of the Social Sciences},
	pages = {333--409}
}

@article{frankfurt_freedom_1971,
	title = {Freedom of the {Will} and the {Concept} of a {Person}},
	volume = {68},
	doi = {10.2307/2024717},
	number = {1},
	urldate = {2017-06-17},
	journal = {The Journal of Philosophy},
	author = {Frankfurt, Harry G.},
	month = jan,
	year = {1971},
	pages = {5--20}
}

@book{wakker_prospect_2010,
	title = {Prospect {Theory}: {For} {Risk} and {Ambiguity}},
	isbn = {978-1-139-48910-2},
	shorttitle = {Prospect {Theory}},
	abstract = {Prospect Theory: For Risk and Ambiguity, provides a comprehensive and accessible textbook treatment of the way decisions are made both when we have the statistical probabilities associated with uncertain future events (risk) and when we lack them (ambiguity). The book presents models, primarily prospect theory, that are both tractable and psychologically realistic. A method of presentation is chosen that makes the empirical meaning of each theoretical model completely transparent. Prospect theory has many applications in a wide variety of disciplines. The material in the book has been carefully organized to allow readers to select pathways through the book relevant to their own interests. With numerous exercises and worked examples, the book is ideally suited to the needs of students taking courses in decision theory in economics, mathematics, finance, psychology, management science, health, computer science, Bayesian statistics, and engineering.},
	language = {en},
	publisher = {Cambridge University Press},
	author = {Wakker, Peter P.},
	month = jul,
	year = {2010},
	keywords = {Business \& Economics / Economics / General, Business \& Economics / Economics / Microeconomics, Business \& Economics / Economics / Theory, Mathematics / Game Theory}
}

@article{birnbaum_empirical_2017,
	title = {Empirical evaluation of third-generation prospect theory},
	issn = {0040-5833, 1573-7187},
	doi = {10.1007/s11238-017-9607-y},
	abstract = {Third generation prospect theory (Schmidt et al. J Risk Uncertain 36:203–223, 2008) is a theory of choices and of judgments of highest buying and lowest selling prices of risky prospects, i.e., of willingness to pay (WTP) and willingness to accept (WTA). The gap between WTP and WTA is sometimes called the “endowment effect” and was previously called the “point of view” effect. Third generation prospect theory (TGPT) combines cumulative prospect theory for risky prospects with the theory that judged values are based on the integration of price paid or price received with the consequences of gambles. In TGPT, the discrepancy between WTP and WTA is due to loss aversion-losses have greater absolute utility than gains of the same value. TGPT was developed independently of similar developments by Birnbaum and Zimmermann (Organ Behav Hum Decis Process 74(2):145–187, 1998) and Luce (Utility of gains and losses: measurement-theoretical and experimental approaches. Erlbaum, Mahwah, 2000). This paper reviews theoretical and empirical findings, to show that TGPT fails as a descriptive model of both choices and judgments. Evidence refutes three implications of TGPT, but they are consistent with configural weight models (Birnbaum and Stegner, J Personal Soc Psychol 37:48–74, 1979) in which loss aversion is not needed to describe the results. In the configural weight models, buyers place greater weight on lower consequences, attributes or estimates of value compared to sellers, who place greater configural weight on higher aspects of an object or prospect.},
	language = {en},
	urldate = {2017-06-17},
	journal = {Theory and Decision},
	author = {Birnbaum, Michael H.},
	month = jun,
	year = {2017},
	pages = {1--17}
}

@article{dubra_expected_2004,
	title = {Expected utility theory without the completeness axiom},
	volume = {115},
	issn = {0022-0531},
	doi = {10.1016/S0022-0531(03)00166-2},
	abstract = {We study the problem of obtaining an expected utility representation for a potentially incomplete preference relation over lotteries by means of a set of von Neumann–Morgenstern utility functions. It is shown that, when the prize space is a compact metric space, a preference relation admits such a multi-utility representation provided that it satisfies the standard axioms of expected utility theory. Moreover, the representing set of utilities is unique in a well-defined sense.},
	number = {1},
	urldate = {2017-06-17},
	journal = {Journal of Economic Theory},
	author = {Dubra, Juan and Maccheroni, Fabio and Ok, Efe A.},
	month = mar,
	year = {2004},
	pages = {118--133}
}

@article{ok_utility_2002,
	title = {Utility {Representation} of an {Incomplete} {Preference} {Relation}},
	volume = {104},
	issn = {0022-0531},
	doi = {10.1006/jeth.2001.2814},
	abstract = {We consider the problem of representing a (possibly) incomplete preference relation by means of a vector-valued utility function. Continuous and semicontinuous representation results are reported in the case of preference relations that are, in a sense, not “too incomplete.” These results generalize some of the classical utility representation theorems of the theory of individual choice and paves the way towards developing a consumer theory that realistically allows individuals to exhibit some “indecisiveness” on occasion. Journal of Economic Literature Classification Number: D11.},
	number = {2},
	urldate = {2017-06-17},
	journal = {Journal of Economic Theory},
	author = {Ok, Efe A.},
	month = jun,
	year = {2002},
	pages = {429--449}
}

@article{eliaz_indifference_2006,
	title = {Indifference or indecisiveness? {Choice}-theoretic foundations of incomplete preferences},
	volume = {56},
	issn = {0899-8256},
	shorttitle = {Indifference or indecisiveness?},
	doi = {10.1016/j.geb.2005.06.007},
	abstract = {A commonly held belief in economics is that an individual's preferences that are revealed by her choices must be complete. This paper takes issue with this position by showing that one may be able to distinguish between indifference and indecisiveness of an agent upon observing her choice behavior. We relax the standard Weak Axiom of Revealed Preferences (WARP) and show that a potent theory of individual choice (with and without risk) can be founded on this weaker axiom when it is coupled with some other standard postulates. The most notable features here are that an agent is allowed to be indifferent between certain alternatives and indecisive about others. Moreover, an outside observer can identify which of these actually occur upon examining the (observable) choice behavior of the decision maker. As an application, we also show how our theory may be able to cope with the classical preference reversal phenomenon.},
	number = {1},
	urldate = {2017-06-17},
	journal = {Games and Economic Behavior},
	author = {Eliaz, Kfir and Ok, Efe A.},
	month = jul,
	year = {2006},
	pages = {61--86}
}

@article{dubra_model_2002,
	title = {A {Model} of {Procedural} {Decision} {Making} in the {Presence} of {Risk}*},
	volume = {43},
	issn = {1468-2354},
	doi = {10.1111/1468-2354.t01-1-00048},
	abstract = {We introduce a procedural model of risky choice in which an individual is endowed with a core preference relation that may be highly incomplete. She can, however, derive further rankings of alternatives from her core preferences by means of a procedure based on the independence axiom. We find that the preferences that are generated from an initial set of rankings according to this procedure can be represented by means of a set of von Neumann–Morgenstern utility functions, thereby allowing for incompleteness of preference relations. The proposed theory also yields new characterizations of the stochastic dominance orderings.},
	language = {en},
	number = {4},
	urldate = {2017-06-17},
	journal = {International Economic Review},
	author = {Dubra, Juan and Ok, Efe A.},
	month = nov,
	year = {2002},
	pages = {1053--1080}
}

@article{manzini_representation_2008,
	title = {On the {Representation} of {Incomplete} {Preferences} {Over} {Risky} {Alternatives}},
	volume = {65},
	doi = {10.1007/s11238-007-9086-7},
	abstract = {We study preferences over lotteries which do not necessarily satisfy completeness. We provide a characterization which generalizes Expected Utility theory. We show in particular that various sure-thing axioms are needed to guaranteee the representability in terms of utility intervals rather than numbers, and to provide a linear interval order representation which is very much in the spirit of Expected Utility theory.},
	language = {en},
	number = {4},
	urldate = {2017-06-17},
	journal = {Theory and Decision},
	author = {Manzini, Paola and Mariotti, Marco},
	month = dec,
	year = {2008},
	pages = {303--323}
}

@article{galaabaatar_subjective_2013,
	title = {Subjective {Expected} {Utility} {With} {Incomplete} {Preferences}},
	volume = {81},
	issn = {1468-0262},
	doi = {10.3982/ECTA9621},
	abstract = {This paper extends the subjective expected utility model of decision making under uncertainty to include incomplete beliefs and tastes. The main results are two axiomatizations of the multiprior expected multiutility representations of preference relations under uncertainty. The paper also introduces new axiomatizations of Knightian uncertainty and the expected multiutility model with complete beliefs.},
	language = {en},
	number = {1},
	urldate = {2017-06-17},
	journal = {Econometrica},
	author = {Galaabaatar, Tsogbadral and Karni, Edi},
	month = jan,
	year = {2013},
	pages = {255--284}
}

@misc{danan_are_2006,
	title = {Are preferences complete? {An} experimental measurement of indecisiveness under risk},
	url = {http://www.ericdanan.net/research},
	author = {Danan, Eric and Ziegelmeyer, Anthony},
	year = {2006},
	note = {Working paper}
}

@article{masatlioglu_rational_2005,
	title = {Rational choice with status quo bias},
	volume = {121},
	issn = {0022-0531},
	doi = {10.1016/j.jet.2004.03.007},
	abstract = {Motivated by the empirical findings concerning the importance of one's current situation on her choice behavior, the main objective of this paper is to propose a rational choice theory that allows for the presence of a status quo bias, and that incorporates the standard choice theory as a special case. We follow a revealed preference approach, and obtain two nested models of rational choice that allow phenomena like the status quo bias and the endowment effect, and that are applicable in any choice situation to which the standard (static) choice model applies.},
	number = {1},
	urldate = {2017-06-17},
	journal = {Journal of Economic Theory},
	author = {Masatlioglu, Yusufcan and Ok, Efe A.},
	month = mar,
	year = {2005},
	pages = {1--29}
}

@book{von_neumann_theory_2004,
	address = {Princeton, N.J.},
	edition = {60th anniversary},
	series = {Princeton classic editions},
	title = {Theory of games and economic behavior},
	isbn = {978-0-691-13061-3},
	publisher = {Princeton University Press},
	author = {von Neumann, John and Morgenstern, Oskar},
	year = {2004}
}

@book{von_neumann_theory_1944,
	address = {Princeton},
	edition = {1st},
	title = {Theory of games and economic behavior},
	publisher = {Princeton university press},
	author = {von Neumann, John and Morgenstern, Oskar},
	year = {1944}
}

@book{von_neumann_theory_1953,
	address = {Princeton},
	edition = {3rd},
	title = {Theory of games and economic behavior},
	publisher = {Princeton university press},
	author = {von Neumann, John and Morgenstern, Oskar},
	year = {1953}
}

@book{mcclennen_rationality_1990,
	title = {Rationality and dynamic choice: {Foundational} explorations},
	publisher = {Cambridge University Press, Cambridge},
	author = {McClennen, E.F},
	year = {1990}
}

@article{slovic_who_1974,
	title = {Who accepts {Savage}’s axiom?},
	volume = {19},
	doi = {10.1002/bs.3830190603},
	journal = {Behavioral Science},
	author = {Slovic, P. and Tversky, A.},
	year = {1974},
	pages = {368--373}
}

@book{savage_foundations_1972,
	address = {New York},
	edition = {Second revised},
	title = {The foundations of statistics},
	isbn = {978-0-486-62349-8},
	publisher = {Dover Publications},
	author = {Savage, Leonard J.},
	year = {1972}
}

@article{guala_logic_2000,
	title = {The logic of normative falsification: rationality and experiments in decision theory},
	volume = {7},
	issn = {1350-178X},
	shorttitle = {The logic of normative falsification},
	doi = {10.1080/135017800362248},
	abstract = {The paper investigates how normative considerations influenced the development of the theory of individual decision-making under risk. In the first part, the debate between Maurice Allais and the 'Neo-Bernoullians' (supporting the Expected Utility model) is reconstructed, in order to show that a controversy on the definition of rational decision and on the methodology of normative justification played a crucial role in legitimizing the Allais-paradox as genuinely refuting evidence. In the second part, it is shown how informal notions of rationality were among the tacit heuristic principles that led to the discovery of generalized models of decision put forward in the early eighties to replace the received model.},
	number = {1},
	urldate = {2017-06-17},
	journal = {Journal of Economic Methodology},
	author = {Guala, Francesco},
	month = jan,
	year = {2000},
	pages = {59--93}
}

@article{anand_are_1987,
	title = {Are the preference axioms really rational?},
	volume = {23},
	doi = {10.1007/BF00126305},
	language = {en},
	number = {2},
	urldate = {2017-06-17},
	journal = {Theory and Decision},
	author = {Anand, Paul},
	month = sep,
	year = {1987},
	pages = {189--214}
}

@incollection{mandler_difficult_2001,
	address = {Cambridge, Mass.},
	title = {A difficult choice in preference theory: rationality implies completeness or transitivity but not both},
	booktitle = {Varieties of practical reasoning},
	publisher = {MIT Press},
	author = {Mandler, Michael},
	editor = {Millgram, Elijah},
	year = {2001}
}

@incollection{fischhoff_knowing_1980,
	address = {Hillsdale, N.J.},
	title = {Knowing what you want: measuring labile values},
	booktitle = {Cognitive processes in choice and decision behavior},
	publisher = {L. Erlbaum Associates},
	author = {Fischhoff, B. and Slovic, P. and Lichtenstein, S.},
	editor = {Wallsten, Thomas S.},
	year = {1980}
}

@incollection{maccrimmon_real_1980,
	address = {Hillsdale, N.J.},
	title = {Real money lotteries: {A} study of ideal risk, context effects, and simple processes},
	booktitle = {Cognitive processes in choice and decision behavior},
	publisher = {L. Erlbaum Associates},
	author = {MacCrimmon, Kenneth R. and Stanbury, William T. and Wehrung, Donald A.},
	editor = {Wallsten, Thomas S.},
	year = {1980}
}

@book{bouyssou_evaluation_2000,
	address = {Dordrecht},
	series = {International {Series} in {Operations} {Research} \& {Management} {Science}},
	title = {Evaluation and decision models: a critical perspective},
	url = {http://doi.org/10.1007/978-1-4615-1593-7},
	number = {32},
	publisher = {Kluwer Academic},
	author = {Bouyssou, D. and Marchant, T. and Pirlot, M. and Perny, P. and Tsoukiàs, A. and Vincke, Ph.},
	year = {2000}
}

@article{tversky_intransitivity_1969,
	title = {Intransitivity of preferences},
	volume = {76},
	journal = {Psychological Review},
	author = {Tversky, A.},
	year = {1969},
	pages = {31--48}
}

@book{kahneman_judgement_1981,
	title = {Judgement under uncertainty - {Heuristics} and biases},
	publisher = {Cambridge University Press, Cambridge},
	author = {Kahneman, D. and Slovic, P. and Tversky, A.},
	year = {1981}
}

@article{tversky_framing_1981,
	title = {The framing of decisions and the psychology of choice},
	volume = {211},
	journal = {Science},
	author = {Tversky, A. and Kahneman, D.},
	year = {1981},
	pages = {453--458}
}

@article{bouyssou_consolidated_2015,
	title = {A consolidated approach to the axiomatization of outranking relations: a survey and new results},
	volume = {229},
	issn = {0254-5330, 1572-9338},
	shorttitle = {A consolidated approach to the axiomatization of outranking relations},
	doi = {10.1007/s10479-015-1803-y},
	abstract = {Outranking relations such as produced by the Electre I or II or the Tactic methods are based on a concordance and non-discordance principle that leads to declaring that an alternative is “superior” to another, if the coalition of attributes supporting this proposition is “sufficiently important” (concordance condition) and if there is no attribute that “strongly rejects” it (non-discordance condition). Such a way of comparing alternatives is rather natural and does not require a detailed analysis of tradeoffs between the various attributes. However, it is well known that it may produce binary relations that do not possess any remarkable property of transitivity or completeness. The axiomatic foundations of outranking relations have recently received attention. Within a conjoint measurement framework, characterizations of reflexive concordance–discordance relations have been obtained. These relations encompass those generated by the Electre I and II methods, which are non-strict (reflexive) relations. A different characterization has been provided for strict (asymmetric) preference relations such as produced by Tactic. In this paper we briefly review the various kinds of axiomatizations of outranking relations proposed so far in the literature. Then we analyze the relationships between reflexive and asymmetric outranking relations in a conjoint measurement framework, consolidating our previous work. Co-duality plays an essential rôle in our analysis. It allows us to understand the correspondence between the previous characterizations. Making a step further, we provide a common axiomatic characterization for both types of relations. Applying the co-duality operator to concordance–discordance relations also yields a new and interesting type of preference relation that we call concordance relation with bonus. The axiomatic characterization of such relations results directly from co-duality arguments.},
	language = {en},
	number = {1},
	urldate = {2017-06-17},
	journal = {Annals of Operations Research},
	author = {Bouyssou, Denis and Pirlot, Marc},
	month = jun,
	year = {2015},
	pages = {159--212}
}

@article{fishburn_retrospective_1989,
	title = {Retrospective on the utility theory of von {Neumann} and {Morgenstern}},
	volume = {2},
	doi = {10.1007/BF00056134},
	abstract = {This article offers an exegesis of the passages in von Neumann and Morgenstern (1944, 1947, 1953) that discuss their conception of utility. It is occasioned by two factors. First, as we approach the semicentennial of the publication of Theory of Games and Economic Behavior, its immense impact on economic thought in the intervening years encourages serious reflection on its authors' ideas. Second, misleading statements about the theory continue to appear. The article will have accomplished its purpose if it helps others appreciate the genius and spirit of the theory of utility fashioned by John von Neumann and Oskar Morgenstern.},
	language = {en},
	number = {2},
	urldate = {2017-06-27},
	journal = {Journal of Risk and Uncertainty},
	author = {Fishburn, Peter C.},
	month = jun,
	year = {1989},
	pages = {127--157}
}

repository: oliviercailloux/Survey-pref-models-pres

repo_name: oliviercailloux/Survey-pref-models-pres

extension: bib


text:
find_path(ALPHANUM_DIR alphanum.hpp ${CMAKE_SOURCE_DIR}/3rdparty/*)
mark_as_advanced(ALPHANUM_DIR)
include_directories(${ALPHANUM_DIR})

repository: songbingspring/openbr

license_type: permissive

repo_name: songbingspring/openbr

branch_name: refs/heads/master

extension: cmake


text:
require dt-utils.inc

SRC_URI[md5sum] = "9901cfc6cf6482af1c41255ea8dd418e"
SRC_URI[sha256sum] = "b1d1853418bd8dac310518b214cc4bd34728a2dd7602e194099c5d157c744617"

license: MIT

repository: gportay/meta-ptx

repo_name: gportay/meta-ptx

extension: bb


text:
package stack

import (
	"github.com/pkg/errors"

	"github.com/tendermint/tmlibs/log"

	sdk "github.com/cosmos/cosmos-sdk"
	"github.com/cosmos/cosmos-sdk/state"
)

// store nonce as it's own type so no one can even try to fake it
type nonce int64

type secureContext struct {
	app string
	ibc bool
	// this exposes the log.Logger and all other methods we don't override
	naiveContext
}

// NewContext - create a new secureContext
func NewContext(chain string, height uint64, logger log.Logger) sdk.Context {
	mock := MockContext(chain, height).(naiveContext)
	mock.Logger = logger
	return secureContext{
		naiveContext: mock,
	}
}

var _ sdk.Context = secureContext{}

// WithPermissions will panic if they try to set permission without the proper app
func (c secureContext) WithPermissions(perms ...sdk.Actor) sdk.Context {
	// the guard makes sure you only set permissions for the app you are inside
	for _, p := range perms {
		if !c.validPermission(p) {
			err := errors.Errorf("Cannot set permission for %s/%s on (app=%s, ibc=%b)",
				p.ChainID, p.App, c.app, c.ibc)
			panic(err)
		}
	}

	return secureContext{
		app:          c.app,
		ibc:          c.ibc,
		naiveContext: c.naiveContext.WithPermissions(perms...).(naiveContext),
	}
}

func (c secureContext) validPermission(p sdk.Actor) bool {
	// if app is set, then it must match
	if c.app != "" && c.app != p.App {
		return false
	}
	// if ibc, chain must be set, otherwise it must not
	return c.ibc == (p.ChainID != "")
}

// Reset should clear out all permissions,
// but carry on knowledge that this is a child
func (c secureContext) Reset() sdk.Context {
	return secureContext{
		app:          c.app,
		ibc:          c.ibc,
		naiveContext: c.naiveContext.Reset().(naiveContext),
	}
}

// IsParent ensures that this is derived from the given secureClient
func (c secureContext) IsParent(other sdk.Context) bool {
	so, ok := other.(secureContext)
	if !ok {
		return false
	}
	return c.naiveContext.IsParent(so.naiveContext)
}

// withApp is a private method that we can use to properly set the
// app controls in the middleware
func withApp(ctx sdk.Context, app string) sdk.Context {
	sc, ok := ctx.(secureContext)
	if !ok {
		return ctx
	}
	return secureContext{
		app:          app,
		ibc:          false,
		naiveContext: sc.naiveContext,
	}
}

// withIBC is a private method so we can securely allow IBC permissioning
func withIBC(ctx sdk.Context) sdk.Context {
	sc, ok := ctx.(secureContext)
	if !ok {
		return ctx
	}
	return secureContext{
		app:          "",
		ibc:          true,
		naiveContext: sc.naiveContext,
	}
}

func secureCheck(h sdk.Checker, parent sdk.Context) sdk.Checker {
	next := func(ctx sdk.Context, store state.SimpleDB, tx sdk.Tx) (res sdk.CheckResult, err error) {
		if !parent.IsParent(ctx) {
			return res, errors.New("Passing in non-child Context")
		}
		return h.CheckTx(ctx, store, tx)
	}
	return sdk.CheckerFunc(next)
}

func secureDeliver(h sdk.Deliver, parent sdk.Context) sdk.Deliver {
	next := func(ctx sdk.Context, store state.SimpleDB, tx sdk.Tx) (res sdk.DeliverResult, err error) {
		if !parent.IsParent(ctx) {
			return res, errors.New("Passing in non-child Context")
		}
		return h.DeliverTx(ctx, store, tx)
	}
	return sdk.DeliverFunc(next)
}

repository: mossid/cosmos-sdk

repo_name: mossid/cosmos-sdk

gha_language: Go

extension: go


text:
// stonewt.cpp -- Stonewt 클래스의 메서드
#include <iostream>
#include "stonewt.h"

using std::cout;

// double형 값으로 Stonewt 객체를 생성한다
Stonewt::Stonewt(double lbs)
{
	stone = int(lbs) / Lbs_per_stn;		// 정수 나눗셈
	pds_left = int(lbs) % Lbs_per_stn + lbs - int(lbs);
	pounds = lbs;
}

// int형 값과 double형 값으로 Stonewt 객체를 생성한다
Stonewt::Stonewt(int stn, double lbs)
{
	stone = stn;
	pds_left = lbs;
	pounds = stn * Lbs_per_stn + lbs;
}

Stonewt::Stonewt()
{
	stone = pounds = pds_left = 0;
}

Stonewt::~Stonewt()		// 파괴자
{
}

// 무게를 스톤과 파운드의 조합 형식으로 출력한다
void Stonewt::show_stn() const
{
	cout << stone << "스톤, " << pds_left << "파운드\n";
}

// 무게를 파운드 형식으로 출력한다
void Stonewt::show_lbs() const
{
	cout << pounds << "파운드\n";
}

repository: zeroam/TIL

repo_name: zeroam/TIL

src_encoding: UHC

extension: cpp


text:
package synergize

import (
	"fmt"
	"github.com/chr1st1ank/synergize/internal/fs"
	"io/ioutil"
	"path/filepath"
)

// ScanTree traverses a folder recursively
func ScanTree(folder string, bufferSize int) <-chan fs.FileInfo {
	files, ok := ioutil.ReadDir(folder)
	if ok != nil {
		fmt.Println("Can't read folder")
		return nil
	}
	out := make(chan fs.FileInfo, bufferSize)
	go func() {
		for _, f := range files {
			fi := fs.NewFileInfo(f, filepath.Join(folder, f.Name()))
			if f.IsDir() {
				for subfolderItem := range ScanTree(fi.Path(), bufferSize) {
					out <- subfolderItem
				}
			} else {
				out <- fi
			}
		}
		close(out)
	}()
	return out
}


text:
// Copyright 2018 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.

package memo

import (
	"container/list"
)

// ExprIter enumerates all the equivalent expressions in the Group according to
// the expression pattern.
type ExprIter struct {
	// Group and Element solely identify a Group expression.
	*Group
	*list.Element

	// matched indicates whether the current Group expression binded by the
	// iterator matches the pattern after the creation or iteration.
	matched bool

	// Operand is the node of the pattern tree. The Operand type of the Group
	// expression must be matched with it.
	Operand

	// Children is used to iterate the child expressions.
	Children []*ExprIter
}

// Next returns the next Group expression matches the pattern.
func (iter *ExprIter) Next() (found bool) {
	defer func() {
		iter.matched = found
	}()

	// Iterate child firstly.
	for i := len(iter.Children) - 1; i >= 0; i-- {
		if !iter.Children[i].Next() {
			continue
		}

		for j := i + 1; j < len(iter.Children); j++ {
			iter.Children[j].Reset()
		}
		return true
	}

	// It's root node or leaf ANY node.
	if iter.Group == nil || iter.Operand == OperandAny {
		return false
	}

	// Otherwise, iterate itself to find more matched equivalent expressions.
	for elem := iter.Element.Next(); elem != nil; elem = elem.Next() {
		expr := elem.Value.(*GroupExpr)
		exprOperand := GetOperand(expr.ExprNode)

		if !iter.Operand.Match(exprOperand) {
			// All the Equivalents which have the same Operand are continuously
			// stored in the list. Once the current equivalent can not Match
			// the Operand, the rest can not, either.
			return false
		}

		if len(iter.Children) != len(expr.Children) {
			continue
		}

		allMatched := true
		for i := range iter.Children {
			iter.Children[i].Group = expr.Children[i]
			if !iter.Children[i].Reset() {
				allMatched = false
				break
			}
		}

		if allMatched {
			iter.Element = elem
			return true
		}
	}
	return false
}

// Matched returns whether the iterator founds a Group expression matches the
// pattern.
func (iter *ExprIter) Matched() bool {
	return iter.matched
}

// Reset resets the iterator to the first matched Group expression.
func (iter *ExprIter) Reset() (findMatch bool) {
	defer func() { iter.matched = findMatch }()

	if iter.Operand == OperandAny {
		return true
	}

	for elem := iter.Group.GetFirstElem(iter.Operand); elem != nil; elem = elem.Next() {
		expr := elem.Value.(*GroupExpr)
		exprOperand := GetOperand(expr.ExprNode)
		if !iter.Operand.Match(exprOperand) {
			break
		}

		if len(expr.Children) != len(iter.Children) {
			continue
		}

		allMatched := true
		for i := range iter.Children {
			iter.Children[i].Group = expr.Children[i]
			if !iter.Children[i].Reset() {
				allMatched = false
				break
			}
		}
		if allMatched {
			iter.Element = elem
			return true
		}
	}
	return false
}

// GetExpr returns the root GroupExpr of the iterator.
func (iter *ExprIter) GetExpr() *GroupExpr {
	return iter.Element.Value.(*GroupExpr)
}

// NewExprIterFromGroupElem creates the iterator on the Group Element.
func NewExprIterFromGroupElem(elem *list.Element, p *Pattern) *ExprIter {
	expr := elem.Value.(*GroupExpr)
	if !p.Operand.Match(GetOperand(expr.ExprNode)) {
		return nil
	}
	iter := newExprIterFromGroupExpr(expr, p)
	if iter != nil {
		iter.Element = elem
	}
	return iter
}

// newExprIterFromGroupExpr creates the iterator on the Group expression.
func newExprIterFromGroupExpr(expr *GroupExpr, p *Pattern) *ExprIter {
	if len(p.Children) != len(expr.Children) {
		return nil
	}
	iter := &ExprIter{Operand: p.Operand, matched: true}
	for i := range p.Children {
		childIter := newExprIterFromGroup(expr.Children[i], p.Children[i])
		if childIter == nil {
			return nil
		}
		iter.Children = append(iter.Children, childIter)
	}
	return iter
}

// newExprIterFromGroup creates the iterator on the Group.
func newExprIterFromGroup(g *Group, p *Pattern) *ExprIter {
	if p.Operand == OperandAny {
		return &ExprIter{Group: g, Operand: OperandAny, matched: true}
	}
	for elem := g.GetFirstElem(p.Operand); elem != nil; elem = elem.Next() {
		expr := elem.Value.(*GroupExpr)
		if !p.Operand.Match(GetOperand(expr.ExprNode)) {
			return nil
		}
		iter := newExprIterFromGroupExpr(expr, p)
		if iter != nil {
			iter.Group, iter.Element = g, elem
			return iter
		}
	}
	return nil
}

repository: lucklove/tidb-wasm

repo_name: lucklove/tidb-wasm


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="9.6.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="no" active="no"/>
<layer number="17" name="Pads" color="2" fill="1" visible="no" active="no"/>
<layer number="18" name="Vias" color="2" fill="1" visible="no" active="no"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="no" active="no"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="no" active="no"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="no" active="no"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="no" active="no"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="no"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="no" active="no"/>
<layer number="25" name="tNames" color="7" fill="1" visible="no" active="no"/>
<layer number="26" name="bNames" color="7" fill="1" visible="no" active="no"/>
<layer number="27" name="tValues" color="7" fill="1" visible="no" active="no"/>
<layer number="28" name="bValues" color="7" fill="1" visible="no" active="no"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="no"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="no"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="no"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="no"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="no"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="no"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="no"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="no"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="no"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="no"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="no" active="no"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="no"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="no" active="no"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="no" active="no"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="no"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="no"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="no"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="no"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="no"/>
<layer number="48" name="Document" color="7" fill="1" visible="no" active="no"/>
<layer number="49" name="Reference" color="7" fill="1" visible="no" active="no"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="no"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="no"/>
<layer number="53" name="tGND_GNDA" color="7" fill="1" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="7" fill="1" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="88" name="SimResults" color="9" fill="1" visible="yes" active="yes"/>
<layer number="89" name="SimProbes" color="9" fill="1" visible="yes" active="yes"/>
<layer number="90" name="Modules" color="5" fill="1" visible="yes" active="yes"/>
<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="yes"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
<layer number="99" name="SpiceOrder" color="5" fill="1" visible="no" active="no"/>
<layer number="100" name="Muster" color="7" fill="1" visible="yes" active="yes"/>
<layer number="101" name="Patch_Top" color="7" fill="1" visible="yes" active="yes"/>
<layer number="102" name="Vscore" color="7" fill="1" visible="yes" active="yes"/>
<layer number="103" name="tMap" color="7" fill="1" visible="yes" active="yes"/>
<layer number="104" name="Name" color="7" fill="1" visible="yes" active="yes"/>
<layer number="105" name="tPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="106" name="bPlate" color="7" fill="1" visible="yes" active="yes"/>
<layer number="107" name="Crop" color="7" fill="1" visible="yes" active="yes"/>
<layer number="108" name="centerline" color="7" fill="1" visible="yes" active="yes"/>
<layer number="109" name="fp9" color="7" fill="1" visible="no" active="no"/>
<layer number="110" name="110" color="7" fill="1" visible="no" active="no"/>
<layer number="111" name="111" color="7" fill="1" visible="no" active="no"/>
<layer number="112" name="tSilk" color="7" fill="1" visible="no" active="no"/>
<layer number="116" name="Patch_BOT" color="7" fill="1" visible="yes" active="yes"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="no"/>
<layer number="121" name="_tsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="122" name="_bsilk" color="7" fill="1" visible="yes" active="yes"/>
<layer number="123" name="tTestmark" color="7" fill="1" visible="no" active="no"/>
<layer number="124" name="bTestmark" color="7" fill="1" visible="no" active="no"/>
<layer number="125" name="_tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="126" name="_bNames" color="7" fill="1" visible="no" active="no"/>
<layer number="127" name="_tValues" color="7" fill="1" visible="no" active="no"/>
<layer number="128" name="_bValues" color="7" fill="1" visible="no" active="no"/>
<layer number="131" name="prix" color="7" fill="1" visible="yes" active="yes"/>
<layer number="132" name="test" color="7" fill="1" visible="yes" active="yes"/>
<layer number="144" name="Drill_legend" color="7" fill="1" visible="yes" active="yes"/>
<layer number="150" name="Notes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="151" name="HeatSink" color="7" fill="1" visible="yes" active="yes"/>
<layer number="152" name="_bDocu" color="7" fill="1" visible="no" active="no"/>
<layer number="153" name="FabDoc1" color="6" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="2" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="15" visible="no" active="no"/>
<layer number="199" name="Contour" color="7" fill="1" visible="no" active="no"/>
<layer number="200" name="200bmp" color="1" fill="10" visible="yes" active="yes"/>
<layer number="201" name="201bmp" color="2" fill="10" visible="yes" active="yes"/>
<layer number="202" name="202bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="203" name="203bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="204" name="204bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="205" name="205bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="206" name="206bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="207" name="207bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="208" name="208bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="209" name="209bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="210" name="210bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="211" name="211bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="212" name="212bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="213" name="213bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="214" name="214bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="215" name="215bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="216" name="216bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="217" name="217bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="218" name="218bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="219" name="219bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="220" name="220bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="221" name="221bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="222" name="222bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="223" name="223bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="224" name="224bmp" color="7" fill="1" visible="yes" active="yes"/>
<layer number="248" name="Housing" color="7" fill="1" visible="no" active="no"/>
<layer number="249" name="Edge" color="7" fill="1" visible="no" active="no"/>
<layer number="250" name="Descript" color="7" fill="1" visible="yes" active="yes"/>
<layer number="251" name="SMDround" color="7" fill="1" visible="yes" active="yes"/>
<layer number="254" name="cooling" color="7" fill="1" visible="yes" active="yes"/>
</layers>
<schematic xreflabel="%F%N/%S.%C%R" xrefpart="/%S.%C%R">
<libraries>
<library name="controls">
<packages>
<package name="WQP-PJ301M-12_JACK">
<wire x1="-4.5" y1="6" x2="-1.5" y2="6" width="0.127" layer="21"/>
<wire x1="-1.5" y1="6" x2="1.5" y2="6" width="0.127" layer="21"/>
<wire x1="1.5" y1="6" x2="4.5" y2="6" width="0.127" layer="21"/>
<wire x1="-4.5" y1="6" x2="-4.5" y2="-4.5" width="0.127" layer="21"/>
<wire x1="-4.5" y1="-4.5" x2="0.2" y2="-4.5" width="0.127" layer="21"/>
<wire x1="0.2" y1="-4.5" x2="4.5" y2="-4.5" width="0.127" layer="21"/>
<wire x1="4.5" y1="-4.5" x2="4.5" y2="6" width="0.127" layer="21"/>
<circle x="0" y="0" radius="3.162275" width="0.127" layer="21"/>
<wire x1="-1.5" y1="6" x2="-1.5" y2="4" width="0.127" layer="21"/>
<wire x1="-1.5" y1="4" x2="1.5" y2="4" width="0.127" layer="21"/>
<wire x1="1.5" y1="4" x2="1.5" y2="6" width="0.127" layer="21"/>
<pad name="P$1" x="0" y="5" drill="1.1" thermals="no"/>
<pad name="P$2" x="0" y="-3.5" drill="1.1"/>
<pad name="P$3" x="0" y="-6.5" drill="1.1"/>
<circle x="0" y="0" radius="2.690721875" width="0.127" layer="21"/>
<wire x1="-0.2" y1="-4.6" x2="-0.2" y2="-6.7" width="0.127" layer="21"/>
<wire x1="-0.2" y1="-6.7" x2="0.2" y2="-6.7" width="0.127" layer="21"/>
<wire x1="0.2" y1="-6.7" x2="0.2" y2="-4.5" width="0.127" layer="21"/>
<rectangle x1="-2.8" y1="-2.8" x2="2.8" y2="2.8" layer="41"/>
<text x="-4.7498" y="-4.4704" size="1.27" layer="21" rot="R90">>NAME</text>
</package>
</packages>
<symbols>
<symbol name="JACK">
<wire x1="-2.54" y1="2.54" x2="0" y2="2.54" width="0.1524" layer="94"/>
<wire x1="0" y1="2.54" x2="1.524" y2="1.016" width="0.1524" layer="94"/>
<wire x1="1.524" y1="1.016" x2="2.286" y2="1.778" width="0.1524" layer="94"/>
<wire x1="-2.54" y1="0" x2="-0.762" y2="0" width="0.1524" layer="94"/>
<wire x1="-0.762" y1="0" x2="-0.762" y2="2.286" width="0.1524" layer="94"/>
<wire x1="-0.762" y1="2.286" x2="-1.016" y2="1.524" width="0.254" layer="94"/>
<wire x1="-1.016" y1="1.524" x2="-0.508" y2="1.524" width="0.254" layer="94"/>
<wire x1="-0.508" y1="1.524" x2="-0.762" y2="2.286" width="0.254" layer="94"/>
<wire x1="-2.54" y1="-2.54" x2="4.572" y2="-2.54" width="0.1524" layer="94"/>
<text x="-2.54" y="4.064" size="1.778" layer="95">>NAME</text>
<text x="-2.54" y="-6.096" size="1.778" layer="96">>VALUE</text>
<rectangle x1="2.286" y1="-0.508" x2="7.874" y2="0.508" layer="94" rot="R90"/>
<pin name="1" x="-5.08" y="-2.54" visible="pad" length="short" direction="pas"/>
<pin name="2" x="-5.08" y="2.54" visible="pad" length="short" direction="pas"/>
<pin name="3" x="-5.08" y="0" visible="pad" length="short" direction="pas"/>
</symbol>
</symbols>
<devicesets>
<deviceset name="WQP-PJ301M-12_JACK">
<gates>
<gate name="G$1" symbol="JACK" x="0" y="0"/>
</gates>
<devices>
<device name="" package="WQP-PJ301M-12_JACK">
<connects>
<connect gate="G$1" pin="1" pad="P$3"/>
<connect gate="G$1" pin="2" pad="P$1"/>
<connect gate="G$1" pin="3" pad="P$2"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
<library name="connectors">
<packages>
<package name="HEADER/MALE/01">
<pad name="1" x="0" y="0" drill="1.016" rot="R90"/>
<text x="1.905" y="-0.254" size="1.27" layer="25" ratio="10">>NAME</text>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.127" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.127" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.27" y2="-0.635" width="0.127" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.127" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.127" layer="21"/>
<wire x1="-0.635" y1="-1.27" x2="-1.27" y2="-0.635" width="0.127" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-1.27" y2="0.635" width="0.127" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-0.635" y2="1.27" width="0.127" layer="21"/>
</package>
<package name="HEADER/MALE/01/NOBORDER">
<pad name="1" x="0" y="0" drill="1.016" rot="R90"/>
<text x="1.905" y="-0.254" size="1.27" layer="25" ratio="10">>NAME</text>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="21"/>
</package>
</packages>
<symbols>
<symbol name="HEADER/MALE/01">
<wire x1="-3.81" y1="0" x2="-2.54" y2="0" width="0.6096" layer="94"/>
<pin name="3" x="2.54" y="0" visible="pad" length="middle" direction="pas" swaplevel="1" rot="R180"/>
<text x="-13.716" y="-1.016" size="1.778" layer="96">>NAME</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="HEADER/MALE/01">
<gates>
<gate name="HEADER" symbol="HEADER/MALE/01" x="0" y="0"/>
</gates>
<devices>
<device name="" package="HEADER/MALE/01">
<connects>
<connect gate="HEADER" pin="3" pad="1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
<device name="NOBORDER" package="HEADER/MALE/01/NOBORDER">
<connects>
<connect gate="HEADER" pin="3" pad="1"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</libraries>
<attributes>
</attributes>
<variantdefs>
</variantdefs>
<classes>
<class number="0" name="default" width="0" drill="0">
</class>
</classes>
<parts>
<part name="GND" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="NORM" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$1" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM1" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG1" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$2" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM2" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG2" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$3" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM3" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG3" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$4" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM4" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG4" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$5" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM5" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG5" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$6" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM6" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG6" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$7" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM7" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG7" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$8" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM8" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG8" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$9" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="NORM9" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="SIG9" library="connectors" deviceset="HEADER/MALE/01" device=""/>
<part name="U$10" library="controls" deviceset="WQP-PJ301M-12_JACK" device=""/>
<part name="GND1" library="connectors" deviceset="HEADER/MALE/01" device=""/>
</parts>
<sheets>
<sheet>
<plain>
</plain>
<instances>
<instance part="GND" gate="HEADER" x="7.62" y="111.76" smashed="yes">
<attribute name="NAME" x="-6.096" y="110.744" size="1.778" layer="96"/>
</instance>
<instance part="NORM" gate="HEADER" x="7.62" y="114.3" smashed="yes">
<attribute name="NAME" x="-6.096" y="113.284" size="1.778" layer="96"/>
</instance>
<instance part="SIG" gate="HEADER" x="7.62" y="116.84" smashed="yes">
<attribute name="NAME" x="-6.096" y="115.824" size="1.778" layer="96"/>
</instance>
<instance part="U$1" gate="G$1" x="20.32" y="114.3" smashed="yes">
<attribute name="NAME" x="17.78" y="118.364" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="108.204" size="1.778" layer="96"/>
</instance>
<instance part="NORM1" gate="HEADER" x="7.62" y="101.6" smashed="yes">
<attribute name="NAME" x="-6.096" y="100.584" size="1.778" layer="96"/>
</instance>
<instance part="SIG1" gate="HEADER" x="7.62" y="104.14" smashed="yes">
<attribute name="NAME" x="-6.096" y="103.124" size="1.778" layer="96"/>
</instance>
<instance part="U$2" gate="G$1" x="20.32" y="101.6" smashed="yes">
<attribute name="NAME" x="17.78" y="105.664" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="95.504" size="1.778" layer="96"/>
</instance>
<instance part="NORM2" gate="HEADER" x="7.62" y="88.9" smashed="yes">
<attribute name="NAME" x="-6.096" y="87.884" size="1.778" layer="96"/>
</instance>
<instance part="SIG2" gate="HEADER" x="7.62" y="91.44" smashed="yes">
<attribute name="NAME" x="-6.096" y="90.424" size="1.778" layer="96"/>
</instance>
<instance part="U$3" gate="G$1" x="20.32" y="88.9" smashed="yes">
<attribute name="NAME" x="17.78" y="92.964" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="82.804" size="1.778" layer="96"/>
</instance>
<instance part="NORM3" gate="HEADER" x="7.62" y="76.2" smashed="yes">
<attribute name="NAME" x="-6.096" y="75.184" size="1.778" layer="96"/>
</instance>
<instance part="SIG3" gate="HEADER" x="7.62" y="78.74" smashed="yes">
<attribute name="NAME" x="-6.096" y="77.724" size="1.778" layer="96"/>
</instance>
<instance part="U$4" gate="G$1" x="20.32" y="76.2" smashed="yes">
<attribute name="NAME" x="17.78" y="80.264" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="70.104" size="1.778" layer="96"/>
</instance>
<instance part="NORM4" gate="HEADER" x="7.62" y="63.5" smashed="yes">
<attribute name="NAME" x="-6.096" y="62.484" size="1.778" layer="96"/>
</instance>
<instance part="SIG4" gate="HEADER" x="7.62" y="66.04" smashed="yes">
<attribute name="NAME" x="-6.096" y="65.024" size="1.778" layer="96"/>
</instance>
<instance part="U$5" gate="G$1" x="20.32" y="63.5" smashed="yes">
<attribute name="NAME" x="17.78" y="67.564" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="57.404" size="1.778" layer="96"/>
</instance>
<instance part="NORM5" gate="HEADER" x="7.62" y="50.8" smashed="yes">
<attribute name="NAME" x="-6.096" y="49.784" size="1.778" layer="96"/>
</instance>
<instance part="SIG5" gate="HEADER" x="7.62" y="53.34" smashed="yes">
<attribute name="NAME" x="-6.096" y="52.324" size="1.778" layer="96"/>
</instance>
<instance part="U$6" gate="G$1" x="20.32" y="50.8" smashed="yes">
<attribute name="NAME" x="17.78" y="54.864" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="44.704" size="1.778" layer="96"/>
</instance>
<instance part="NORM6" gate="HEADER" x="7.62" y="38.1" smashed="yes">
<attribute name="NAME" x="-6.096" y="37.084" size="1.778" layer="96"/>
</instance>
<instance part="SIG6" gate="HEADER" x="7.62" y="40.64" smashed="yes">
<attribute name="NAME" x="-6.096" y="39.624" size="1.778" layer="96"/>
</instance>
<instance part="U$7" gate="G$1" x="20.32" y="38.1" smashed="yes">
<attribute name="NAME" x="17.78" y="42.164" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="32.004" size="1.778" layer="96"/>
</instance>
<instance part="NORM7" gate="HEADER" x="7.62" y="25.4" smashed="yes">
<attribute name="NAME" x="-6.096" y="24.384" size="1.778" layer="96"/>
</instance>
<instance part="SIG7" gate="HEADER" x="7.62" y="27.94" smashed="yes">
<attribute name="NAME" x="-6.096" y="26.924" size="1.778" layer="96"/>
</instance>
<instance part="U$8" gate="G$1" x="20.32" y="25.4" smashed="yes">
<attribute name="NAME" x="17.78" y="29.464" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="19.304" size="1.778" layer="96"/>
</instance>
<instance part="NORM8" gate="HEADER" x="7.62" y="12.7" smashed="yes">
<attribute name="NAME" x="-6.096" y="11.684" size="1.778" layer="96"/>
</instance>
<instance part="SIG8" gate="HEADER" x="7.62" y="15.24" smashed="yes">
<attribute name="NAME" x="-6.096" y="14.224" size="1.778" layer="96"/>
</instance>
<instance part="U$9" gate="G$1" x="20.32" y="12.7" smashed="yes">
<attribute name="NAME" x="17.78" y="16.764" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="6.604" size="1.778" layer="96"/>
</instance>
<instance part="NORM9" gate="HEADER" x="7.62" y="0" smashed="yes">
<attribute name="NAME" x="-6.096" y="-1.016" size="1.778" layer="96"/>
</instance>
<instance part="SIG9" gate="HEADER" x="7.62" y="2.54" smashed="yes">
<attribute name="NAME" x="-6.096" y="1.524" size="1.778" layer="96"/>
</instance>
<instance part="U$10" gate="G$1" x="20.32" y="0" smashed="yes">
<attribute name="NAME" x="17.78" y="4.064" size="1.778" layer="95"/>
<attribute name="VALUE" x="17.78" y="-6.096" size="1.778" layer="96"/>
</instance>
<instance part="GND1" gate="HEADER" x="7.62" y="109.22" smashed="yes">
<attribute name="NAME" x="-6.096" y="108.204" size="1.778" layer="96"/>
</instance>
</instances>
<busses>
</busses>
<nets>
<net name="N$1" class="0">
<segment>
<pinref part="U$1" gate="G$1" pin="2"/>
<pinref part="SIG" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="116.84" x2="15.24" y2="116.84" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$2" class="0">
<segment>
<pinref part="U$1" gate="G$1" pin="3"/>
<pinref part="NORM" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="114.3" x2="15.24" y2="114.3" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$4" class="0">
<segment>
<pinref part="U$2" gate="G$1" pin="2"/>
<pinref part="SIG1" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="104.14" x2="15.24" y2="104.14" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$5" class="0">
<segment>
<pinref part="U$2" gate="G$1" pin="3"/>
<pinref part="NORM1" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="101.6" x2="15.24" y2="101.6" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$7" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="2"/>
<pinref part="SIG2" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="91.44" x2="15.24" y2="91.44" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$8" class="0">
<segment>
<pinref part="U$3" gate="G$1" pin="3"/>
<pinref part="NORM2" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="88.9" x2="15.24" y2="88.9" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$10" class="0">
<segment>
<pinref part="U$4" gate="G$1" pin="2"/>
<pinref part="SIG3" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="78.74" x2="15.24" y2="78.74" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$11" class="0">
<segment>
<pinref part="U$4" gate="G$1" pin="3"/>
<pinref part="NORM3" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="76.2" x2="15.24" y2="76.2" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$12" class="0">
<segment>
<wire x1="12.7" y1="73.66" x2="12.7" y2="60.96" width="0.1524" layer="91"/>
<pinref part="U$5" gate="G$1" pin="1"/>
<wire x1="12.7" y1="60.96" x2="15.24" y2="60.96" width="0.1524" layer="91"/>
<pinref part="U$1" gate="G$1" pin="1"/>
<pinref part="GND" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="111.76" x2="12.7" y2="111.76" width="0.1524" layer="91"/>
<wire x1="12.7" y1="111.76" x2="15.24" y2="111.76" width="0.1524" layer="91"/>
<wire x1="12.7" y1="111.76" x2="12.7" y2="109.22" width="0.1524" layer="91"/>
<junction x="12.7" y="111.76"/>
<pinref part="U$2" gate="G$1" pin="1"/>
<wire x1="12.7" y1="109.22" x2="12.7" y2="99.06" width="0.1524" layer="91"/>
<wire x1="12.7" y1="99.06" x2="15.24" y2="99.06" width="0.1524" layer="91"/>
<wire x1="12.7" y1="99.06" x2="12.7" y2="86.36" width="0.1524" layer="91"/>
<pinref part="U$3" gate="G$1" pin="1"/>
<wire x1="12.7" y1="86.36" x2="15.24" y2="86.36" width="0.1524" layer="91"/>
<wire x1="12.7" y1="86.36" x2="12.7" y2="73.66" width="0.1524" layer="91"/>
<pinref part="U$4" gate="G$1" pin="1"/>
<wire x1="12.7" y1="73.66" x2="15.24" y2="73.66" width="0.1524" layer="91"/>
<junction x="12.7" y="86.36"/>
<junction x="12.7" y="99.06"/>
<pinref part="GND1" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="109.22" x2="12.7" y2="109.22" width="0.1524" layer="91"/>
<junction x="12.7" y="109.22"/>
<junction x="12.7" y="73.66"/>
<wire x1="12.7" y1="60.96" x2="12.7" y2="48.26" width="0.1524" layer="91"/>
<pinref part="U$6" gate="G$1" pin="1"/>
<wire x1="12.7" y1="48.26" x2="15.24" y2="48.26" width="0.1524" layer="91"/>
<junction x="12.7" y="60.96"/>
<wire x1="12.7" y1="48.26" x2="12.7" y2="35.56" width="0.1524" layer="91"/>
<pinref part="U$7" gate="G$1" pin="1"/>
<wire x1="12.7" y1="35.56" x2="15.24" y2="35.56" width="0.1524" layer="91"/>
<junction x="12.7" y="48.26"/>
<wire x1="12.7" y1="35.56" x2="12.7" y2="22.86" width="0.1524" layer="91"/>
<pinref part="U$8" gate="G$1" pin="1"/>
<wire x1="12.7" y1="22.86" x2="15.24" y2="22.86" width="0.1524" layer="91"/>
<junction x="12.7" y="35.56"/>
<wire x1="12.7" y1="22.86" x2="12.7" y2="10.16" width="0.1524" layer="91"/>
<pinref part="U$9" gate="G$1" pin="1"/>
<wire x1="12.7" y1="10.16" x2="15.24" y2="10.16" width="0.1524" layer="91"/>
<junction x="12.7" y="22.86"/>
<wire x1="12.7" y1="10.16" x2="12.7" y2="-2.54" width="0.1524" layer="91"/>
<pinref part="U$10" gate="G$1" pin="1"/>
<wire x1="12.7" y1="-2.54" x2="15.24" y2="-2.54" width="0.1524" layer="91"/>
<junction x="12.7" y="10.16"/>
</segment>
</net>
<net name="N$13" class="0">
<segment>
<pinref part="U$5" gate="G$1" pin="2"/>
<pinref part="SIG4" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="66.04" x2="15.24" y2="66.04" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$14" class="0">
<segment>
<pinref part="U$5" gate="G$1" pin="3"/>
<pinref part="NORM4" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="63.5" x2="15.24" y2="63.5" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$16" class="0">
<segment>
<pinref part="U$6" gate="G$1" pin="2"/>
<pinref part="SIG5" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="53.34" x2="15.24" y2="53.34" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$17" class="0">
<segment>
<pinref part="U$6" gate="G$1" pin="3"/>
<pinref part="NORM5" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="50.8" x2="15.24" y2="50.8" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$19" class="0">
<segment>
<pinref part="U$7" gate="G$1" pin="2"/>
<pinref part="SIG6" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="40.64" x2="15.24" y2="40.64" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$20" class="0">
<segment>
<pinref part="U$7" gate="G$1" pin="3"/>
<pinref part="NORM6" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="38.1" x2="15.24" y2="38.1" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$22" class="0">
<segment>
<pinref part="U$8" gate="G$1" pin="2"/>
<pinref part="SIG7" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="27.94" x2="15.24" y2="27.94" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$23" class="0">
<segment>
<pinref part="U$8" gate="G$1" pin="3"/>
<pinref part="NORM7" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="25.4" x2="15.24" y2="25.4" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$25" class="0">
<segment>
<pinref part="U$9" gate="G$1" pin="2"/>
<pinref part="SIG8" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="15.24" x2="15.24" y2="15.24" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$26" class="0">
<segment>
<pinref part="U$9" gate="G$1" pin="3"/>
<pinref part="NORM8" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="12.7" x2="15.24" y2="12.7" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$28" class="0">
<segment>
<pinref part="U$10" gate="G$1" pin="2"/>
<pinref part="SIG9" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="2.54" x2="15.24" y2="2.54" width="0.1524" layer="91"/>
</segment>
</net>
<net name="N$29" class="0">
<segment>
<pinref part="U$10" gate="G$1" pin="3"/>
<pinref part="NORM9" gate="HEADER" pin="3"/>
<wire x1="10.16" y1="0" x2="15.24" y2="0" width="0.1524" layer="91"/>
</segment>
</net>
</nets>
</sheet>
</sheets>
</schematic>
</drawing>
</eagle>

license: Unlicense

extension: sch


text:
// Copyright 2018 The OpenPitrix Authors. All rights reserved.
// Use of this source code is governed by a Apache license
// that can be found in the LICENSE file.

// +build integration

package category

import (
	"testing"

	"github.com/stretchr/testify/require"

	"openpitrix.io/openpitrix/test/client/category_manager"
	"openpitrix.io/openpitrix/test/models"
	"openpitrix.io/openpitrix/test/testutil"
)

var clientConfig = testutil.GetClientConfig()

func TestCategory(t *testing.T) {
	client := testutil.GetClient(clientConfig)

	// delete old category
	testCategoryName := "test_category_name"
	testCategoryName2 := "test_category_name2"
	testCategoryLocale := "{}"
	describeParams := category_manager.NewDescribeCategoriesParams()
	describeParams.SetName([]string{testCategoryName})
	describeResp, err := client.CategoryManager.DescribeCategories(describeParams, nil)
	require.NoError(t, err)
	categories := describeResp.Payload.CategorySet
	for _, category := range categories {
		deleteParams := category_manager.NewDeleteCategoriesParams()
		deleteParams.SetBody(
			&models.OpenpitrixDeleteCategoriesRequest{
				CategoryID: []string{category.CategoryID},
			})
		_, err := client.CategoryManager.DeleteCategories(deleteParams, nil)
		require.NoError(t, err)
	}
	// create category
	createParams := category_manager.NewCreateCategoryParams()
	createParams.SetBody(
		&models.OpenpitrixCreateCategoryRequest{
			Name:   testCategoryName,
			Locale: testCategoryLocale,
		})
	createResp, err := client.CategoryManager.CreateCategory(createParams, nil)
	require.NoError(t, err)

	categoryId := createResp.Payload.CategoryID
	// modify category
	modifyParams := category_manager.NewModifyCategoryParams()
	modifyParams.SetBody(
		&models.OpenpitrixModifyCategoryRequest{
			CategoryID: categoryId,
			Name:       testCategoryName2,
		})
	modifyResp, err := client.CategoryManager.ModifyCategory(modifyParams, nil)
	require.NoError(t, err)

	t.Log(modifyResp)
	// describe category
	describeParams.WithCategoryID([]string{categoryId})
	describeParams.WithName([]string{testCategoryName2})
	describeResp, err = client.CategoryManager.DescribeCategories(describeParams, nil)
	require.NoError(t, err)

	categories = describeResp.Payload.CategorySet

	require.Equal(t, 1, len(categories))
	require.Equal(t, categoryId, categories[0].CategoryID)
	require.Equal(t, testCategoryName2, categories[0].Name)

	// delete category
	deleteParams := category_manager.NewDeleteCategoriesParams()
	deleteParams.WithBody(&models.OpenpitrixDeleteCategoriesRequest{
		CategoryID: []string{categoryId},
	})
	deleteResp, err := client.CategoryManager.DeleteCategories(deleteParams, nil)
	require.NoError(t, err)

	t.Log(deleteResp)
	// describe deleted category
	describeParams.WithCategoryID([]string{categoryId})
	describeParams.WithName(nil)
	describeResp, err = client.CategoryManager.DescribeCategories(describeParams, nil)
	require.NoError(t, err)

	categories = describeResp.Payload.CategorySet
	require.Equal(t, 0, len(categories))

	t.Log("test category finish, all test is ok")
}

repository: chilianyi/openpitrix

repo_name: chilianyi/openpitrix