Forest Dunes Resort - Summer On The Golden Mile Up To 35% Off!
Save up to 35% off at Forest Dunes, centrally located on the Golden Mile in Myrtle Beach. Enjoy a variety of amenities including indoor and outdoor pools, lazy river, oceanfront cabana, easy access to the Seaside Exercise Trail, Buckets Bar & Grill and more! Plus choose from accommodation options ranging from 1 to 3 bedrooms with full kitchens & private balconies. For more info call 844-602-4829.


text:
Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine
D. Esterbrooks, W. S. Aronow, S. M. Mohiuddin
Twenty patients with life-threatening or symptomatic ventricular arrhythmias which were not responsive to standard oral antiarrhythmic drugs either because of lack of efficacy or because of adverse effects but which were responsive to intravenous lidocaine were subjects. The dose of tocainide was individually titrated for each patient according to efficacy and adverse effects. The mean daily tocainide dose was 1800 mg (range 1200-2400 mg). Three of 20 patients (15%) died of their underlying heart disease - one during the acute tocainide study and two during long-term tocainide treatment. Adverse effects from tocainide occurred in 11 of 20 patients (55%) and six (30%) had to discontinue tocainide because of major adverse effects - four during the acute tocainide study and two during long-term tocainide treatment. Fifteen patients on long-term tocainide were followed for a mean of 12 months (range 1-30 months). In the 13 patients able to tolerate long-term tocainide alone or in combination with other antiarrhythmic drugs, ventricular fibrillation occurred in none of four patients with prior ventricular fibrillation, short runs of ventricular tachycardia occurred in four of 11 patients (36%) with prior recurrent ventricular tachycardia, and couplets of PVCs occurred in eight of 12 patients (67%) with prior couplets. We conlcude that, in this selected group of patients at high-risk for sudden death, tocainide alone or in combination with other antiarrhythmic drugs prevented deterioration of life-threatening ventricular arrhythmias.
Current Therapeutic Research - Clinical and Experimental
Dive into the research topics of 'Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine'. Together they form a unique fingerprint.
Tocainide Medicine & Life Sciences 100%
Anti-Arrhythmia Agents Medicine & Life Sciences 67%
Lidocaine Medicine & Life Sciences 60%
Ventricular Fibrillation Medicine & Life Sciences 11%
Ventricular Tachycardia Medicine & Life Sciences 11%
Polyvinyl Chloride Medicine & Life Sciences 7%
Sudden Death Medicine & Life Sciences 5%
Esterbrooks, D., Aronow, W. S., & Mohiuddin, S. M. (1983). Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine. Current Therapeutic Research - Clinical and Experimental, 33(2), 272-278.
Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine. / Esterbrooks, D.; Aronow, W. S.; Mohiuddin, S. M.
In: Current Therapeutic Research - Clinical and Experimental, Vol. 33, No. 2, 01.01.1983, p. 272-278.
Esterbrooks, D, Aronow, WS & Mohiuddin, SM 1983, 'Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine', Current Therapeutic Research - Clinical and Experimental, vol. 33, no. 2, pp. 272-278.
Esterbrooks D, Aronow WS, Mohiuddin SM. Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine. Current Therapeutic Research - Clinical and Experimental. 1983 Jan 1;33(2):272-278.
Esterbrooks, D. ; Aronow, W. S. ; Mohiuddin, S. M. / Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine. In: Current Therapeutic Research - Clinical and Experimental. 1983 ; Vol. 33, No. 2. pp. 272-278.
@article{80516e5000fb405593618772cf7e018e,
title = "Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine",
abstract = "Twenty patients with life-threatening or symptomatic ventricular arrhythmias which were not responsive to standard oral antiarrhythmic drugs either because of lack of efficacy or because of adverse effects but which were responsive to intravenous lidocaine were subjects. The dose of tocainide was individually titrated for each patient according to efficacy and adverse effects. The mean daily tocainide dose was 1800 mg (range 1200-2400 mg). Three of 20 patients (15%) died of their underlying heart disease - one during the acute tocainide study and two during long-term tocainide treatment. Adverse effects from tocainide occurred in 11 of 20 patients (55%) and six (30%) had to discontinue tocainide because of major adverse effects - four during the acute tocainide study and two during long-term tocainide treatment. Fifteen patients on long-term tocainide were followed for a mean of 12 months (range 1-30 months). In the 13 patients able to tolerate long-term tocainide alone or in combination with other antiarrhythmic drugs, ventricular fibrillation occurred in none of four patients with prior ventricular fibrillation, short runs of ventricular tachycardia occurred in four of 11 patients (36%) with prior recurrent ventricular tachycardia, and couplets of PVCs occurred in eight of 12 patients (67%) with prior couplets. We conlcude that, in this selected group of patients at high-risk for sudden death, tocainide alone or in combination with other antiarrhythmic drugs prevented deterioration of life-threatening ventricular arrhythmias.",
author = "D. Esterbrooks and Aronow, {W. S.} and Mohiuddin, {S. M.}",
journal = "Current Therapeutic Research",
publisher = "Excerpta Medica",
T1 - Effect of tocainide on ventricular arrhythmias refractory to standard oral antiarrhythmic drugs but responsive to intravenous lidocaine
AU - Esterbrooks, D.
AU - Aronow, W. S.
AU - Mohiuddin, S. M.
N2 - Twenty patients with life-threatening or symptomatic ventricular arrhythmias which were not responsive to standard oral antiarrhythmic drugs either because of lack of efficacy or because of adverse effects but which were responsive to intravenous lidocaine were subjects. The dose of tocainide was individually titrated for each patient according to efficacy and adverse effects. The mean daily tocainide dose was 1800 mg (range 1200-2400 mg). Three of 20 patients (15%) died of their underlying heart disease - one during the acute tocainide study and two during long-term tocainide treatment. Adverse effects from tocainide occurred in 11 of 20 patients (55%) and six (30%) had to discontinue tocainide because of major adverse effects - four during the acute tocainide study and two during long-term tocainide treatment. Fifteen patients on long-term tocainide were followed for a mean of 12 months (range 1-30 months). In the 13 patients able to tolerate long-term tocainide alone or in combination with other antiarrhythmic drugs, ventricular fibrillation occurred in none of four patients with prior ventricular fibrillation, short runs of ventricular tachycardia occurred in four of 11 patients (36%) with prior recurrent ventricular tachycardia, and couplets of PVCs occurred in eight of 12 patients (67%) with prior couplets. We conlcude that, in this selected group of patients at high-risk for sudden death, tocainide alone or in combination with other antiarrhythmic drugs prevented deterioration of life-threatening ventricular arrhythmias.
AB - Twenty patients with life-threatening or symptomatic ventricular arrhythmias which were not responsive to standard oral antiarrhythmic drugs either because of lack of efficacy or because of adverse effects but which were responsive to intravenous lidocaine were subjects. The dose of tocainide was individually titrated for each patient according to efficacy and adverse effects. The mean daily tocainide dose was 1800 mg (range 1200-2400 mg). Three of 20 patients (15%) died of their underlying heart disease - one during the acute tocainide study and two during long-term tocainide treatment. Adverse effects from tocainide occurred in 11 of 20 patients (55%) and six (30%) had to discontinue tocainide because of major adverse effects - four during the acute tocainide study and two during long-term tocainide treatment. Fifteen patients on long-term tocainide were followed for a mean of 12 months (range 1-30 months). In the 13 patients able to tolerate long-term tocainide alone or in combination with other antiarrhythmic drugs, ventricular fibrillation occurred in none of four patients with prior ventricular fibrillation, short runs of ventricular tachycardia occurred in four of 11 patients (36%) with prior recurrent ventricular tachycardia, and couplets of PVCs occurred in eight of 12 patients (67%) with prior couplets. We conlcude that, in this selected group of patients at high-risk for sudden death, tocainide alone or in combination with other antiarrhythmic drugs prevented deterioration of life-threatening ventricular arrhythmias.
JO - Current Therapeutic Research
JF - Current Therapeutic Research

redpajama_set_name: RedPajamaCommonCrawl


Welcome to PPC-OnLine, the future Internet world of the Public Policy Caucuses. When complete, PPC-OnLine will be among the most modern, creative and effective advocacy websites available. The PPC website is designed as a state-of-the-art citizen empowerment tool, merging the benefits of opportunities through Internet technologies.
We invite you . . . to explore PPC-OnLine - and encourage your comments and suggestions. We request your financial support for this project. Every contribution will advance the development of PPC-OnLine and its features. This is not one of those all-or-nothing-at-all projects.
Note: If you, or your company, can donate IT webmaster talent . . . or you can personally volunteer your work . . . let us know. That's as good as money. Also, corporate contributions to PPC are legal.


text:
Dual Activation of the Drosophila Toll Pathway by Two Pattern Recognition Receptors
Vanessa Gobert1,
Marie Gottar1,
Alexey A. Matskevich1,
Sophie Rutschmann1,*,
Julien Royet1,
Marcia Belvin2,
Jules A. Hoffmann1,
Dominique Ferrandon1,†
1 Unité Propre de Recherche 9022 du CNRS, Institut de Biologie Moléculaire et Cellulaire, 15 rue René Descartes, F67084 Strasbourg Cedex, France.
2 Exelixis Inc., South San Francisco, CA 94083, USA.
↵† To whom correspondence should be addressed. E-mail: D.Ferrandon{at}ibmc.u-strasbg.fr
↵* Present address: Department of Immunology, IMM-30, The Scripps Research Institute, 10550 North Torrey Pines Road, La Jolla, CA 92037, USA.
Science 19 Dec 2003:
Vol. 302, Issue 5653, pp. 2126-2130
Vanessa Gobert
Marie Gottar
Alexey A. Matskevich
Sophie Rutschmann
Julien Royet
Marcia Belvin
Jules A. Hoffmann
Dominique Ferrandon
The Toll-dependent defense against Gram-positive bacterial infections in Drosophila is mediated through the peptidoglycan recognition protein SA (PGRP-SA). A mutation termed osiris disrupts the Gram-negative binding protein 1 (GNBP1) gene and leads to compromised survival of mutant flies after Gram-positive infections, but not after fungal or Gram-negative bacterial challenge. Our results demonstrate that GNBP1 and PGRP-SA can jointly activate the Toll pathway. The potential for a combination of distinct proteins to mediate detection of infectious nonself in the fly will refine the concept of pattern recognition in insects.
A hallmark of the host response of Drosophila to infection is the expression of antimicrobial peptide genes. Two intracellular signaling pathways regulate this expression. The Toll pathway is activated primarily by Gram-positive bacterial or fungal infections and, in particular, directs the expression of the antimicrobial peptide gene Drosomycin. In contrast, the immune deficiency (IMD) pathway responds predominantly to infections by Gram-negative bacteria and induces expression of several antibacterial peptide genes, including Diptericin (1). Fungal and Gram-positive infections lead to the proteolytic processing of a cytokine, the growth factor–like polypeptide Spätzle, which in its cleaved form binds directly to the transmembrane receptor Toll (2–8). This binding triggers an intracellular signaling cascade that culminates in the up-regulated transcription of multiple target genes, through the nuclear factor κB–related protein Dorsal-related immune factor (DIF) (2, 9–14).
How bacterial infection leads to processing of Spätzle and subsequent activation of Toll has remained unclear. In the course of a large-scale screen designed to isolate mutants of the innate immune response of Drosophila, we identified a new mutation that affected the inducibility of Drosomycin by Gram-positive bacterial infection. We named the mutation osiris (osi). Osi flies exhibited a significant decrease in the expression of the Drosomycin gene in response to several Gram-positive bacterial strains (Fig. 1A and fig. S1) (15). This was not observed in the majority of osi flies infected with fungi (Fig. 1C); Diptericin expression was normal after a challenge with Gram-negative bacteria (Fig. 1E). Although variable, data from these flies did not differ significantly from results obtained with wild-type flies (figs. S2 and S3). Survival rates of osi flies after injection of the Gram-positive bacteria Enterococcus faecalis (Fig. 1B) and Streptococcus pyogenes (16) were severely compromised and were similar to those of Dif loss-of-function mutants (6, 7). However, in contrast to these phenotypes, osi flies displayed levels of survival similar to those of wild-type flies in response to natural infection by the fungus Beauveria bassiana (Fig. 1D) and to infection by the Gram-negative bacteria Enterobacter cloacae (Fig. 1F) and Erwinia carotovora subsp. carotovora (16). Thus, the osi mutation primarily affected the defense pathway initiated against infection by Gram-positive bacteria rather than that against Gram-negative strains or fungi.
Download high-res image
GNBP1 is required for the host response against Gram-positive bacteria and not for that against Gram-negative bacteria or fungi. (A and C) Representative values for Drosomycin mRNA steady-state levels as measured by quantitative–reverse transcription–polymerase chain reaction (Q-RT-PCR) (supporting online material). The panel shows the induction of Drosomycin mRNA after an immune-challenge with (A) Micrococcus luteus (for 24 hours, at 20°C) or (C) B. bassiana (for 36 hours, at 25°C) in GNBP1osi (GNBP1[osi]), PGRP-SAseml (PGRP-SA[seml]), and wild-type (wt) control flies. The level of inducibility measured in the wild type was arbitrarily set to 100, and the measures obtained in the mutants were expressed as a percentage of this value. (B, D, and F) Survival experiments. We monitored the survival rate (expressed in percentage) after immune challenge. As expected, Dif mutant flies died more rapidly than wild-type (w) controls after (B) Gram-positive (E. faecalis, at 25°C) and (D) natural fungal (B. bassiana, at 29°C) infections, whereas (F) IMD pathway mutants kenny (key) (25) and PGRP-LCE12 (26) succumbed rapidly to E. cloacae (at 25°C) infection. The Dif and key mutations were originally generated in the cn bw genetic background, which serves as a wild-type control. (E) Diptericin mRNA levels 6 hours after an immune challenge at 20°C with Escherichia coli in GNBP1osi, PGRP-SAseml, and wild-type flies.
The osi mutation corresponds to the insertion of a modified piggyBac transposon in the coding region of the Gram-negative binding protein 1 gene (GNBP1), a potential pattern recognition receptor (17). Members of the GNBP/β-(1,3)-glucan recognition proteins (βGRPs) were originally isolated from large-sized lepidopterans (18–21) (supporting online text). The Drosophila genome encodes three canonical members of this family. GNBP1 has been reported to bind a commercial Gram-negative bacterial lipopolysaccharide, fungal β-(1,3)-glucan, but not to bind Gram-positive bacterial peptidoglycan (17). The transposon is inserted in the second exon of GNBP1 at nucleotide 511, which corresponds to amino acid 48 of the preprotein (or residue 29 of the predicted mature protein) (Fig. 2A). Transcripts of GNBP1 were barely detectable (Fig. 2B), suggesting that either the transcription of the locus or the stability of the mRNA are strongly affected by the insertion. No phenotypic difference was observed when the osi mutation was in homozygous or hemizygous conditions, indicating that this mutation is genetically null (16). The osi phenotype is due to the transposon insertion in GNBP1, because revertant lines, in which this transposon had been excised with a piggyBac transposase, were as resistant as wild-type flies to E. faecalis infection (Fig. 2C). Expression in osi flies of a pUAS-GNBP1 cDNA transgene driven by the ubiquitous heat-shock protein (hsp) 70–GAL4 construct rescued the inducibility of Drosomycin in response to Gram-positive bacterial infection, further demonstrating that the osi phenotype resulted from the insertion of the transposon (Fig. 2D). Because the osi mutant phenotype is due to the disruption of the GNBP1 gene, we designated the mutation as GNBP1osi.
The osiris insertion of a modified piggyBac transposon disrupts the GNBP1 gene. (A) Scheme of the GNBP1 region. The upper line shows the GNBP1 genomic region with exons drawn as boxes. The osiris (e03371) transposon insertion is shown on top. The lower part of the panel shows the schematic structure of the GNBP1 protein. The grey box indicates the signal sequence for amino acids 1 to 17; bold stripes show the β-(1,3)-glucan binding domain [amino acids 18 to 111; PFAM-B domain 4799 (27)]; thin stripes show the domain of homology to bacterial β-glucanases (amino acids 239 to 447, PFAM-A domain glyco-hydro16); the black box indicates the 10 C-terminal amino acids required for GPI anchoring (17). The asterisk shows the position where the open reading frame is disrupted by the insertion. (B) Steady-state GNBP1 mRNA levels measured by Q-RT-PCR in wild-type and GNBP1osi mutant flies, either unchallenged, 24 hours after a challenge with M. luteus, or 48 hours after a challenge with B. bassiana. (C) GNBP1osi transposon excision (exc) strains were challenged with E. faecalis; w, wild-type controls. (D) Rescue of the GNBP1osi phenotype by a pUAS-GNBP1 transgene after an immune challenge with M. luteus. Drosomycin and GNBP1 mRNA levels were quantified by Q-RT-PCR. Flies of the indicated genotype were submitted to a heat-shock procedure (HS). Nonheat-shocked flies (NHS) were used as a control. However, the lower yet significant expression of GNBP1 transcripts, due to a leaky expression of the hsp promoter, was sufficient for the rescue of Drosomycin inducibility in the (b) control flies. The GNBP1 steady-state transcript levels measured after heat-shock [in the (c) flies] were arbitrarily set to 100%; in this case, wild-type levels reached about 1% of this value.
Fungal-dependent Toll activation requires the persephone (psh) gene, which encodes a serine protease and whose overexpression leads to challenge-independent Toll activation and Drosomycin gene expression (5). This effect was not abolished when psh was overexpressed in a GNBP1osi genetic background (Fig. 3A), indicating that psh-dependent activation of Toll does not require GNBP1.
GNBP1 function is required upstream of Toll in the blood compartment. (A) GNBP1 is not epistatic to psh. We overexpressed the PSH protease using the GAL4/UAS system with a yolk protein 1 promoter that drives the expression of GAL4 specifically in the female fat body. Challenge-independent Drosomycin expression was detected in females, whether (a) heterozygous or (c) homozygous for the GNBP1osi mutation. No expression was detected in (b) or (d) males. Challenged wild-type flies are shown. Similar results were obtained with an hsp-GAL4 driver. M. l., M. luteus; Unc., unchallenged. (B) Hemolymph transfer experiments. The transfer of wild-type hemolymph into a GNBP1osi recipient (f) restores the M. luteus inducibility of Drosomycin as determined by Q-RT-PCR. In contrast, transfer of GNBP1osi hemolymph into a GNBP1osi recipient does not significantly rescue the GNBP1osi phenotype (g). Results obtained with PGRP-SAseml (i) were similar to those previously reported (6). Drosomycin transcript levels in challenged GNBP1osi (e) and PGRP-SAseml (h) mutants are shown for reference. Hemolymph collected from PGRP-SAseml flies could rescue the GNBP1osi mutant phenotype; the converse experiment, transfer of GNBP1osi hemolymph into PGRP-SAseml recipients, yielded the same result (16).
GNBP1 encodes a 55-kD protein that has been shown in cell-culture studies to exist as both secreted and glycosylphosphatidylinositol (GPI)–linked form in the cytoplasmic membrane (17). Transfer of hemolymph from wild-type flies to GNBP1osi mutants restored the inducibility of Drosomycin by Gram-positive bacterial challenge (Fig. 3B), indicating that GNBP1-dependent activity within the hemolymph was sufficient to rescue the GNBP1osi mutant phenotype. The membrane-tethered form of GNBP1 appears, therefore, to be dispensable in the induction of Drosomycin.
The phenotypes described here for the GNBP1osi mutation are very similar to those observed with the semmelweis (seml) loss-of-function mutants of a gene that encodes a member of an unrelated protein family, peptidoglycan recognition protein PGRP-SA (Figs. 1, 2C, and 3B) (6). We generated PGRP-SAseml;GNBP1osi double-mutant flies and found that they were not more sensitive than the single mutants in survival assays with Gram-positive bacteria. Similarly, the reduction of the levels of induced Drosomycin by various Gram-positive bacterial strains was equivalent in the double and single mutants (Fig. 4, A to C). These data indicate that GNBP1 and PGRP-SA are involved in a common process. Indeed, the concomitant overexpression of both genes (but not of the single genes) did lead to a significant, challenge-independent, expression of Drosomycin (Fig. 4D). As expected, this expression required the spätzle (spz) gene product (Fig. 4E), demonstrating that both GNBP1 and PGRP-SA act upstream of spz. These data provide genetic evidence to suggest that GNBP1 and PGRP-SA may interact to trigger the activation of the Toll pathway. To provide biochemical support for this interaction, we separated protein complexes from fly extracts by electrophoresis under native conditions and performed Western blot analysis for PGRP-SA and GNBP1. In extracts derived from wild-type flies, GNBP1 (17) and PGRP-SA antibodies recognized a band at exactly the same position (Fig. 4F). Because both proteins have markedly different sizes and amino acid compositions, this suggested comigration of both proteins as part of a complex. In flies mutant for GNBP1 or PGRP-SA, this band was either absent (GNBP1osi) or strongly reduced (PGRP-SAseml). Importantly, seml represents a point mutation that is assumed to affect the folding of the protein (22). Thus, both GNBP1 and PGRP-SA are required for the formation of the detected band. Finally, concomitant overexpression of the GNBP1 and PGRP-SA genes resulted in the appearance of an additional intense band detected by both antibodies, which may have corresponded to an activated complex.
The interaction of GNBP1 and PGRP-SA leads to Toll pathway activation. (A) Survival of PGRP-SAseml;GNBP1osi mutant flies after E. faecalis infection. The survival assay was performed as in Fig. 1. w, wild-type; DD1, wild-type reference stock (15). (B and C) Expression of Drosomycin in PGRP-SAseml;GNBP1osi double mutants 24 hours after (B) M. luteus or (C) E. faecalis challenge. (D) The concomitant overexpression of PGRP-SA and GNBP1 leads to the challenge-independent expression of Drosomycin. Drosomycin steady-state transcript levels were measured as in (B) and (C). The value measured in wild-type samples (wt M. l.) 24 hours after an immune challenge was arbitrarily set to 100%. The GAL4/UAS system was used to overexpress GNBP1 and/or PGRP-SA with an hsp-GAL4 driver. The third-chromosome balancer MKRS allows discrimination between UAS-PGRP-SA and the wild-type third chromosome. Because we used a UAS-GNBP1 transgene inserted on the X chromosome, flies that did not carry this transgene were males (sets a and b), and flies that overexpressed GNBP1 were females (sets c and d). Significant Drosomycin expression was also observed when the ubiquitous daughterless-GAL4 driver was used. (E) Epistatic analysis between the GNBP1–PGRP-SA and spätzle genes. GNBP1 and PGRP-SA were overexpressed in a spätzle (spz/spz) homozygous mutant background (set e). TM6b (set f) is another balancer of the third chromosome and carries a wild-type copy of the spz gene. (F) Western blot of whole fly extracts that were separated by gel electrophoresis under native conditions. The blot was first incubated with an antiserum raised against a PGRP-SA peptide (right), stripped, and then reprobed with an antibody against GNBP1 (left). The specific band recognized by both antibodies (open triangles) is absent in GNBP1osi and PGRP-SAseml mutants (6). The lower band observed with the antibody to GNBP1 (arrow) is not specific, because it is observed in the GNBP1osi null mutant. (G) Scheme of Toll pathway activation by Gram-positive bacteria and fungi. NEC, necrotic serine protease inhibitor; TL, Toll receptor.
Our results demonstrate that GNBP1 is required specifically for the Toll-dependent response to Gram-positive bacterial infections, but not for responses to fungi or Gram-negative bacteria (supporting online text) (Fig. 4G). Taken in conjunction with data on the PGRP-SAseml mutation (6), our results are compatible with a model in which the GNBP1 and PGRP-SA proteins form a complex that activates a proteolytic cascade culminating in the cleavage of Spätzle and the activation of Toll. The x-ray structure of Drosophila PGRP-LB reveals the existence of a conserved surface at the back of PGRP proteins that could serve for protein-protein interactions (22). We assume that the complex would be activated on detection of microbial elicitors during infection. In this context, it may be relevant that a GNBP/βGRP from the coleopteran Tenebrio molitor has been reported to be associated with a serine protease (23). Together, our data imply that Toll-dependent activation by Gram-positive bacteria requires the cooperation of at least two distinct pattern recognition proteins, although the precise mechanisms of recognition and activation of these proteins during infection remain to be established. Recognition of infection in insects appears more complex than the initial model of microbial pattern recognition has postulated (24).
Supporting Online Material
www.sciencemag.org/cgi/content/full/302/5653/2126/DC1
SOM Text
Figs. S1 to S3
J. A. Hoffmann, J. M. Reichhart, Nature Immunol. 3, 121 (2002).
B. Lemaitre, E. Nicolas, L. Michaut, J. M. Reichhart, J. A. Hoffmann, Cell 86, 973 (1996).
B. Lemaitre, J. M. Reichhart, J. A. Hoffmann, Proc. Natl. Acad. Sci. U.S.A. 94, 14614 (1997).
E. A. Levashina et al., Science 285, 1917 (1999).
P. Ligoxygakis, N. Pelte, J. A. Hoffmann, J. M. Reichhart, Science 297, 114 (2002).
T. Michel, J. Reichhart, J. A. Hoffmann, J. Royet, Nature 414, 756 (2001).
S. Rutschmann, A. Kilinc, D. Ferrandon, J. Immunol. 168, 1542 (2002).
A. N. Weber et al., Nature Immunol. 4, 794 (2003).
X. Meng, B. S. Khanuja, Y. T. Ip, Genes Dev. 13, 792 (1999).
S. Rutschmann et al., Immunity 12, 569 (2000).
S. Tauszig-Delamasure, H. Bilak, M. Capovilla, J. A. Hoffmann, J. L. Imler, Nature Immunol. 3, 91 (2002).
P. Irving et al., Proc. Natl. Acad. Sci. U.S.A. 98, 15119 (2001).
E. De Gregorio, P. T. Spellman, G. M. Rubin, B. Lemaitre, Proc. Natl. Acad. Sci. U.S.A. 98, 12590 (2001).
E. De Gregorio, P. T. Spellman, P. Tzou, G. M. Rubin, B. Lemaitre, EMBO J. 21, 2568 (2002).
Materials and methods are available as supporting material on Science Online.
V. Gobert, M. Gottar, D. Ferrandon, unpublished data.
Y. S. Kim et al., J. Biol. Chem. 275, 32721 (2000).
H. Yoshida, M. Ochiai, M. Ashida, Biochem. Biophys. Res. Commun. 141, 1177 (1986).
W. J. Lee, J. D. Lee, V. V. Kravchenko, R. J. Ulevitch, P. T. Brey, Proc. Natl. Acad. Sci. U.S.A. 93, 7888 (1996).
C. Ma, M. R. Kanost, J. Biol. Chem. 275, 7505 (2000).
M. Ochiai, M. Ashida, J. Biol. Chem. 275, 4995 (2000).
M. S. Kim, M. Byun, B. H. Oh, Nature Immunol. 4, 787 (2003).
R. Zhang et al., J. Biol. Chem. 278, 42072 (2003).
C. A. Janeway, Cold Spring Harbor Symp. Quant. Biol. 54, 1 (1989).
S. Rutschmann et al., Nature Immunol. 1, 342 (2000).
M. Gottar et al., Nature 416, 640 (2002).
A. Bateman et al., Nucleic Acids Res. 30, 276 (2002).
We thank our colleagues in the laboratory for critical comments on the manuscript, W.-J. Lee for the kind gift of GNBP1 reagents, J.-M. Ubeda for suggesting the double-overexpression experiment, and M.-C. Lacombe for expert technical help. Supported by CNRS and the Ministère de l'Education Nationale de la Recherche et de la Technologie and by NIH. Requests for the GNBP1 osi (e03371) stock should be addressed to Exelixis.
You are going to email the following Dual Activation of the Drosophila Toll Pathway by Two Pattern Recognition Receptors
By Vanessa Gobert, Marie Gottar, Alexey A. Matskevich, Sophie Rutschmann, Julien Royet, Marcia Belvin, Jules A. Hoffmann, Dominique Ferrandon
Science 19 Dec 2003 : 2126-2130


On Wednesday, our Health Management practice launched a foundation wellness pilot programme for Capita Employee Benefits employees in London with a view to rolling it out to other locations.
With a focus on empowering people to make positive choice rather than prescribing a defined health programme, our foundation wellness programme provides employees with a range of the latest innovations in digital healthcare designed to engage, educate and promote change.
So many aspects of our day-to-day lives have now "gone digital" and expectations of what is possible continually change. Slowly but surely, on demand services are becoming the norm rather than the exception; TV, dating, social media, food etc have all embraced this change, even the luddites amongst us are starting to see areas where digital can improve our lives. In the last few years we've seen this expectation transcend to the delivery of healthcare.
According to a McKinsey study in 2014, 75% of people expect to use digital healthcare services in the future. The wide scale adoption of mobile technology seems like a natural fit for rolling out health and wellness initiatives given how much of our lives are already governed by the tech we walk around with. The digital healthcare market has been estimated to be worth £23 billion globally in 2014 and this is expected to almost double in value to £43 billion by 2018.
Companies are better able to take advantage of big data technologies to provide personalised healthcare services on demand and the appetite amongst employers for digital health is beginning to surge. With the market growing at such a phenomenal rate, choice can be problematic, so how can you better navigate this increasingly busy landscape and which solution is going to be best for you?
Providers including Babylon, Bupa, New Leaf Health and Zesty all supported our foundation wellness programme with onsite and app based behaviour change, testing and gamification programmes. Practicing what we preach, this programme gives our employees the opportunity to experience first-hand the wellness tech being implemented for our clients. And over 60% of our population took advantage of the services – beginning their personal journeys.
So, what can the aforementioned health tech providers do for your employees?
The Babylon Health app puts a "doctor in your pocket". It addresses the problem of waiting times by leveraging mobile technology through a personalised health service giving users the opportunity to consult with GMC registered doctors in a matter of minutes via their mobile device.
Bupa Boost is a ground breaking corporate wellness tool from Bupa designed to gamify corporate wellness programmes through goal setting, performance tracking and peer support and motivation.
New Leaf Health are a leading provider of onsite health services offering employees a DIY health check; giving them the capability to 'Know their Numbers', referring to key markers of blood pressure, body height and weight, body mass index (BMI) and body composition. By knowing your numbers this allows employees to keep these numbers within a healthy range, which can greatly improve heart and general health, and reduce the risk of the main causes of disease and ill health.
Zesty take the hassle out of finding and booking healthcare appointments. Its app, which is free to download, enables you to find and book an appointment in 60 seconds.
If you would like more information on digital healthcare design, contact Alistair Dornan, Head of Health Management.


Weekend: Saturday evening vigil – 5:00 p.m.
Sunday English: 8:00 & 10:30 a.m.
Thursday & Friday – 8:30 a.m.
Baptism seminars are required for first-time parents. Call the parish office to register for a Baptismal Seminar. Seminars in English and Spanish begin at 2:00 p.m.
The Catholic parent(s) must be active and practicing the faith. Godparent(s) – only one required – must be active, practicing Catholic(s) who are at least 18 years of age and have received the sacrament of Confirmation.
Saturday from 4:00p.m. to 4:45 p.m., or by appointment.
Confirmation Preparation is a two-year program that begins when a student enters the 9th grade. Click on the above link for the class schedule. Contact the Religious Education Office for more information.
Marriage preparation is required and must begin a minimum of 6 months before the desired date of marriage. Please call to schedule an appointment with the Pastor.
In case of serious illness or hospitalization, contact Fr. Jacobi to arrange for the Sacrament of the Sick. Notify him also if someone in your family or neighborhood is unable to attend Mass. Anointing of the Sick is also offered on the last Wednesday of the month—at the 6:15p.m. Mass.
Anyone interested in either priesthood or deaconate is encouraged to talk with the Pastor.


Get to know our friendly neighborhood in-house team of producers and staff.
Our in-house staff in our downtown Lexington, KY office are passionate folks; passionate about your story and their craft. It's palpable with over 30 years of collective experience and numerous awards won (including Emmys, Tellys and ADDY awards). Get to know our team and see why we're the right storytellers for your project.


text:
In the NewsReutersMarch 25, 2020
Dangerous heat and humidity could affect 1.2 billion people by the turn of the century if global warming goes unchecked, scientists say
The number of people worldwide struggling with extreme heat and humidity by the end of the century could be more than four times as many as today if planet-warming emissions continue to rise, hiking economic losses and health costs, scientists have warned. Spending on mental health, in particular, could soar as more families have trouble sleeping and working, and heat aggravates existing mental health problems, one of two new studies found. "Heat and humidity extremes have real impacts on health and productivity," said Bob Kopp, co-director of the Climate Impact Lab, director of the Institute of Earth, Ocean & Atmospheric Sciences at Rutgers University, and an author of one of the studies. "What our work shows is that there is a real increase in the frequency of these rare heat and humidity extremes, and limiting global warming is the best measure we can take to prevent them," the climate scientist told the Thomson Reuters Foundation.
By Laurie Goering, Reuters


Apply in the evening after cleansing and before your night serum and cream.
Apply a thick layer of Masque Crème Biofixine all over the face, neck and décolleté. Leave for 15 minutes, moisten the mask and rinse off with cold water and/or washcloth.
Masque Crème Biofixine will smooth out, plump and soften fine lines.
The skin is left taught, plump and rejuvenated.
Masque Crème Biofixine is a smoothing and softening antioxidant treatment cream to fix, tighten and relax fine lines and wrinkles. This creamy mask cream is formulated to improve elasticity and has a re-plumping effect. The grape seed oil and green anise extract will help fight free radicals whilst the white clay will purify. Biologique Recherche's oxygenating complex will bring life back to the skin.


text:
Валдштейнський палац () — палац Альбрехта Валленштейна в столиці Чехії місті Празі.

Валдштейнський палац розташований в празькому історичному районі — на Малій Страні, і є найбільшим за розмірами палацом доби ранішнього бароко в Чехії.

З 1992 року — місце засідань Сенату Чехії.

Історія

Замовник

Походив з дрібної шляхти, отримав університетську освіту в Болоньї і Павії (Італія). Зробив блискучу військову кар'єру, став генералісімусом. Розбагатів завдяки вигідному шлюбу, видаткам від імператора, воєнним грабежам, широким конфіскаціям майна чеських аристократів і загарбанню їх собі. Пихатий парвеню, Вальдштейн плекав надії відокремлення від Австрійської імперії і панування в Богемії(тодішній Чехії). Аби додати собі значущості і розпочав будівництво в Празі величезного палацу небачених форм, розкошів і вигадливості. За намірами вельможі, його палац і сад мали перебільшити розміри і велич королівського палацу і саду в Празі.

Бригада архітекторів

Перебування в Італії, що пережила перший будівельний бум в добу відродження, а потім новий - в добу ранішнього бароко, сформувало смаки замовника. Він забажав мати розкішну оселю на зразок італійських палаців і обов'язково грандіозних розмірів. Авантюриста Вальдштейна не зупиняли значні матеріальні витрати, повільні темпи робіт і відсутність добрих майстрів в самій Празі.

Втіленню широких намірів Вальдштейна сприяли вдалі обставини. Під час воєнних дій частково постраждали оселі під Празьким Градом ( фортецею, замком з собором). Вальдштейн швидко купує 26 оселі з садами і руйнує їх. Для будівництва власної резиденції купує власний цегельний завод. Ділянка вийшла велика, але несиметрична.

На працю в Прагу запрошує цілу бригаду італійських архітекторів, що роблять обміри і створюють проект розкішної оселі. Над проектом і його втіленням працювали —
 архітектори Андреа Спецца (1580-1628)
 Джованні П'єроні (1586-1654)
 садівник Ніколо Себрегонді (1585-1652)
 художник Баччо Б'янко
 скульптор Адріан де Вріс (1545-1626)

Перехідна доба

Бажання прискорити темп робіт спонукало власника набрати інтернаціональну команду - італійців, фламандців тощо. Різні за віком, школою і мистецькими настановами, вони дещо напомацки реалізували забаганку могутнього вельможі, багатства якого дозволяли утримувати навіть свою невелику армію.

У 1624-1630 рр. на видовженій ділянці розпланували декілька палацових споруд, сад бароко, басейн, манеж, службові приміщення. Італійським архітекторам і на батьківщині доводилося працювати з несиметричними ділянками. Тому вони з честю вийшли з ускладнень і перетворили невигідний шмат землі на розкішну резиденцію, вдало опрацювавши її недоліки і підсиливши переваги. Вальдштейна не турбувала суміш стилів перехідної епохи. Адже вийшов розкішний ансамбль з елементами пізнього ренесансу, маньєризму ( скульптура де Вріса ) і ранішнього бароко. Парадні зали палацу прикрасили фрески, ліплення, плафони, килимові шпалери. Палац мав власну каплицю Св. Вацлава, що дорівнювала висоті самого палацу.

Подальша доля
Пихатий вельможа насолоджувався резиденцією неповні чотири роки. Розпочав таємні переговори зі шведами на предмет переходу на їх бік в обмін на корону короля самостійної Богемії. Планам авантюриста перешкодили шпигуни австрійського імператора і Валдштейна вбили у 1634 р.

У 1648 р. під час захоплення Праги військами шведів Валдштейнський палац пограбували і вивезли у Швецію скульптури Адріана де Вріса. В обмін на лояльність палац повернули нащадкам Валдштейна. В 18 ст. тут працював припалацовий театр, де ставили опери і грали музику тогочасних композиторів, серед них твори Йозефа Мислівечека. Один з графів Валдштейнів був меценатом молодого композитора.

В 20 ст. палац і сад бароко реставровані, доступні для відвідин. На порожні постаменти в саду встановлені копії скульптур де Вріса, оригінали яких вивезені в Швецію. Палац належить уряду республіки Чехія. Манеж після реконструкції перетворено на виставковий зал. Сад і палацові приміщення використовують для концертів.

Джерела та посилання

 Valdštejnský palác v Praze. Praha 2002. ISBN 80-86087-35-2
 Parlament České republiky Senát Valdštejnský palác. Praha 1996. ISBN 80-902193-1-4
 Цтибор Рыбар, путеводитель «Прага», Олимпия, 1981

Чехії
Палаци Праги
Барокові палаци Чехії
Барокові сади Чехії
Споруди, збудовані 1630
Національні пам'ятки культури Чехії

redpajama_set_name: RedPajamaWikipedia


in Your Garage or Home?
Cabinets, Closets and Storage Systems!
We offer a wide assortment of finishes to create the perfect transformation from unruly to attractively organized. The unmistakable beauty of natural mahogany contrasting against your choice of standard or custom colors and finishes is sure to provide a distinguished appearance for any storage space.
N.W. Garage Cabinets Co. was not only on time with the their time frame of construction and install, but they did an excellent job and really cleaned up after themselves leaving us with a beautiful product that makes the garage very functional for my husband and look outstanding for me.
In a world where the consumer routinely gets less than they expect, your company exceeded expectations. The cabinets are everything you promised and the service provided by your office, sales and installation staff were world class.
The cabinetry fit and finish are above what I had imagined for a garage installation. I also was really impressed with your business from the first contact with your people, to the installed product. You run an outstanding operation with every attention to detail.


Buy lsa international flower mini posy vase amara. Vintage mini crystal vases set of 3 chairish. Buy lsa international flower mini posy vase amara. Mini sweetheart glass vase 4quot; wholesale flowers and. The ceramic kiln, four colors small vase, hydroponic. Mini vases white porcelain ceramic vases by helen rebecca. Set de 4 mini vases maison home.
Luna blue creations: polymer clay vases. Hand blown art glass vase hyacinth purple and black. White metallic gold cylinder tall floral vases at. Cylinder, trumpet fluted vases sale 2060% off. Bombilla orange vases set of 3. Fabulous decorative vases, ceramic artworks testing. Antique japanese satsuma vase meiji period cad $6179. Is it too early to put these on my christmas list. Glass cylinder vases dollar tree regarding your home home. Large brutalist ceramic floor vase at 1stdibs. Vase with fifteen sunflowers vincent van gogh.


When you work out of your home or apartment, you don't have a separate business rental bill to show the Internal Revenue Service at tax time to justify a business expense. However, that doesn't mean you miss out on a deduction completely: The IRS permits eligible owners and renters who use a portion of their living space for business activities to claim a home office deduction.
Though renting doesn't disqualify you from the home office deduction, you won't be able to claim it if you don't meet other criteria. The space you claim as your office must be your principal place of business and you must use it regularly and exclusively for business. For example, if you have a study in your apartment and you use it to work but also to read or watch TV, you can't claim the deduction because you don't use it exclusively for business. Your business doesn't have to be limited to your office, though. For example, if you schedule all your meetings, keep track of your books and do prep work in your office, but you also visit clients there, you can still claim the deduction. In addition, if you're an employee, you must work from your home for the benefit of your employer. You can't simply stay home rather than go into the office and say you have a home office.
The traditional method of calculating your home office deduction is to figure the percentage of your space that you use for business purposes and deduct that portion of your expenses, including rent, utilities and insurance. For example, if you pay $700 in housing costs each month and use 20 percent of your apartment as a home office, you can deduct $140 per month. The IRS starting in 2013 permitted filers to use a simplified method if the space was less than 300 square feet: Instead of deducting a percentage of your total costs, you can simply write off $5 per square foot.
If you're self-employed, you claim the home office deduction on Schedule C and it directly reduces your self-employment income. That means it reduces both your self-employment taxes and your income taxes. If you're an employee, you can claim the deduction on Schedule A, but only if you itemize your deductions. If you don't itemize, it won't help you. And, it only reduces your income taxes, not your payroll taxes.
If you haven't created a separate entity, or you have a single-member limited liability company that is a disregarded entity for tax purposes, you can't pay rent to yourself to shift income. But if you have created a separate entity for your LLC, S corporation or C corporation, you may have the entity rent a room in your home to use as an office. When you do this with a business you're running, the IRS considers this a "self-rental." In this situation, the entity claims a deduction for the cost of the rent it pays to you as a business expense and you must report it as rental income; you don't claim a deduction for your home office because the entity is renting the space from you. The rent must be fair market value, otherwise it isn't an ordinary and necessary business expense. Special rules determine which losses may be deductible each year. Because of the complexities of the tax code, consider consulting an accountant or tax attorney if you are considering this option.


While listening to a Podcast between Dave Ramsey and Seth Godin, Godin tells this story about Yellow Pages.
100 years ago the Yellow Pages came out as a partnership between AT&T and R.R. Donnelly. To get regular businesses that don't normally think about marketing to buy ads they gave them a yellow phone, whose number would be connected w/ their "free" ad. Three months later they would come back to remove the phone and the shop owners would resist because "that's the phone that rings all the time!" This story highlights that small business owners think "How do I avoid pain?" instead of "How do I go for gold?" This shift in storytelling built a business that, over time, became worth $1 trillion!
Seth goes on to talk about how small business owners don't know how to buy advertising. That is why this no risk try before you buy approach was so powerful.
Now the traditional yellow pages is dead. The online directories and Yellow Pages are still alive but not what they used to be. I've had several friends try YP.com adverting to find out no one was there. And a few others say it works great for them in their industry.
If only they would take a lesson from their old playbook. I would love to see directories include in their contract a number of guaranteed visitors to their listings or number of tracked calls. Or a 30 day trial period. If the service is good and they can visually see it working then they will keep it up.


text:
Computer Scientists Folklore
Folklore involves the study of traditional popular culture, in the past and in the present. Long ago, breakthrough products of the computer industry could still be created single-handedly, or by very minute teams. Folklore encourages the study of any given society through its culture and language, providing an array of choices for drawing on various disciplines in computer science. Focusing on computer scientists' folklore involves understanding how computer scientists define the industry through folktales, folk poetry, proverbs, riddles, jokes, myths, legends, folk music, and folk ballads (Pierce, 6). Folklore scholars ensure that their legendary jokes, songs, myths, and riddles add validity to the truth of its occurrence. Without any element of validity, the folklore legends could adopt the old way of jokes, lurking forgotten on the sidelines of society. The essay presents folklore collections about computer scientists analyzed from the individual, social, cultural, and comparative viewpoint. A Student Sample: ORDER YOUR PAPER NOW
Take for example "The Computer Scientist and the Burning Room," this is a famous joke accessible to only computer science students. The joke frames a computer scientist waking up in the middle of the night and finding a building on fire. Next to the faucet is a bucket that he fills up and pours it on the fire and the fire goes out. A few months later, the computer scientists' wakes up and experiences the same instance and does the same thing he did for the first time. This joke was meant to make something that is very formal and stressful with slight more fun to students. In the cultural context, the joke is inaccessible to students who are not computer scientists and could only draw fun between two computer scientists who both understand the joke (Shapiro, 376). The joke teaches students that whenever something is done in computer science, the first step in reducing the process to the absolute starting point even if repeating the already completed step is the only sure way of doing it.
The "Robert Drop Tables" is another folklore joke or pun collector by Scott Magnuson. A college student pokes a fun on "SQL injection" creating a room for those students lacking knowledge of MYSQL but possess advanced knowledge of the joke where users can hack into the program and steal information. The joke relies on MYSQL programming language whose item is passed down from professors to Dartmouth College students. The joke is a pun on words for it utilizes programming lingo to ensure something abnormal happens when it should not happen. The student had the myth that computer science was not concerned about software applications knowledge but on its applications development. ORDER YOUR PAPER NOW
Aside from the above folklore jokes, most computer scientists' tales are merely myths. There are intense battles between professors and students who try to outsmart each other. Some students think that computer science is mathematics, mathematics, mathematics! Computer science is mathematics, mathematics, mathematics. However, professors hold that computer science and mathematics are interrelated and that mathematics in computer science is taught from the zero point. The importance of doing mathematics in order to establish soundness and correctness of the applications is known to all students. However, believe that mathematics guarantee concept skills of computer science are a myth. Stating mathematics makes it science is a myth, thus computer science folklore.
In "The Archives of Compsci Folklore," professors teach students that there was once a DECWRITER III in Vuft who comfortably sat contently minding his own business to extend that he never suspected any dramatic events unfolding in software. The folktale meant that college students trek across the college on rubbish and debris activities hoping for salvation to come from the air. With much agony, the professor scorned the students to restore their civilization of getting concerned about what goes on in the class and the college at large. Other disciplines such as management, politics, and music; although unrelated to computer science impact on its programs. Students state that this is boring. However, the professor explained how this was a myth and misconception by emphasizing that when computer science professionals spend all time in front of computers, this creates a wrong impression from the general public.
In another interesting folklore story by Seymour Papert in 1966, the computer scientists wrote a proposal that sought to build a computer vision system as a summer project in their master's degree studies. There was a conflict of ideas between the students and the professors about "The Summer Vision Project"; prompting Seymour to document his tale that could significantly challenge the professor. The student believed that computer vision was a crucial project for a summer student unlike the professor's discouragement about the same (Patterson, 41). Since then, computer vision has taken off as a significant and booming field in computer science. While such legends keep evolving from time to time, it is such students who end up outsmarting the knowledge hold by the professors about computer science concepts.
Upon interaction with professors and other computer science legends in class, many students end up researching further to prove the authenticity of the taught folklores. As a result, conflicts arise between the two parties as they try to outsmart each other. The reality and possibilities of computer science make most students nervous. However, all of these professors and students end up being legends of folklore in a funny, frightening, and astonishing manner by the messages and ideas they share about computer science conceptions. It is interesting how students challenge and try to challenge the myths and misconceptions they hear from horror legends. ORDER YOUR PAPER NOW
Patterson, David A. "Offshoring: finally facts vs. folklore." Communications of the ACM 49.2 (2006): 41-42.
Pierce, Benjamin C. Basic category theory for computer scientists. MIT Press, 1991.
Shapiro, Fred R. "Etymology of the computer bug: History and folklore." American Speech 62.4 (1987): 376-378.
Global Fast Food Market Effects
Personal Faith and Beliefs Reflection Essay
Annotated Bibliography: Violence against Drug Dealers


text:
#include "UefiShellDebug1CommandsLib.h"

typedef enum {
  DmpStoreDisplay,
  DmpStoreDelete,
  DmpStoreSave,
  DmpStoreLoad
} DMP_STORE_TYPE;

typedef struct {
  UINT32     Signature;
  CHAR16     *Name;
  EFI_GUID   Guid;
  UINT32     Attributes;
  UINT32     DataSize;
  UINT8      *Data;
  LIST_ENTRY Link;
} DMP_STORE_VARIABLE;

#define DMP_STORE_VARIABLE_SIGNATURE  SIGNATURE_32 ('_', 'd', 's', 's')

/**
  Base on the input attribute value to return the attribute string.

  @param[in]     Atts           The input attribute value

  @retval The attribute string info.
**/
CHAR16 *
GetAttrType (
  IN CONST UINT32 Atts
  )
{
  UINTN  BufLen;
  CHAR16 *RetString;

  BufLen      = 0;
  RetString   = NULL;

  if ((Atts & EFI_VARIABLE_NON_VOLATILE) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+NV", 0);
  }
  if ((Atts & EFI_VARIABLE_RUNTIME_ACCESS) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+RT+BS", 0);
  } else if ((Atts & EFI_VARIABLE_BOOTSERVICE_ACCESS) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+BS", 0);
  }
  if ((Atts & EFI_VARIABLE_HARDWARE_ERROR_RECORD) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+HR", 0);
  }
  if ((Atts & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+AW", 0);
  }
  if ((Atts & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) != 0) {
    StrnCatGrow (&RetString, &BufLen, L"+AT", 0);
  }

  if (RetString == NULL) {
    RetString = StrnCatGrow(&RetString, &BufLen, L"Invalid", 0);
  }

  if ((RetString != NULL) && (RetString[0] == L'+')) {
    CopyMem(RetString, RetString + 1, StrSize(RetString + 1));
  }

  return RetString;
}

/**
  Convert binary to hex format string.

  @param[in]  Buffer            The binary data.
  @param[in]  BufferSize        The size in bytes of the binary data.
  @param[in, out] HexString     Hex format string.
  @param[in]      HexStringSize The size in bytes of the string.

  @return The hex format string.
**/
CHAR16*
BinaryToHexString (
  IN     VOID    *Buffer,
  IN     UINTN   BufferSize,
  IN OUT CHAR16  *HexString,
  IN     UINTN   HexStringSize
  )
{
  UINTN Index;
  UINTN StringIndex;

  ASSERT (Buffer != NULL);
  ASSERT ((BufferSize * 2 + 1) * sizeof (CHAR16) <= HexStringSize);

  for (Index = 0, StringIndex = 0; Index < BufferSize; Index += 1) {
    StringIndex +=
      UnicodeSPrint (
        &HexString[StringIndex],
        HexStringSize - StringIndex * sizeof (CHAR16),
        L"%02x",
        ((UINT8 *) Buffer)[Index]
        );
  }
  return HexString;
}

/**
  Load the variable data from file and set to variable data base.

  @param[in]  FileHandle     The file to be read.
  @param[in]  Name           The name of the variables to be loaded.
  @param[in]  Guid           The guid of the variables to be loaded.
  @param[out] Found          TRUE when at least one variable was loaded and set.

  @retval SHELL_DEVICE_ERROR      Cannot access the file.
  @retval SHELL_VOLUME_CORRUPTED  The file is in bad format.
  @retval SHELL_OUT_OF_RESOURCES  There is not enough memory to perform the operation.
  @retval SHELL_SUCCESS           Successfully load and set the variables.
**/
SHELL_STATUS
LoadVariablesFromFile (
  IN SHELL_FILE_HANDLE FileHandle,
  IN CONST CHAR16      *Name,
  IN CONST EFI_GUID    *Guid,
  OUT BOOLEAN          *Found
  )
{
  EFI_STATUS           Status;
  SHELL_STATUS         ShellStatus;
  UINT32               NameSize;
  UINT32               DataSize;
  UINTN                BufferSize;
  UINTN                RemainingSize;
  UINT64               Position;
  UINT64               FileSize;
  LIST_ENTRY           List;
  DMP_STORE_VARIABLE   *Variable;
  LIST_ENTRY           *Link;
  CHAR16               *Attributes;
  UINT8                *Buffer;
  UINT32               Crc32;

  Status = ShellGetFileSize (FileHandle, &FileSize);
  if (EFI_ERROR (Status)) {
    return SHELL_DEVICE_ERROR;
  }

  ShellStatus = SHELL_SUCCESS;

  InitializeListHead (&List);

  Position = 0;
  while (Position < FileSize) {
    //
    // NameSize
    //
    BufferSize = sizeof (NameSize);
    Status = ShellReadFile (FileHandle, &BufferSize, &NameSize);
    if (EFI_ERROR (Status) || (BufferSize != sizeof (NameSize))) {
      ShellStatus = SHELL_VOLUME_CORRUPTED;
      break;
    }

    //
    // DataSize
    //
    BufferSize = sizeof (DataSize);
    Status = ShellReadFile (FileHandle, &BufferSize, &DataSize);
    if (EFI_ERROR (Status) || (BufferSize != sizeof (DataSize))) {
      ShellStatus = SHELL_VOLUME_CORRUPTED;
      break;
    }

    //
    // Name, Guid, Attributes, Data, Crc32
    //
    RemainingSize = NameSize + sizeof (EFI_GUID) + sizeof (UINT32) + DataSize + sizeof (Crc32);
    BufferSize    = sizeof (NameSize) + sizeof (DataSize) + RemainingSize;
    Buffer        = AllocatePool (BufferSize);
    if (Buffer == NULL) {
      ShellStatus = SHELL_OUT_OF_RESOURCES;
      break;
    }
    BufferSize    = RemainingSize;
    Status = ShellReadFile (FileHandle, &BufferSize, (UINT32 *) Buffer + 2);
    if (EFI_ERROR (Status) || (BufferSize != RemainingSize)) {
      ShellStatus = SHELL_VOLUME_CORRUPTED;
      FreePool (Buffer);
      break;
    }

    //
    // Check Crc32
    //
    * (UINT32 *) Buffer       = NameSize;
    * ((UINT32 *) Buffer + 1) = DataSize;
    BufferSize = RemainingSize + sizeof (NameSize) + sizeof (DataSize) - sizeof (Crc32);
    gBS->CalculateCrc32 (
           Buffer,
           BufferSize,
           &Crc32
           );
    if (Crc32 != * (UINT32 *) (Buffer + BufferSize)) {
      FreePool (Buffer);
      ShellStatus = SHELL_VOLUME_CORRUPTED;
      break;
    }

    Position += BufferSize + sizeof (Crc32);

    Variable = AllocateZeroPool (sizeof (*Variable) + NameSize + DataSize);
    if (Variable == NULL) {
      FreePool (Buffer);
      ShellStatus = SHELL_OUT_OF_RESOURCES;
      break;
    }
    Variable->Signature = DMP_STORE_VARIABLE_SIGNATURE;
    Variable->Name      = (CHAR16 *) (Variable + 1);
    Variable->DataSize  = DataSize;
    Variable->Data      = (UINT8 *) Variable->Name + NameSize;
    CopyMem (Variable->Name,        Buffer + sizeof (NameSize) + sizeof (DataSize),                                                  NameSize);
    CopyMem (&Variable->Guid,       Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize,                                       sizeof (EFI_GUID));
    CopyMem (&Variable->Attributes, Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID),                   sizeof (UINT32));
    CopyMem (Variable->Data,        Buffer + sizeof (NameSize) + sizeof (DataSize) + NameSize + sizeof (EFI_GUID) + sizeof (UINT32), DataSize);

    InsertTailList (&List, &Variable->Link);
    FreePool (Buffer);
  }

  if ((Position != FileSize) || (ShellStatus != SHELL_SUCCESS)) {
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_BAD_FILE), gShellDebug1HiiHandle, L"dmpstore");
    if (Position != FileSize) {
      ShellStatus = SHELL_VOLUME_CORRUPTED;
    }
  }

  for ( Link = GetFirstNode (&List)
      ; !IsNull (&List, Link) && (ShellStatus == SHELL_SUCCESS)
      ; Link = GetNextNode (&List, Link)
      ) {
    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);

    if (((Name == NULL) || gUnicodeCollation->MetaiMatch (gUnicodeCollation, Variable->Name, (CHAR16 *) Name)) &&
        ((Guid == NULL) || CompareGuid (&Variable->Guid, Guid))
       ) {
      Attributes = GetAttrType (Variable->Attributes);
      ShellPrintHiiEx (
        -1, -1, NULL, STRING_TOKEN(STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
        Attributes, &Variable->Guid, Variable->Name, Variable->DataSize
        );
      SHELL_FREE_NON_NULL(Attributes);

      *Found = TRUE;
      Status = gRT->SetVariable (
                      Variable->Name,
                      &Variable->Guid,
                      Variable->Attributes,
                      Variable->DataSize,
                      Variable->Data
                      );
      if (EFI_ERROR (Status)) {
        ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD_GEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", Variable->Name, Status);
      }
    }
  }

  for (Link = GetFirstNode (&List); !IsNull (&List, Link); ) {
    Variable = CR (Link, DMP_STORE_VARIABLE, Link, DMP_STORE_VARIABLE_SIGNATURE);
    Link = RemoveEntryList (&Variable->Link);
    FreePool (Variable);
  }

  return ShellStatus;
}

/**
  Append one variable to file.

  @param[in] FileHandle        The file to be appended.
  @param[in] Name              The variable name.
  @param[in] Guid              The variable GUID.
  @param[in] Attributes        The variable attributes.
  @param[in] DataSize          The variable data size.
  @param[in] Data              The variable data.

  @retval EFI_OUT_OF_RESOURCES  There is not enough memory to perform the operation.
  @retval EFI_SUCCESS           The variable is appended to file successfully.
  @retval others                Failed to append the variable to file.
**/
EFI_STATUS
AppendSingleVariableToFile (
  IN SHELL_FILE_HANDLE FileHandle,
  IN CONST CHAR16      *Name,
  IN CONST EFI_GUID    *Guid,
  IN UINT32            Attributes,
  IN UINT32            DataSize,
  IN CONST UINT8       *Data
  )
{
  UINT32              NameSize;
  UINT8               *Buffer;
  UINT8               *Ptr;
  UINTN               BufferSize;
  EFI_STATUS          Status;

  NameSize   = (UINT32) StrSize (Name);
  BufferSize = sizeof (NameSize) + sizeof (DataSize)
             + sizeof (*Guid)
             + sizeof (Attributes)
             + NameSize + DataSize
             + sizeof (UINT32);

  Buffer = AllocatePool (BufferSize);
  if (Buffer == NULL) {
    return EFI_OUT_OF_RESOURCES;
  }

  Ptr = Buffer;
  //
  // NameSize and DataSize
  //
  * (UINT32 *) Ptr = NameSize;
  Ptr += sizeof (NameSize);
  *(UINT32 *) Ptr = DataSize;
  Ptr += sizeof (DataSize);

  //
  // Name
  //
  CopyMem (Ptr, Name, NameSize);
  Ptr += NameSize;

  //
  // Guid
  //
  CopyMem (Ptr, Guid, sizeof (*Guid));
  Ptr += sizeof (*Guid);

  //
  // Attributes
  //
  * (UINT32 *) Ptr = Attributes;
  Ptr += sizeof (Attributes);

  //
  // Data
  //
  CopyMem (Ptr, Data, DataSize);
  Ptr += DataSize;

  //
  // Crc32
  //
  gBS->CalculateCrc32 (Buffer, (UINTN) Ptr - (UINTN) Buffer, (UINT32 *) Ptr);

  Status = ShellWriteFile (FileHandle, &BufferSize, Buffer);
  FreePool (Buffer);

  if (!EFI_ERROR (Status) &&
      (BufferSize != sizeof (NameSize) + sizeof (DataSize) + sizeof (*Guid) + sizeof (Attributes) + NameSize + DataSize + sizeof (UINT32))
    ) {
    Status = EFI_DEVICE_ERROR;
  }

  return Status;
}

/**
  Recursive function to display or delete variables.

  This function will call itself to create a stack-based list of allt he variables to process,
  then fromt he last to the first, they will do either printing or deleting.

  This is necessary since once a delete happens GetNextVariableName() will work.

  @param[in] Name                 The variable name of the EFI variable (or NULL).
  @param[in] Guid                 The GUID of the variable set (or NULL).
  @param[in] Type                 The operation type.
  @param[in] FileHandle           The file to operate on (or NULL).
  @param[in] PrevName             The previous variable name from GetNextVariableName. L"" to start.
  @param[in] FoundVarGuid         The previous GUID from GetNextVariableName. ignored at start.
  @param[in] FoundOne             If a VariableName or Guid was specified and one was printed or
                                  deleted, then set this to TRUE, otherwise ignored.
  @param[in] StandardFormatOutput TRUE indicates Standard-Format Output.

  @retval SHELL_SUCCESS           The operation was successful.
  @retval SHELL_OUT_OF_RESOURCES  A memorty allocation failed.
  @retval SHELL_ABORTED           The abort message was received.
  @retval SHELL_DEVICE_ERROR      UEFI Variable Services returned an error.
  @retval SHELL_NOT_FOUND         the Name/Guid pair could not be found.
**/
SHELL_STATUS
CascadeProcessVariables (
  IN CONST CHAR16      *Name        OPTIONAL,
  IN CONST EFI_GUID    *Guid        OPTIONAL,
  IN DMP_STORE_TYPE    Type,
  IN EFI_FILE_PROTOCOL *FileHandle  OPTIONAL,
  IN CONST CHAR16      * CONST PrevName,
  IN EFI_GUID          FoundVarGuid,
  IN BOOLEAN           *FoundOne,
  IN BOOLEAN           StandardFormatOutput
  )
{
  EFI_STATUS                Status;
  CHAR16                    *FoundVarName;
  UINT8                     *DataBuffer;
  UINTN                     DataSize;
  UINT32                    Atts;
  SHELL_STATUS              ShellStatus;
  UINTN                     NameSize;
  CHAR16                    *AttrString;
  CHAR16                    *HexString;
  EFI_STATUS                SetStatus;
  CONST CHAR16              *GuidName;

  if (ShellGetExecutionBreakFlag()) {
    return (SHELL_ABORTED);
  }

  NameSize      = 0;
  FoundVarName  = NULL;

  if (PrevName!=NULL) {
    StrnCatGrow(&FoundVarName, &NameSize, PrevName, 0);
  } else {
    FoundVarName = AllocateZeroPool(sizeof(CHAR16));
    NameSize = sizeof(CHAR16);
  }

  Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
  if (Status == EFI_BUFFER_TOO_SMALL) {
    SHELL_FREE_NON_NULL(FoundVarName);
    FoundVarName = AllocateZeroPool (NameSize);
    if (FoundVarName != NULL) {
      if (PrevName != NULL) {
        StrnCpyS(FoundVarName, NameSize/sizeof(CHAR16), PrevName, NameSize/sizeof(CHAR16) - 1);
      }

      Status = gRT->GetNextVariableName (&NameSize, FoundVarName, &FoundVarGuid);
    } else {
      Status = EFI_OUT_OF_RESOURCES;
    }
  }

  //
  // No more is fine.
  //
  if (Status == EFI_NOT_FOUND) {
    SHELL_FREE_NON_NULL(FoundVarName);
    return (SHELL_SUCCESS);
  } else if (EFI_ERROR(Status)) {
    SHELL_FREE_NON_NULL(FoundVarName);
    return (SHELL_DEVICE_ERROR);
  }

  //
  // Recurse to the next iteration.  We know "our" variable's name.
  //
  ShellStatus = CascadeProcessVariables (Name, Guid, Type, FileHandle, FoundVarName, FoundVarGuid, FoundOne, StandardFormatOutput);

  if (ShellGetExecutionBreakFlag() || (ShellStatus == SHELL_ABORTED)) {
    SHELL_FREE_NON_NULL(FoundVarName);
    return (SHELL_ABORTED);
  }

  //
  // No matter what happened we process our own variable
  // Only continue if Guid and VariableName are each either NULL or a match
  //
  if ( ( Name == NULL
      || gUnicodeCollation->MetaiMatch(gUnicodeCollation, FoundVarName, (CHAR16*) Name) )
     && ( Guid == NULL
      || CompareGuid(&FoundVarGuid, Guid) )
      ) {
    DataSize      = 0;
    DataBuffer    = NULL;
    //
    // do the print or delete
    //
    *FoundOne = TRUE;
    Status = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
    if (Status == EFI_BUFFER_TOO_SMALL) {
      SHELL_FREE_NON_NULL (DataBuffer);
      DataBuffer = AllocatePool (DataSize);
      if (DataBuffer == NULL) {
        Status = EFI_OUT_OF_RESOURCES;
      } else {
        Status = gRT->GetVariable (FoundVarName, &FoundVarGuid, &Atts, &DataSize, DataBuffer);
      }
    }
      //
      // Last error check then print this variable out.
      //
    if (Type == DmpStoreDisplay) {
      if (!EFI_ERROR(Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
        AttrString = GetAttrType(Atts);
        if (StandardFormatOutput) {
          HexString = AllocatePool ((DataSize * 2 + 1) * sizeof (CHAR16));
          if (HexString != NULL) {
            ShellPrintHiiEx (
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_VAR_SFO), gShellDebug1HiiHandle,
              FoundVarName, &FoundVarGuid, Atts, DataSize,
              BinaryToHexString (
                DataBuffer, DataSize, HexString, (DataSize * 2 + 1) * sizeof (CHAR16)
                )
              );
            FreePool (HexString);
          } else {
            Status = EFI_OUT_OF_RESOURCES;
          }
        } else {
          Status = gEfiShellProtocol->GetGuidName(&FoundVarGuid, &GuidName);
          if (EFI_ERROR (Status)) {
            ShellPrintHiiEx (
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
              AttrString, &FoundVarGuid, FoundVarName, DataSize
              );
          } else {
            ShellPrintHiiEx (
              -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE2), gShellDebug1HiiHandle,
              AttrString, GuidName, FoundVarName, DataSize
              );
          }
          DumpHex (2, 0, DataSize, DataBuffer);
        }
        SHELL_FREE_NON_NULL (AttrString);
      }
    } else if (Type == DmpStoreSave) {
      if (!EFI_ERROR(Status) && (DataBuffer != NULL) && (FoundVarName != NULL)) {
        AttrString = GetAttrType (Atts);
        ShellPrintHiiEx (
          -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_HEADER_LINE), gShellDebug1HiiHandle,
          AttrString, &FoundVarGuid, FoundVarName, DataSize
          );
        Status = AppendSingleVariableToFile (
                   FileHandle,
                   FoundVarName,
                   &FoundVarGuid,
                   Atts,
                   (UINT32) DataSize,
                   DataBuffer
                   );
        SHELL_FREE_NON_NULL (AttrString);
      }
    } else if (Type == DmpStoreDelete) {
      //
      // We only need name to delete it...
      //
      SetStatus = gRT->SetVariable (FoundVarName, &FoundVarGuid, Atts, 0, NULL);
      if (StandardFormatOutput) {
        if (SetStatus == EFI_SUCCESS) {
          ShellPrintHiiEx (
            -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_NG_SFO), gShellDebug1HiiHandle,
            FoundVarName, &FoundVarGuid
            );
        }
      } else {
        ShellPrintHiiEx (
          -1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_DELETE_LINE), gShellDebug1HiiHandle,
          &FoundVarGuid, FoundVarName, SetStatus
          );
      }
    }
    SHELL_FREE_NON_NULL(DataBuffer);
  }

  SHELL_FREE_NON_NULL(FoundVarName);

  if (Status == EFI_DEVICE_ERROR) {
    ShellStatus = SHELL_DEVICE_ERROR;
  } else if (Status == EFI_SECURITY_VIOLATION) {
    ShellStatus = SHELL_SECURITY_VIOLATION;
  } else if (EFI_ERROR(Status)) {
    ShellStatus = SHELL_NOT_READY;
  }

  return (ShellStatus);
}

/**
  Function to display or delete variables.  This will set up and call into the recursive function.

  @param[in] Name                 The variable name of the EFI variable (or NULL).
  @param[in] Guid                 The GUID of the variable set (or NULL).
  @param[in] Type                 The operation type.
  @param[in] FileHandle           The file to save or load variables.
  @param[in] StandardFormatOutput TRUE indicates Standard-Format Output.

  @retval SHELL_SUCCESS           The operation was successful.
  @retval SHELL_OUT_OF_RESOURCES  A memorty allocation failed.
  @retval SHELL_ABORTED           The abort message was received.
  @retval SHELL_DEVICE_ERROR      UEFI Variable Services returned an error.
  @retval SHELL_NOT_FOUND         the Name/Guid pair could not be found.
**/
SHELL_STATUS
ProcessVariables (
  IN CONST CHAR16      *Name      OPTIONAL,
  IN CONST EFI_GUID    *Guid      OPTIONAL,
  IN DMP_STORE_TYPE    Type,
  IN SHELL_FILE_HANDLE FileHandle OPTIONAL,
  IN BOOLEAN           StandardFormatOutput
  )
{
  SHELL_STATUS              ShellStatus;
  BOOLEAN                   Found;
  EFI_GUID                  FoundVarGuid;

  Found         = FALSE;
  ShellStatus   = SHELL_SUCCESS;
  ZeroMem (&FoundVarGuid, sizeof(EFI_GUID));

  if (StandardFormatOutput) {
    ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN(STR_GEN_SFO_HEADER), gShellDebug1HiiHandle, L"dmpstore");
  }

  if (Type == DmpStoreLoad) {
    ShellStatus = LoadVariablesFromFile (FileHandle, Name, Guid, &Found);
  } else {
    ShellStatus = CascadeProcessVariables (Name, Guid, Type, FileHandle, NULL, FoundVarGuid, &Found, StandardFormatOutput);
  }

  if (!Found) {
    if (ShellStatus == SHELL_OUT_OF_RESOURCES) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_OUT_MEM), gShellDebug1HiiHandle, L"dmpstore");
      return (ShellStatus);
    } else if (Name != NULL && Guid == NULL) {
      if (StandardFormatOutput) {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N_SFO), gShellDebug1HiiHandle, Name);
      } else {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_N), gShellDebug1HiiHandle, L"dmpstore", Name);
      }
    } else if (Name != NULL && Guid != NULL) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_GN), gShellDebug1HiiHandle, L"dmpstore", Guid, Name);
    } else if (Name == NULL && Guid == NULL) {
      if (StandardFormatOutput) {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_SFO), gShellDebug1HiiHandle);
      } else {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND), gShellDebug1HiiHandle, L"dmpstore");
      }
    } else if (Name == NULL && Guid != NULL) {
      if (StandardFormatOutput) {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G_SFO), gShellDebug1HiiHandle, Guid);
      } else {
        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_NO_VAR_FOUND_G), gShellDebug1HiiHandle, L"dmpstore", Guid);
      }
    }
    return (SHELL_NOT_FOUND);
  }
  return (ShellStatus);
}

STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
  {L"-d", TypeFlag},
  {L"-l", TypeValue},
  {L"-s", TypeValue},
  {L"-all", TypeFlag},
  {L"-guid", TypeValue},
  {L"-sfo", TypeFlag},
  {NULL, TypeMax}
  };

/**
  Function for 'dmpstore' command.

  @param[in] ImageHandle  Handle to the Image (NULL if Internal).
  @param[in] SystemTable  Pointer to the System Table (NULL if Internal).
**/
SHELL_STATUS
EFIAPI
ShellCommandRunDmpStore (
  IN EFI_HANDLE        ImageHandle,
  IN EFI_SYSTEM_TABLE  *SystemTable
  )
{
  EFI_STATUS        Status;
  RETURN_STATUS     RStatus;
  LIST_ENTRY        *Package;
  CHAR16            *ProblemParam;
  SHELL_STATUS      ShellStatus;
  CONST CHAR16      *GuidStr;
  CONST CHAR16      *File;
  EFI_GUID          *Guid;
  EFI_GUID          GuidData;
  CONST CHAR16      *Name;
  DMP_STORE_TYPE    Type;
  SHELL_FILE_HANDLE FileHandle;
  EFI_FILE_INFO     *FileInfo;
  BOOLEAN           StandardFormatOutput;

  ShellStatus          = SHELL_SUCCESS;
  Package              = NULL;
  FileHandle           = NULL;
  File                 = NULL;
  Type                 = DmpStoreDisplay;
  StandardFormatOutput = FALSE;

  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
  if (EFI_ERROR(Status)) {
    if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"dmpstore", ProblemParam);
      FreePool(ProblemParam);
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else {
      ASSERT(FALSE);
    }
  } else {
    if (ShellCommandLineGetCount(Package) > 2) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"dmpstore");
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else if (ShellCommandLineGetFlag(Package, L"-all") && ShellCommandLineGetFlag(Package, L"-guid")) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-all", L"-guid");
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else if (ShellCommandLineGetFlag(Package, L"-s") && ShellCommandLineGetFlag(Package, L"-l")) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle,  L"dmpstore", L"-l", L"-s");
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLineGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-d")) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-d");
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else if ((ShellCommandLineGetFlag(Package, L"-s") || ShellCommandLineGetFlag(Package, L"-l")) && ShellCommandLineGetFlag(Package, L"-sfo")) {
      ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_CONFLICT), gShellDebug1HiiHandle, L"dmpstore", L"-l or -s", L"-sfo");
      ShellStatus = SHELL_INVALID_PARAMETER;
    } else {
      //
      // Determine the GUID to search for based on -all and -guid parameters
      //
      if (!ShellCommandLineGetFlag(Package, L"-all")) {
        GuidStr = ShellCommandLineGetValue(Package, L"-guid");
        if (GuidStr != NULL) {
          RStatus = StrToGuid (GuidStr, &GuidData);
          if (RETURN_ERROR (RStatus) || (GuidStr[GUID_STRING_LENGTH] != L'\0')) {
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PARAM_INV), gShellDebug1HiiHandle, L"dmpstore", GuidStr);
            ShellStatus = SHELL_INVALID_PARAMETER;
          }
          Guid = &GuidData;
        } else  {
          Guid = &gEfiGlobalVariableGuid;
        }
      } else {
        Guid  = NULL;
      }

      //
      // Get the Name of the variable to find
      //
      Name = ShellCommandLineGetRawValue(Package, 1);

      if (ShellStatus == SHELL_SUCCESS) {
        if (ShellCommandLineGetFlag(Package, L"-s")) {
          Type = DmpStoreSave;
          File = ShellCommandLineGetValue(Package, L"-s");
          if (File == NULL) {
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-s");
            ShellStatus = SHELL_INVALID_PARAMETER;
          } else {
            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0);
            if (!EFI_ERROR (Status)) {
              //
              // Delete existing file, but do not delete existing directory
              //
              FileInfo = ShellGetFileInfo (FileHandle);
              if (FileInfo == NULL) {
                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
                Status = EFI_DEVICE_ERROR;
              } else {
                if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) {
                  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File);
                  Status = EFI_INVALID_PARAMETER;
                } else {
                  Status = ShellDeleteFile (&FileHandle);
                  if (EFI_ERROR (Status)) {
                    ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_DELETE_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
                  }
                }
                FreePool (FileInfo);
              }
            } else if (Status == EFI_NOT_FOUND) {
              //
              // Good when file doesn't exist
              //
              Status = EFI_SUCCESS;
            } else {
              //
              // Otherwise it's bad.
              //
              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
            }

            if (!EFI_ERROR (Status)) {
              Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_CREATE | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_READ, 0);
              if (EFI_ERROR (Status)) {
                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
              }
            }

            if (EFI_ERROR (Status)) {
              ShellStatus = SHELL_INVALID_PARAMETER;
            }
          }
        } else if (ShellCommandLineGetFlag(Package, L"-l")) {
          Type = DmpStoreLoad;
          File = ShellCommandLineGetValue(Package, L"-l");
          if (File == NULL) {
            ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_NO_VALUE), gShellDebug1HiiHandle, L"dmpstore", L"-l");
            ShellStatus = SHELL_INVALID_PARAMETER;
          } else {
            Status = ShellOpenFileByName (File, &FileHandle, EFI_FILE_MODE_READ, 0);
            if (EFI_ERROR (Status)) {
              ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
              ShellStatus = SHELL_INVALID_PARAMETER;
            } else {
              FileInfo = ShellGetFileInfo (FileHandle);
              if (FileInfo == NULL) {
                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"dmpstore", File);
                ShellStatus = SHELL_DEVICE_ERROR;
              } else {
                if ((FileInfo->Attribute & EFI_FILE_DIRECTORY) == EFI_FILE_DIRECTORY) {
                  ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_IS_DIRECTORY), gShellDebug1HiiHandle, L"dmpstore", File);
                  ShellStatus = SHELL_INVALID_PARAMETER;
                }
                FreePool (FileInfo);
              }
            }
          }
        } else if (ShellCommandLineGetFlag(Package, L"-d")) {
          Type = DmpStoreDelete;
        }

        if (ShellCommandLineGetFlag (Package,L"-sfo")) {
          StandardFormatOutput = TRUE;
        }
      }

      if (ShellStatus == SHELL_SUCCESS) {
        if (Type == DmpStoreSave) {
          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_SAVE), gShellDebug1HiiHandle, File);
        } else if (Type == DmpStoreLoad) {
          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_DMPSTORE_LOAD), gShellDebug1HiiHandle, File);
        }
        ShellStatus = ProcessVariables (Name, Guid, Type, FileHandle, StandardFormatOutput);
        if ((Type == DmpStoreLoad) || (Type == DmpStoreSave)) {
          ShellCloseFile (&FileHandle);
        }
      }
    }
  }

  if (Package != NULL) {
    ShellCommandLineFreeVarList (Package);
  }
  return ShellStatus;
}

redpajama_set_name: RedPajamaGithub


text:
Florence-Nightingale-Krankenhaus steht für
Florence-Nightingale-Krankenhaus (Düsseldorf)
Florence-Nightingale-Krankenhaus (Istanbul)


text:
Deniers are just one off from the truth
I give a lot of talks on climate change and what we should do about it. Invariably, at the end, some smug white haired guy in his sixties raises his hand and says something like this: "I'm a smart guy (Phd, engineer, whatever—he lays out the credentials) and I'm a critical thinker. (of course!) and […]
Auden Schendler
Climate + Climate & Energy
I give a lot of talks on climate change and what we should do about it. Invariably, at the end, some smug white haired guy in his sixties raises his hand and says something like this: "I'm a smart guy (Phd, engineer, whatever—he lays out the credentials) and I'm a critical thinker. (of course!) and in my research on climate, I've come across a lot of controversy on the science. I don't think we're even close to resolution on this."
This comment is, of course, incredibly intellectually lazy, because the scientific community has rarely had such comprehensive understanding of an issue. It's not a matter of consensus, it's that scientists all over the world, speaking different languages, using different methodologies, and under different ideologies, are all finding the same thing–climate change is happening and is human caused.
What's so annoying about Mr. "I'm a free thinker" is that if he really were a critical free thinker, he'd ponder for just a second the question of why, with all this good science, he's still on the fence. And if he researched that just a little bit, he'd find out that ExxonMobil and other fossil fuel interests have spend tens of millions of dollars over several decades supporting scientific disinformation on climate, with the express goal of putting doubt into the minds of Americans, with the intent of protecting profits from carbon regulation.
This isn't a conspiracy theory: ExxonMobil's CEO recently renounced the practice. (Mostly—see here for details.) And the whole scam was even further, and perhaps penultimately, exposed by Andy Revkin in the New York Times. Revkin points out that the industry ignored its own scientists! But the damage is done—the most successful and destructive marketing campaign in the history of the world—using the same tactics, and some of the same people as the tobacco industry—has led to an American population that is actually less concerned about climate change as a human caused problem now than a few years ago.
In my world, we say: "these people are dying off." Or "they're so clueless, forget about them." But these guys are coming through the windows at me every day, and they seem pretty damn healthy! Last week, our CEO handed me two climate denier CDs guests had given him (both have been widely, spectacularly debunked). Regardless, things seem to be getting worse, not better. This is a catastrophe, but one with a significant opportunity attached.
Mr. Skeptic, the most arrogant, damaging, useless and intellectually lazy branch of humanity living today, could use his particular personality and worldview to become a productive, hopeful, helpful, and constructive member of society by turning his self-lauded critical thinking skills to the question of exactly why he's a doubter.
Obama's first 100 days of coal
Jeff Biggers Climate & Energy
Biden administration unveils roadmap for a greener, more equitable transportation sector
The unexpected barrier preventing American small towns from accessing federal climate funds
Brett Marsh
Why Biden's new protections don't eliminate threats to the Tongass National Forest
Naveena Sadasivam


Scott Maichel is a principal and co-founder of AmCheck's San Diego location. AmCheck started operating in 1996 and provides payroll/HR related software and services that help employers manage the employee life-cycle. Currently, AmCheck has 12 offices across the U.S. and is one of the largest privately held payroll services firms in the U.S. As far as his experience, Scott Maichel has over 25 years in the human resource sector. A true testament to his abilities is AmCheck's San Diego location that he started in 2006. Although it began as nothing more than a one-bedroom project, Scott Maichel turned San Diego into the second largest revenue generating office in the company. One of the reasons why AmCheck gained some popularity recently comes from the fact that they have just established a high-value college scholarship program to support higher education.
Can you give us a brief background of the scholarship?
I recently established a partnership with Brandman University which is part of the Chapman University system. The goal was to create two college scholarship programs for our client's employees.
What is the difference between the two opportunities?
The first scholarship program is available towards the "traditional" college experience where the learner has access to both online and classroom-based courses. This program has more structure where the learner must enroll in classes by a certain date and has regularly scheduled class times and exams. The scholarship is available towards undergraduate and graduate degrees in 50+ different majors. The financial reward ranges and goes up to $5,400 for undergraduate degrees and up to $8,960 for graduate degrees.
The "MyPath" scholarship program," on the other hand, is geared more towards working adults. This program is 100% online and is a "learn at your own pace" format where the student can participate in courses and exams on their own timeframe. This is a great, flexible program for someone who wants to pursue furthering their education on a part-time basis.
The MyPath program is only available for bachelor's degrees in business and information technology. However, those degrees are the two most popular undergraduate degrees in the U.S. The program also has an "opt out" component. Which means, based on a learners previous or current work experience, they can "test out" of certain coursework, thus potentially shortening the timeframe of achieving a 4-year degree to 3 – 1.5 years. This program is extremely affordable at $6,400 per year. The MyPath scholarship benefit is up to $640 per year.
What type of program are people looking at when they decide to join Brandman University?
The main reasons why Brandman is such a good fit for our clients is because of the wide scope of educational opportunities available, the flexibility and the price point. Brandman offers north of 50 different programs. Also, since we have clients in all 50 states, their online programs allow our clients access to this education opportunity regardless of where they are physically located. Lastly, Brandman's online programs have been rated as one of the best in the nation since online college programs ratings began.
How did this idea originate?
We are always looking for ways to add value to our clients beyond the typical payroll vendor relationship. Providing them with a program of this nature helps our clients attract and retain good people by basically offering an additional benefit to their employees at no charge to our clients. The program also helps differentiate AmCheck as a thought leader in our industry.
Do you anticipate any additional opportunities of this nature in the future?
Absolutely. For example, we just recently expanded both scholarship opportunities to not only include our client's employees, but now the program extends to employee's spouses and dependents. In conjunction with our Brandman partnership, I'm confident we will continue to make the program even better for the future.
The great thing about this program is it's available to all our client's employees, spouses, and dependents. It's also available to all AmCheck employees, spouses, and dependents. If the applicant has been accepted by Brandman University, there is no application process for the learner to access the scholarship funds. We are very excited and proud of the scope and availability of this educational opportunity.
Scholarship programs are very helpful especially for students from lower income families. I wish more companies took such efforts to assist student(s) in various communities.


Moog Aircraft Group (Moog) has been supplying engineering and advanced technologies to the military aircraft market since its inception in the 1950s. Today, the company is considered a world leader in manufacturing advanced solutions for the world's highest-performance aircraft.
Moog's Wolverhampton facility decided to make a substantial commitment to improving its internal capabilities for CMM inspection. This included using a dedicated fixture for each machined part's inspection operation. Traditionally, fixturing and part-alignment tooling was outsourced to external suppliers, where it was made from tool steel.
With Stratasys 3D printing technology, Moog Aircraft Group produces CMM fixtures in a matter of hours rather than weeks.


text:
Home » Arts & Entertainment » Books » Remembering Tom Wolfe
Reflecting on the Loss of Tom Wolfe in 2018
By Martha Steger | March 15th, 2019
Writer Martha Steger on the legacy of the Richmond-born author and journalist
It's not every best-selling author who lives to see collectors' editions of his books, but Richmond native Thomas Kennerly Wolfe Jr., who died at 88 on May 14 of this year, was rare by any standard. Looking back on my Jan. 7, 2018 interview with him in his and his wife, Sheila's, Upper East Side Manhattan apartment, I felt an entire literary canon passing by as he spoke admiringly of authors ranging from 19th-century Balzac to the contemporary Michael Lewis of The Blind Side and Flash Boys fame – but not so admiringly of most contemporary American novelists.
I leaned in to hear Wolfe's quiet-spoken voice, emblematic of his personality – though he projected an entertaining flamboyance in speaking to large audiences, as during his acceptance of the Library of Virginia's Lifetime Achievement Award in 2015. Rival authors in the ongoing contest for "Great American Novel" – notably John Updike and Norman Mailer – accused Wolfe of being an entertainer as opposed to a great writer.
Perhaps what they resented was the growth of a new literary novel (though Wolfe would hate that word) out of the New Journalism he pioneered. He said during my interview, "I've grown weary of American novels …" because, to paraphrase him, their authors have given up on the principles of realism, which made the novel great in the first place.
From his 1979 and 1987 epics, The Right Stuff and Bonfire of the Vanities, respectively, to his 1998 blockbuster, A Man in Full, Wolfe saw being on-site as essential – getting into the trenches, pulling out real dialogue and mannerisms for his characters, whether real as with the Mercury 7 astronauts or fictional with the "full" man, Atlanta property developer Charlie Croker. This social realism – "scene-by-scene" construction, he called it – is the foundation for a vital writing technique.
His inspiration for realism showed up early in Richmond, with lengthy, novel sentences on subjects such as his childhood passion for baseball (in which he had a 1952 tryout with the New York Giants). The late Wilbur Bailey, Wolfe's English teacher at the Episcopal, all-boys St. Christopher's School, told me upon my first interview with Wolfe in 1979 that the budding author began his sentence describing a baseball as "a spheroid."
With a bachelor's degree from Washington and Lee University and a doctorate in American studies at Yale, Wolfe's journalism career went from The Washington Post in 1959 to the New York Herald Tribune three years later. His 1963 Esquire magazine article on Southern California's hot-rod custom-car culture culminated in his first book in 1965, The Kandy-Kolored Tangerine-Flake Streamline Baby – an early indicator of Wolfe's insight into what digital news outlets call "trending stories." The counterculture classic, The Electric Kool-Aid Acid Test, followed in 1968.
In an early-fall visit to Richmond's Hollywood Cemetery, I noted freshly turned turf in the space next to Wolfe's parents' graves. Decisions about Great American Novel will be left to critics – but Wolfe will forever be a great part of Virginia's literary history.
Prior to her 2018 interview, freelance writer Martha Steger last interviewed Wolfe in 1981 after his narrative on modern architecture, From Bauhaus to Our House, was published.
Cultivating Memories from Travel Experiences
By Joseph Rosendo | January 8, 2021
'Musings: The Short Happy Pursuit of Pleasure and Other Journeys' book review
"On with the Butter": Move It or Lose It!