phosphorite mining wash gold 6s shaking table, shaker table for gold recovery .. 6s gold mining shaking table gold separation shaker table price for equipment centrifugal . 2017 hot sale new arrival 6s shaking table with ISO approved from certified suppliers, including 2,354 with Other, 572 with ISO9001 certification.
hsm ce iso manufacture ball mill equipment price. zimbabwe gold ball mill for sale used in gold ore grindingadd, Hsm Iso Ce China Top Manufacture, clay mine equipment gold hsm ce iso jaw ball mill .
Iso,ce,sgs Approved Stone Cone Crusher Machine iso,ce,sgs approved stone jaw crusher China Professional Manufacturer Jaw Crusher mineral crusher for . Mining Stone Crushing Equipment Hydraulic Cone Crusher . crushing machine,grinding mill,mining iso certificate is the manufacturer of jaw crusher,stone crusher mineral processing a jaw crusher .
iso and ce approved composite crusher roll breaker,mineral processing hot sale top quality small stone impact . classifying equipment small rock jaw stone crusher/mining machine pe250 1200 min iso, ce top sale high quality hot sale small jaw crusher ce approved.
Professional YH 1325 cnc stone engraving router for marble granite cutting . china most professional marble granite processing machinery manufacturers ce iso china suppliers CE approved stone cutting machine/3d stone cnc routers/marble polishing ..
stone crusher with approval. china brand ce iso approved jaw crusher portable crusher, famous brand small stone mobile famous brand mobile stone crushing plant ce iso concrete batching plant usa northcare.co.za. tph stone crusher plant iso ce certificate lemon grass.be.
The evaluation by customer Because of our high requirements for final particule granularity, I have followed the views of engineer with a two-stage crushing a PE Jaw Crusher for primary crushing and two Hydraulic Cone Crusher HST160 for secondary crushing.
grinding ball mills for salesale in nigeria Alaska Wilderness Action. About 10% of these are mine mill 1% are milling cutter. . 17743 products Tags Fine Ball Mill Copper Ore Grinding Ball Mill Gold Mining Ball Mill Tags . pan mill Ball Mill 1200kg/h Vibrating Ball Mill Vibrating Ball Mill Export To Nigeria . .
High quality hydraulic La 130Y gold mining drilling equipment with video 40m hydraulic rock drill mining machinery mineral equipment Shandong Energy Heavy Equipment Manufacturing Group Co., Ltd. from certified suppliers, including 6,201 with ISO9001, 2,492 with Other, and 577 with ISO/TS16949 certification.
Shanghai Pioneer Machinery Manufacturing Co., Ltd. Crusher .High Quality stone impact crusher machine with ISO/CE approved! High Quality stone impact .
High Quality stone impact crusher machine with ISO/CE approved! . Pioneer HP hydraulic series cone crusher With larger capacity! . Granite, basalt, river stone, gold ore, iron ore stone crushing plant ..


Take as many practice tests as you can. Have a friend or family member time you so that you are taking them under the same time constraints as the real test.
Remember to get a full 8 hours of sleep the night before taking the SAT's. You don't want to be so tired that you start to drift off while taking the test. Also remember to eat a large healthy breakfast so that you are not starving half way through the test.
Read each question carefully. Answer the ones that are easiest for you to answer first. Then go back and spend the time on the harder ones.
Before completing the test look over it for two things. First, that you have answered every question, and second that you have answered every question to the best of your ability.
If you are using an answer sheet that you have to fill in the corresponding bubble (with a #2 pencil), make sure you are filling in the right bubble beside the right question number. You don't want to have to waist time trying to figure out where you filled in the wrong one, and you don't want something like this to mess up your final score.
Don't rush yourself to make a selection. Consider the possibilities, and eliminate the choices that don't first. After you have ruled out what will not work you can guess if you are not sure. You can't loose points.
If you have narrowed your choices from four down to two and you are not sure, go with your gut and first instinct. Don't second guess yourself and risk getting it wrong.
For the written section – keep it simple and do not use slang unless you have a legitimate reason to do so.
Make sure you know where you are going on test day. You don't want to end up at the wrong place because of bad directions. Make sure that you arrive at least 30 minutes early so that you can check in. Don't forget any paperwork necessary, and your photo ID.
For the math section, take the time to work out the problems in either the test booklet or on scrap paper.
You can write in your test book. You can use it to figure out math problems. Or figure out the correct spelling of a word. You can also mark your answers so that you can, right before finishing, check between what you have circled in the book and what you have on the answer sheet.
If you feel you didn't do well on your exam, don't be afraid to take it again! Many students will take the exam more than once, since after the first time they've taken it they will feel as if they will be more prepared, and better know what to look out for during their second examination.
Studies have shown that SAT prep courses only increase the average score by 30 points. This minute extra boost can be achieved by studying at home, with an SAT prep book.


text:
Instiz
Pann
Theqoo
Kang Daniel reveals tracklist for 'Color On Me'
Published by admin on July 19, 2019 July 19, 2019
Kang Daniel reveals tracklist for 'Color On Me' … the title song 'What are you up to'
The album "Color On Me" will features 5 songs in total.
Kang Daniel to make his much anticipated solo debut with "Color On Me" on July 25.
original post: naver
1. [+756, -7] The track list shows Daniel's feelings. I'm looking forward to the album. Kang Daniel, cheering for your solo debut.
2. [+320, -2] I missed Kang Daniel's performance so much, and I'm so happy to think of an album full of Daniel's voice.
3. [+257, -1] Kang Daniel, What are you up to!!!!! Kang Daniel, thank you.
4. [+229, -1] Kang Daniel's first album!!! I'm so looking forward to it.
5. [+14, -0] Kang Daniel's first solo album, color on me, I'm already looking forward to it.
6. [+13, -0] I'm so looking forward to this album, Kang Daniel!
7. [+11, -0] I feel like he's been talking to us. Let's be happy for as long as we've been waiting for him. On July 25, Kang Daniel solo hit daebak
8. [+11, -0] Kang Daniel's trendy image! I'm so looking forward to it!! Color on me.
Categories: Naver
Tags: Kang Daniel
EXO's fandom to take action if SM doesn't respond to remove Chen from EXO until the 18th
'Chen aftermath' EXO fandom, "We will be taking group action if there is no response to our request to remove Chen from the group until the 18th" EXO fandom warns SM, "We will be taking Read more…
BTS to perform "Black Swan" for 1st time on "The Late Late Show With James Corden"
BTS to appear on 'The Late Late Show With James Corden'… To perform the new song 'Black Swan' for the first time It's been announced that BTS's first performance of "Black Swan" will be on Read more…
G-Dragon looks luxurious on his way to Paris
G-Dragon off to a fashion show G-Dragon was seen at Incheon Airport heading to Paris for a fashion show original post: naver 1. [+567, -188] It's been a while, Chanel-Jiyong 2. [+459, -242] GD, it's Read more…
Business inquiries: adknetizen@gmail.com

redpajama_set_name: RedPajamaCommonCrawl


Is your platform not included?
If your collaborative web platform of choice is not listed here, we encourage you to develop your own diversity-enabling extension using the available RENDER technology! We will support you as much as possible.
When you are having ideas for an extension, keep in mind the possibilities of the technology developed in RENDER for opinion mining, fact coverage, knowledge diversity representation and more. To get an overview, check out the deliverables section. All the technology developed in RENDER is open source.
Below you find a forum to discuss your ideas, questions and remarks. A RENDER Admin will respond there.


The largest selection of Hockey nets in the world. Unsurpassed Quality!
Fits on a 4' x 6' frame with 5 openings for target and skills shooting. Made of heavy duty polyester windscreen material. Weighted base on the bottom. Includes velcros. Ships UPS.
The Chip Shot hockey shooting target net is the newest form of target practice. The Chip Shot is a portable, on-the-go, heavy duty shooting target that can be used for skills shooting, practicing, and contests. Constructed of flat steel welded together to make a triangle, blue vinyl webbing, knotless nylon pocket, red flag, and velcros to attach around goal. Sold in sets of 2. (1 left/1 right). Ships UPS.
A new hockey net stronger and heavier than any net in the industry. Extra thick 4.5mm knotless nylon material to withstand pucks and balls.


text:
All Tar Heels
From NAIA JV to Division I MLB Draft Prospect: The Brandon Rembert Story
Alcorn State outfielder Brandon Rembert's journey is one of hope, encouragement, and paving the way for others.
Isaac Schade
Sep 26, 2020 9:50 AM EDT
Make no mistake about it: Brandon Rembert's ascension from the JV team at an NAIA college to Division I Alcorn State baseball player on the cusp of potentially being drafted is the type of content that Disney turns into a movie.
This is Jim Morris (The Rookie) going from high school science teacher to Tampa Bay (Devil) Rays pitcher at the age of 35.
This is 5'6" Rudy Ruettiger (Rudy) going from un-recruited high school football player with poor grades to sacking Georgia Tech quarterback Rudy Allen in the only game he ever actually played in for Notre Dame.
This is Vince Papale (Invincible) going from high school teacher to becoming the oldest non-kicker rookie in the history of the NFL (30 years old) when he suited up for the Philadelphia Eagles.
Brandon Rembert is living out those types of dreams.
On the surface, the story of Brandon Rembert appears to be a tale about a young man's perseverance to achieve his life's grandest dream.
However, upon closer examination, this is a story about a young man who's greatest desire is to be a pioneer for others who might be looking to him for inspiration.
In an age where people are often more concerned with their own brand and image and likes and retweets, Brandon Rembert tells his story not so that his name is elevated but rather so that someone else might see his life trajectory and realize their own potential.
Brandon Rembert tells his story so that someone might see themselves represented in him.
Brandon Rembert tells his story so that "hopefully [it] can encourage and give hope to people".
In an era where self-aggrandizement and putting forth the perfect cultivated image are the central aims of much of society, Rembert is more concerned with being a man of his word.
Our interview together is a perfect example. Here's a little peek behind the curtain:
A few weeks in advance of our chat, Brandon and I had an initial conversation to get to know one another better and for me to have the opportunity to better understand who he is and what makes him tick. We ended our time together by agreeing to talk again in a few weeks on a Wednesday morning at 10:00 am for our official interview. That Wednesday morning just so happened to be September 16, the morning after Hurricane Sally went through his hometown of Pensacola, Florida. Thankfully Brandon and his family were safe, but they were left without power. Most people would (understandably) ask to reschedule the interview since, oh I don't know, you need power for internet and to charge a phone. But not Brandon Rembert. He's a man of his word and wouldn't dream of missing an appointment, even under less-than-desirable conditions. So what did Brandon do? He whipped out a flashlight and we still had our interview on Zoom, with his face lit up by the soft glow of the battery-powered torch.
That friends, is an example of selflessness and conviction. But that's just part of who Brandon Rembert is.
Let me tell you the rest of the story.
Brandon Antonio Rembert was born on October 17, 1998, to Orenthal and Cheryl Rembert in Pensacola, Florida, where they still live today. He is the second oldest of seven children. The three oldest children are boys and the two youngest are boys, with two sisters sandwiched in between. You can be sure that no boys ever messed with the Rembert girls.
Rembert graduated from Booker T. Washington High School as a 17-year-old. On the baseball field, he started since his sophomore year and had a "decent senior year" (.333 BA, 12 RBI). Brandon says the he "was okay, but not a superstar".
He was good enough to catch the attention of Faulkner University, an NAIA school in Montgomery, Alabama, where he was a member of the JV Baseball team during his freshman year. "I was actually on the JV team at Faulkner, I wasn't even on the Varsity," Rembert recalls.
From there, Rembert transferred to Coastal Alabama Community College – Brewton for his sophomore year. At Brewton, he hit .274, had 26 hits, 13 runs scored, 10 RBI, a double, and a triple.
This is where things get interesting.
From NAIA JV Team to Division I
At some point in fairy tale stories like this one, we all have to stop and ask the obvious question: "How on earth did this person go from Point A to Point B?" In this case, "Brandon, how did you go from playing on the JV team at an NAIA school to getting MLB Draft buzz as a Division I baseball player?"
Rembert replied, "There was a lot that went into it. I just got better skill-wise; I really progressed. I really got stronger. I just got better, honestly. I was younger coming into college. I was 17, so getting older had something to do with it, too. I started to come into my body. I got stronger and wiser; my baseball IQ increased. I always had the skill and the talent but going into my junior year it all started to come together. All the hard work started paying off. I focused on what I needed to focus on and progressed."
In high school, Brandon had some initial conversations with Alcorn State, a Division I college in Alcorn, Mississippi. Alcorn is part of the SWAC conference and an HBCU (Historically Black Colleges and Universities) institution. Rembert reignited this relationship and was ultimately able to go to play baseball at Alcorn State.
While at Alcorn, things began to click, and he led the team with a .345 batting average and .462 on-base percentage in his first year.
Due to his junior year performance, Rembert earned Preseason All-SWAC 1 Team honors heading into his senior season (2020). Unfortunately, as is the story for all of us in 2020, this is when the world stopped. After just 12 games, Alcorn State's 2020 baseball season was halted.
Instagram user @b_rembert
COVID-19 Cancellation
Rembert recalled for me the moment of learning about the suspension of the 2020 season:
"It was kind of crazy. We were getting ready to play Alabama State for a weekend series. We were about to leave and our coach told us all to go home. I didn't know what was going on, so I went home. Maybe a week after that they told us the whole, entire season was going to be canceled."
Rembert continued, "After that, we were sitting at home trying to see if we were going to get our season back, if we were not going to get our season back, if we were going to pick up later in the summer. It was a lot of confusion going on with everybody, including with the coaches. The coaches didn't know anything. The people in the conference didn't know anything."
How on earth was Brandon able to process through this entire experience, not knowing what was waiting next around the corner?
"Just take it day-by-day. That's all I could really do. Just living in the moment, living in the present. Let's focus on the present and not worry too much about the future."
Thankfully, he didn't have to wait too long to find out what that future would hold. On Monday, March 30, the NCAA Division I Council announced that member schools could "provide spring-sport student-athletes an additional season of competition and an extension of their period of eligibility."
The news was great. Rembert's baseball dreams were still alive. He had one more shot at playing college baseball.
And just how did he find out about this extra year of eligibility?
"I found out through social media. The NCAA put out something about giving the players back their eligibility. It was really exciting. I was excited to be able to get that year back because I didn't want to end my senior season playing 12 games. I was really excited to get another opportunity to play in college again. It was a relief."
Brandon Rembert is back in school for the 2020-21 academic year. Having finished his undergraduate work, he is now pursuing a master's degree in Athletic Administration – Coaching and Teaching at Alcorn State. He is looking forward to his "super senior" baseball season.
For Rembert, 2021 will be the definitive last time around the block; his last opportunity to play college baseball. Given this second opportunity to make a lasting impression, he has some lofty aspirations for himself and his team.
UNC vs NC State Preview
Clutch shots help No. 17 UNC upset No. 13 Duke, 61-56
UNC vs. Duke Preview
Brandon believes this Alcorn State squad has an opportunity to make some noise within the conference. "As a team, I feel like, a SWAC Championship, definitely a conference championship."
He carried on with his personal goals: "For myself, I have some big aspirations. I feel like I could be Player of the Year. That's one of my big goals is to be conference player of the year and to put myself in a position to be picked up for the draft. Those are really my three big, main goals: a conference championship, SWAC Player of the Year, and to get drafted."
Yep, that's right, you heard correctly. This senior year will carry a different set of expectations: the Major League Baseball Draft. Rembert, ever the consummate teammate, is fully focused on the success of the team, but one of the other byproducts of his explosive junior year is the possibility of being drafted in the 2021 MLB Draft.
On June 8, Black College Nines put out a Pre-MLB Draft Report that included Rembert as a name to watch for as a potential Free Agent signee in the 2020 Draft. This means that a stellar "super senior" season could really put Rembert onto some draft boards.
Draft Prep
In order to improve his draft stock, Rembert will need to work on a couple of different aspects of his game in preparation for the 2021 season. As a corner outfielder, he needs to add both power and speed.
"Really I need to hit for more power; especially if I want to play a corner [outfield] position. I feel like I have power, but I need more over-the-fence power. I need to put up really good power numbers. And speed. I feel like my speed has to get a little better. I'm not slow at all, but being able to steal more bases is going to help my stock go up. Really those two things: speed and power."
To grow both of these areas of athleticism appropriately is to strike a difficult balance.
How does an athlete add enough power without bulking up so much that it affects their speed? On the flip side, how does an athlete work on speed and flexibility, while still maintaining enough bulk to hit for power?
"It's tough because you want to be able to be strong, but still be flexible and be able to move well. You have to find that balance with training. Right now, I'm not lifting as heavy as I used to. I'm still keeping my strength but I'm not too bulky. I'm keeping my mobility. Just trying to find that in-between."
Managing Expectations and Leading
Brandon Rembert is a young man with big goals for the upcoming baseball season. With big goals come big expectations that he will have to learn to manage. How will he go about doing so?
"It's tough sometimes. I put a lot on myself. I feel like the work that I put in will speak for itself. In working hard, it helps me not to be nervous because I know that I've put in the work and. I've practiced it so many times. In game situations I know I can do well because I've put myself in the best position. Expectations can be hard sometimes, but I like it. It fuels me. I like to live up to them.
What about helping lead a team through these expectations? How will Rembert handle a leadership capacity while navigating the lofty goals for 2021?
"Really to hold everybody accountable, including myself. I try to lead by example. I always have to be doing the right things at the right time and holding myself and others accountable. I feel like that's the best way for me. I'm not really a big vocal guy, but I am a lead-by-example-do-the-right-thing kind of guy. Especially with the younger guys, the freshmen coming in. They're going to look up to us; to me as a fifth-year senior to show them the ropes. Doing the right thing on and off the field, in the classroom, in the weight room."
Navigating Race Issues in America
Rembert has a unique and important insight as a black man in America walking through an era in our country where conversations surrounding race have once again hit the zeitgeist of culture (although in all reality, these conversations should be constantly ongoing as we learn to live in unity and love and respect with one another). I was grateful for Brandon's willingness to invite me into some of his life experience and shed some wisdom on how we can continue to move forward with one voice.
"It's definitely tough being a black man in America right now. These things have been going on for a long time," Rembert mused. "Being a baseball player and being black is definitely different because we're the minority in the sport. I feel like being on the team, we don't see color in baseball. I haven't met any racist baseball players. We were all brothers on the field. If we could do that, but as a country, we'd be good. Just treat each other all the same, just love each other. Because that's what we do on the team. We have a lot of different races on our team, but we treat each other the same. We don't see our color; we love each other because we're brothers. We're all fighting for one common goal. I feel like if we could come together like that in America, we could make some huge strides. We've been making some strides, but I feel like we have a long way to go. If we just love one another and treat everybody the way they should be treated and not see them as less than. I feel like we would be okay if we'd do that. We're trying to work on that in America. I think Americans could take a lot from athletes. There are all these different races on one team and we're all for one thing."
I'm so grateful for Brandon's honesty here and his willingness to be vulnerable with his answer. But how exactly do we go about accomplishing his hopes for his country? How do we continue to make the strides that he speaks of? Rembert offers a few suggestions:
"People need to put themselves in other people's shoes. We are scared about what we don't know. People should go and get to know these people of different races and different communities and genuinely get to know them and see what they experience. I feel like that would help a lot." He continued, "As a team, we're in each other's lives every day. We really get to know everybody personally. That makes us closer. If we do that in America, maybe one or two people, just really get to know them as a person."
HBCU Revolution
Around the country, we've seen more and more high-level athletes seriously considering an HBCU for their college choice. A recent example is class of 2020 five-star basketball player Makur Maker, who chose Howard University. Others, while not ultimately choosing an HBCU, have included them amongst their top choices. As someone who attends an HBCU, I was curious to hear Rembert's thoughts on the recent trend.
He responded, "More athletes are going the HBCU route. I don't have a problem with it, I'm a fan of it. We even had a guy from Vandy, football-wise, transfer over to our school. It's definitely something different. So we're going to see if they can start that revolution for HBCUs."
2020-21 Academic Year and Baseball Season
It's been something of a turbulent beginning to the school year for Rembert. He started off the first three weeks of the semester at home, doing school online, and then was allowed to move to campus. However, they then had a team meeting where he learned that they wouldn't be able to practice until October 15. Due to that news, he had to move back home until the team is able to begin conditioning in late September. In the midst of being back home, Hurricane Sally hit his community.
Now Rembert awaits being able to move back to campus (again!) where he looks forward to what will hopefully be a typical (second) senior year. The projections he's hearing right now are that the baseball season should be able to proceed as normal and that they even already have a couple of games on the books.
For many college students, the events of Brandon Rembert's college experience would be debilitating. Not receiving a scholarship to a big-time college. Having to work your way up through the ranks. Dealing with your senior season being cut short. Learning that you would receive an extra year of eligibility. Moving home and back to campus and back home and back to campus again. It's exhausting just to type all these things.
As you talk to Rembert you begin to notice an ease about him. He has a calm and peace not shared by many people his age. He attributes all of this to his faith and says he wouldn't be where he is today without it.
Perhaps it's this very faith that gives Brandon the selflessness and joy so evidently on display when you talk to him.
Perhaps it's this faith that causes him to desire to pave the way for others.
Why is it important to Brandon Rembert to carve a path for those looking to him as an example? Why does is it important to him to encourage and give hope to people?
He says, "I feel like I was always an underdog. I went from NAIA JV to Division I baseball player. So I went from the lowest to the highest level of baseball. I feel like that story could encourage people to let them know that they could do it, too. I'm not the biggest person either; I'm 5'9", 185. Height doesn't matter in baseball; skill and your heart matter. If you want something, you can get it. I feel like anything's attainable and I'm a living witness of that. This could really inspire people. I went from the bottom to the top, being my size. When I was younger, I always used to look for stories like that: people my height making it big. That's why I like Mookie Betts. He's my size, my height. He's not that big and he's making $300 million. I want somebody to hear this, because they could do it, too. They could be the next Mookie Betts or they could be in the situation I'm in right now."
What would society be like if we were all a little more concerned about bringing hope to the world around us?
What would things be like if we focused on helping others find their own way?
What if we planted a tree today that someone else could sit under the shade of years from now?
That's what Brandon Rembert is doing.
Brandon may get drafted, he may not.
Brandon may play professional baseball, he may not.
Regardless of the outcome of his baseball career, Brandon Rembert will succeed at life.
Because he cares about people.
Because he puts the well-being of others above himself.
Because his desire is to bring people together from all different walks of life.
Because his hope is to promote unity.
I don't know about you, but I'm going to take some time to pause and reflect on how I can bring hope to those around me by being an example.
I'm going to strive to be a little more like Brandon Rembert today.
You can follow us for future coverage by clicking "Follow" on the top right hand corner of the page.
Send Isaac Schade an email to talk more about this article.
Follow us on Twitter: @SI_Heels | @isaacschade
Please post any comments below!
Follow isaacschade
By Bryant Baucom Jan 21, 2023 2:57 PM EST
By Asheebo Rojas Jan 20, 2023 2:04 PM EST
Suns' Cam Johnson scheduled to return on Thursday
By Bryant Baucom Jan 19, 2023 10:54 AM EST
UNC vs Boston College Preview
Georgia State safety to transfer to North Carolina
2024 five-star Ian Jackson commits to UNC
UNC vs. UVA Preview


LONDON, Jan. 2 (Reuters)— The average rate of discount it today's tender of British reasury 91‐day bills fell to 590 per cent from 7.650 per ent last week. This week's 100‐million offer met applica ions of £230,610,000. Next yeek £100‐million of such bills ??ill be offered, replacing £110‐ million of maturities.


text:
- import PouchDB (optionally with plugins)
- inject configured instance via helper in objects:

```javascript
import { injectPouchDB } from 'ember-cli-use-pouchdb';

export default Ember.Route.extend({
  db: injectPouchDB({name: 'test'})
});
```

- use `memory` adapter by default when in testing

## Installation

`ember install ember-cli-use-pouchdb`

## Usage

Import the helper: `import { injectPouchDB } from 'ember-cli-use-pouchdb';`

**If** used by a container object (i.e. not created via `.create()`) and
**if** instantiated in testing mode, the addon will select the `memory` adapter
of PouchDB by default, to isolate your testing data from your development data.
This can be overriden by setting
`ember-cli-use-pouchdb.useMemoryAdapterInTests` to false in the environment config.

Additional plugins can be installed by setting `ember-cli-use-pouchdb.plugins`
in `ember-cli-build.js` (!!!) to an array of plugins (see [Browser
    adapters](http://pouchdb.com/adapters.html) for available plugins). Note
that the addon does not automatically add the `memory` adapter, so unless you
set the option from above to `false` you should have the `memory` adapter in
there.

## Developers: Installation

* `git clone` this repository
* `npm install`
* `bower install`

## Running

* `ember server`
* Visit your app at http://localhost:4200.

## Running Tests

* `npm test` (Runs `ember try:testall` to test your addon against multiple Ember versions)
* `ember test`
* `ember test --server`

## Building

* `ember build`

For more information on using ember-cli, visit [http://www.ember-cli.com/](http://www.ember-cli.com/).

redpajama_set_name: RedPajamaGithub


This fabulous Table Kadai enables you to barbecue directly at the table whilst sitting and chatting with friends. Comes complete with a set of 4 hand-crafted skewers so everyone can cook their kebabs exactly how they like.
Versatile and fun to use.
Includes Table Kadai, Stand, Grill, Tongs, Set 4 Skewers with Canvas Pouch and heatproof Cork Mat.
Requires 4cm of sand in the base of the Kadai to help insulate the heat from the surface of the table.
Table Kadai: 30cm Diameter x Height 16cm with stand.


10K race and 5k walk & family fun run ... Calling all running enthusiasts, walkers & families with kids! Come and join in on our Halloween themed trick or trot event with prizes for the best fancy dress on the day. A fun event which promotes healthy families with treats galore!


text:
Q: mentioning one out of the group in comparison After the teacher, X is the most knowledgeable among all students.

Is this sentence ok? I feel something weird in this:
Using 'among all students' can this student (x) be compared while following the phrase 'after the teacher'? I don't think so; because 'the teacher' is not part of the group (all students), right? X's level of knowledge is the highest to all but his level is lower than that of the teacher.
After the teacher, X is the most knowledgeable as far as the students are concerned.

Does it look ok?

redpajama_set_name: RedPajamaStackExchange


text:
Gabriel Loire
French painter
Church of St Lazare des Lèves, Eur-et-Loir, France
Gabriel Loire (April 21, 1904 – December 25, 1996) was a French stained glass artist of the twentieth century whose extensive works, portraying various persons or historical scenes, appear in many venues around the world. He founded the Loire Studio in Chartres, France which continues to produce stained glass windows. Loire was a leader in the modern use of "slab glass" (French: dalle de verre), which is much thicker and stronger than the stained glass technique of the Middle Ages. The figures in his windows are mostly Impressionistic in style.[1]
2 Commissions
2.1 Post-war work
2.2 Saint Angela Merici Catholic Church in Pacific Grove, California
2.3 Episcopal Church of the Good Samaritan
2.4 St. Andrew's Wesley Church
2.5 Whatley Chapel
2.6 St Augustine's Chapel
2.7 Thanks-Giving Square
2.8 St. George's Cathedral
2.9 Christ Church in Hamilton, Massachusetts
2.10 First United Methodist Church, Alexandria, Louisiana
3 Gallery of Gabriel Loire's works
Life[edit]
Loire was born in Pouancé, France, on April 21, 1904. After completing his schooling in Angers in 1926, he went to Charles Lorin stained glass workshop in Chartres, France. In 1946, he founded his own stained glass studio there, which continues under the direction of his son Jacques Loire and grandsons.[2]
He died on Christmas Day, December 25, 1996, shortly after finishing a design for a new window.[1]
Commissions[edit]
Loire often expressed the view, "La paix donne la joie" ("Peace gives joy") and particularly liked working with shades of blue, which he said represented to him the colour of peace.[1] His stained glass artistry, blending modern and traditional elements, attained wide acceptance, as indicated by the considerable output of the Loire Studio displayed around the world.[1] In addition to more than 450 installations in France, Loire's works are found in Scotland, Germany, Ireland, South Africa, Morocco, Japan, Chile, Canada, Australia and the United States of America.
Post-war work[edit]
Some of his important commissions were for churches rebuilt after destruction in World War II, in particular the Kaiser Wilhelm Memorial Church (Kaiser-Wilhelm-Gedächtniskirche) in Berlin, Germany (1960) and the Church of St. Walberge, Xertigny, Lorraine, France (1951–1952).
His greatest post-war work is in Saint Paul's Church, Whiteinch, Glasgow (1960). It consists of 162 Square metres of curved window set in cement and embedded with chipped glass. The main panels depict the life of Saint Paul and are ably supported in the side altar by panels of the Virgin and the roof of the Baptismal font. The church building is Category B listed. [3]
The Holy Name Church, Oakley, Fife, (1958), notable features include the stained glass windows and the carved Stations of the Cross are also by Gabriel Loire.[4]
Our Lady of Mount Carmel RC Church, Kilmarnock, Ayrshire (1963). Large window above main entrance, also designed the windows in the octagonal baptistry.[5]
St John's RC Church, Stevenston, Ayrshire, windows depicting biblical scenes, (1963).[6]
He has other works in the Church of Our Lady of Perpetual Succour, Broomhill, Glasgow (1965). Though the technique here is not of chipped glass but more of painted glass.[3]
Saint Angela Merici Catholic Church in Pacific Grove, California[edit]
Gabriel Loire was commissioned to create seventeen windows for a new brick church building, constructed in 1957. The new Church was designed to combine an accessible, modern liturgical environment with minimalism that was part of midcentury architecture. At the front, above the main doors of the church is triptych window which depicts the ministry, crucifixion, and ascension of Jesus. Along the right side of the nave are seven windows depicting: Saint Pius X; Saint Patrick; Our Lady of Fatima; Saint Anthony of Padua; the Virgin Mary; Saint Joseph and the Child Jesus; and Saint Therese, Child of Jesus. Along the left side of the nave are seven windows depicting: Saint Angela Merici at evening prayer with family; Saint Angela Merici praying before the Assumption of Mary; Saint Angela Merici's vision of ten virgins; the Healing of Saint Angela Merici; Saint Angela Merici founding the Ursuline Order; Saint Dominic; and Saint Ignatius of Loyola.[citation needed]
Episcopal Church of the Good Samaritan[edit]
In 1963, the Episcopal Church of the Good Samaritan in Corvallis, Oregon, commissioned Loire to design stained glass chapel windows that expressed the congregation's dedication to the ministry of healing, funded in part by contributions from physicians in the parish. In 1968, the church contracted 49 additional windows for the main sanctuary representing "The Revelation of Truth from God through Human Personality."[7]
St. Andrew's Wesley Church[edit]
For St. Andrew's Wesley Church in Vancouver, Canada, Loire created three different commissions: in 1969, a set of six windows dedicated to women in the Bible; also in 1969, "The Great Commission", based on Mark 16:15 "Go ye into the all the world"; and in 1981, a set of eight windows based on Romans 9:4–5.[citation needed]
Whatley Chapel[edit]
Other notable works include Loire's stained glass windows designed in 1962 for Whatley Chapel at Johnson & Wales University in Denver, CO, and in 1980 for Salisbury Cathedral in England, as well as in 1967 for Grace Cathedral, San Francisco. In 1958 he provided an extensive and "remarkable" scheme of dalle de verre glass for St Richard of Chichester Roman Catholic Church in Chichester, West Sussex.[8]
St Augustine's Chapel[edit]
Two large and striking windows were completed for St Augustine's Chapel in Cork, Ireland in about 1972. These windows measure 12.5 metres in height and about 2 metres wide; the glass is solid coloured, not stained, glass. This glass is approximately 26 millimetres thick and is described as "dalle-de-verre", flagstones of glass, set in concrete and forming an integral load-bearing part of the building. Please see thumbnails.[citation needed]
Thanks-Giving Square[edit]
In 1976 Loire completed the "Glory Window" for Thanks-Giving Square in Dallas, Texas. The window, which contains 73 panels of faceted glass, covers the spiral ceiling of non-denominational chapel to create one of the largest horizontally-mounted stained glass windows in the world. Lower panels feature varying shades of blue. As the spiral continues inwards and upwards the colors become warmer and brighter until reaching the center where 60 feet above the floor the panels give way to a circle of beaming yellow light. Taking its name from Psalm 19, Loire meant this progression "to express life with its difficulties, its forces, its joys, its torments, and its frightening aspects. Bit by bit, all of that gives way to an explosion of gold where the summit is reached." An image of the "Glory Window" was chosen for the official United Nations stamp in 2000 during the International Year of Thanksgiving. It was also featured in the 2011 Oscar-nominated film The Tree of Life.[9]
St. George's Cathedral[edit]
His celebrated Christ in Triumph over Darkness and Evil was dedicated in 1982 at St. George's Cathedral in Cape Town, South Africa, in memory of British war hero Earl Mountbatten of Burma, the last Viceroy of India.[10]
Christ Church in Hamilton, Massachusetts[edit]
Gabriel Loire created a suite of magnificent windows for Christ Church (Episcopal) in Hamilton, Massachusetts.[citation needed]
First United Methodist Church, Alexandria, Louisiana[edit]
The four windows on the left of the nave at First United Methodist Church in Alexandria, Louisiana, designed by Loire depict scenes from the life of Christ: The Baptism, The Temptation, The Ministry, and his Crucifixion. The triangular west window by Loire is entitled Cycle of Celebration and depicts the Christian community ascending the "holy hill of the Lord", based on Psalm 43.[11]
Crowell Chapel - The window which lights the mosaic is also by Loire and illustrates the theme of Christian service, using the parable of the Good Samaritan.
The Baptism of Christ
The Temptation
Christ in ministry to others
The Crucifixion of Christ
West Window
Gallery of Gabriel Loire's works[edit]
Prisoners of conscience window in the Trinity Chapel of Salisbury Cathedral, UK (1980)
Christ in Triumph over Darkness and Evil, St. George's Cathedral, Cape Town, South Africa (1982)
^ a b c d Cox, Margaret Ann (November 2006). "Loire Studio – a French Connection"". Just Words. Dominican Sisters of Springfield, Illinois.
^ Debendère, Véronique; Debendère, Xavier (2005). Gabriel Loire, L'œuvre d'une vie (in French). Paris: Somogy. ISBN 978-2-85056-850-3.
^ a b Historic Environment Scotland. "Dumbarton Road, Whiteinch, St Paul's Roman Catholic Church Including Boundary Walls, Gatepiers, Gates and Railings, Glasgow, Glasgow (Category B Listed Building) (LB48412)". Retrieved 31 August 2020.
^ "Church of the Holy Name, Oakley". Scotland's Churches Trust. Retrieved 20 January 2019.
^ "Our Lady of Mount Carmel, Kilmarnock". Scotland's Churches Trust. Retrieved 20 January 2019.
^ "St John's, Stevenston". Scotland's Churches Trust. Retrieved 20 January 2019.
^ "History – Church of the Good Samaritan". goodsamchurch-episcopal.org. Retrieved 2018-03-30.
^ "English Heritage Review of Diocesan Churches 2005 (Extract): St Richard of Chichester, Chichester" (PDF). English Heritage. 2005. Retrieved 4 March 2012. [permanent dead link]
^ "Self-Guided Tour – Thanks-Giving Square". Archived from the original on 2017-05-26. Retrieved 2016-11-16.
^ "The Great West Window of St. Georges Cathedral". St. Georges Cathedral. 2006. Archived from the original on 2007-06-25.
^ "First United Methodist Church". Alexandria, Louisiana. Retrieved 2 May 2020.
Loire Studios official website
Stained glass windows, Grace Cathedral, San Francisco, California
BNF: cb11913236b (data)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Gabriel_Loire&oldid=984057178"
French stained glass artists and manufacturers
20th-century French painters
20th-century male artists
French male painters
Deaths in Chartres
Articles with dead external links from January 2017
Articles with permanently dead external links
Wikipedia articles with ULAN identifiers


text:
Q: My app is force closing when clicking on button to switch to another activity. here i am putting my code i am trying json parsing from url by replacing registration no, DOB, roll no by user. but when i click on submit button to switch to result activity. its stops working
MainActivity.java
 public class MainActivity extends AppCompatActivity {
 private String Regno;
 private String Rollno;
 private String Dob;
 private EditText regno;
 private EditText rollno;
 private EditText dob;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    regno=(EditText)findViewById(R.id.Registrationid);
    rollno=(EditText)findViewById(R.id.Rollno);
    dob=(EditText)findViewById(R.id.Dob);

   Button submit =(Button)findViewById(R.id.Submit);
    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Regno=regno.getText().toString();
            Rollno=rollno.getText().toString();
            Dob=dob.getText().toString();
            Intent i= new Intent(MainActivity.this, Resultview.class);
            startActivity(i);
            i.putExtra("Regno",Regno);
            i.putExtra("Rollno",Rollno);
            i.putExtra("Dob",Dob);
        }
    });
  }
}

ResultActivity.java
public class Resultview extends AppCompatActivity {

Intent intent= getIntent();
String Regno = intent.getExtras().getString("Regno");
String Rollno = intent.getExtras().getString("Rollno");
String Dob = intent.getExtras().getString("Dob");
private final String url ="http://example.ubs.in/utpn/api/mobileroll/enquiry/"+Rollno+"/"+Regno+"/"+Dob+"/mobileapi";
private static final String TAG_NAME="name";
private static final String TAG_ROLL="roll";
private static final String TAG_REGNO="regno";
JSONArray result=null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_resultview);
                    ServiceHandler sh = new ServiceHandler();
                   JSONObject json = sh.getJSONFromUrl(url);

                        try {
                            result=json.getJSONArray(TAG_NAME);

                            for (int i = 0; i < result.length(); i++) {
                                JSONObject r = result.getJSONObject(i);

                                String name = r.getString(TAG_NAME);
                                TextView nameset=(TextView)findViewById(R.id.nameset);
                                nameset.setText( name);
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
}

A: Here is the problem:
...
startActivity(i);
i.putExtra("Regno",Regno);
i.putExtra("Rollno",Rollno);
i.putExtra("Dob",Dob);

once you start the activity is to late to put extras...


Published 04/24/2019 12:03:06 pm at 04/24/2019 12:03:06 pm in Shower Door Rubber Gasket.
shower door rubber gasket shower door seal replacement shower door sweep shower door trim replacement shower door sweep replacement shower shower door seal shower screen seal glass thickness mm wing length mm gap hnnhome shower screen seal glass thickness mm gap to seal mm.
shower door seal free delivery showerseal uk ltd seal mm glass gaps up to mm, shower door sweeps shower door bottom seal shower tub parts shower door bottom seal sweep x flat gray shower door bottom seal, magnetic door seal door gasket steel casing with fire stop and magnetic door seal shower door seal strip rubber magnetic seal strip shower door shower door seal , mm glass shower door seal strip plastic sealing shower mm glass shower door seal strip plastic sealing shower enclosures in bathroom accessories china shower door glass sealin bath screens from home , door rubber seal bottom wood garage door nail on rubber bottom seal door rubber seal bottom wood garage door nail on rubber bottom seal shower door rubber bottom, shower rubber seal or degree sliding glass door shower rubber shower rubber seal or degree sliding glass door shower rubber magnetic seal glass shower door rubber, wholesale door window glass seal online buy best door window glass magnetic frameless shower strongdoorstrong rubber strip gasket strong, china degree clear plastic shower door pvc rubber seal strip degree clear plastic shower door pvc rubber seal strip, glass door rubber seal shower water guard glass shower door rubber glass door rubber seal shower door rubber seal swingeing seals for glass shower doors shower door , exterior door bottom seals exterior door bottom seal replacement how exterior door bottom seals how to seal an exterior door shower doors sweeps a charming light exterior door bottom seals , rubber gasket home depot sink shareskillsinfo rubber gasket home depot shower door rubber shower doors showers the home depot for idea rubber gasket .


text:
Q: How to make a standard Traveling Salesman Solver into a Collect Price Solver for or-tools? I have set-up a fine solver for *what is the best route to visit 1000 nodes" in my graph.
But I would like to solve the question "what is the shortest route to visit any 500 of 1000 given nodes in my graph".
I think, I have to add disjunctive constraints somehow to my python RoutingModel, but how?
This is a rough sketch of my current solver:
from ortools.constraint_solver import pywrapcp

nodes = readNodes()      # graph nodes
matrix = readMatrix()    # costs between edges, distances
assert len(nodes) == len(matrix)
# Create routing model
routing = pywrapcp.RoutingModel(len(nodes), 1)
parameters = ...
# Setting the cost function.
distance = lambda p,q: matrix[p][q]
routing.SetArcCostEvaluatorOfAllVehicles(distance)
# --> here is probably more setup needed <--
# Solve, returns a solution if any.
assignment = routing.SolveWithParameters(parameters, None)
if assignment:
  # Solution cost.
  print assignment.ObjectiveValue()
  # Inspect solution
  path = ...
  printSolution(nodes, table, path)
else:
  print 'No solution found.'


The staff at Bramley House Residential Home have provided a personal yet professional service for more than 35 years. Based in a lovely location, all our experienced staff specialise in full time care, putting your mind at ease that your loved one is taken care of. Our full range of services as part of our quality residential care includes home-cooked meals and plenty of activities.
Contact our family-run, private care home in Dorking, Surrey, for residential care to the highest standard.
Receive peace of mind that your loved one is in safe and caring hands. At Bramley House Residential Home in Dorking, Surrey, we offer complete residential care for those who just cannot look after themselves anymore. With more than 35 years of experience, all our staff are experienced and CRB-checked along with being truly compassionate, kind, and considerate while providing quality day care and respite care. Our private, family-run care home is also rated GOOD by CQC (Care Quality Commission).
We offer respite care for when you need a well-deserved break or a holiday. With a varied activity list, there is also a lovely garden with a patio for those beautiful sunny days.
In the heart of the beautiful Surrey countryside, Bramley House is an elegant, turn-of-the-century property set in 1½ acres of wooded, evergreen gardens. The owner has done much to retain its original atmosphere of gracious living. Residents can enjoy the peaceful surroundings of the Edwardian conservatory, the elegant drawing room equipped with a library and colour television, and the serenity of the secluded gardens rich in mature trees, shrubs, and wildlife.
All residents have the comfort and privacy of a well-appointed private room. Each one has vanity units, central heating, and television. Residents are welcome to bring their own furniture, excluding wardrobes, however most rooms have their own private bathroom and en-suite facilities.
There are comfortable reception rooms as well as a light and airy conservatory where we tend to gather to have chats and play scrabble. A Stannah™ stairlift gives easy access to the upstairs. Also, our pet-friendly home has been awarded a 'Good' status during inspections.
The staff at Bramley House believe in creating a relaxed, informal setting for the residents who wish to retain their independence yet require the highest standards of care and attention.
A nurse call system operates in each room, providing 24-hour emergency service. Our highly trained staff are on call 24 hours a day, most of whom have, or are, working towards a recognised NVQ qualification.
Bramley House Residential Home maintains a strong emphasis on training. All staff are required to undertake CRB and POVA (Protection of Vulnerable Adults) checks prior to employment.
With personal included as part of our comprehensive service, we also welcome visitors who provide hairdressing and chiropody.
As a friend or relative, you are welcome to visit at any reasonable time on any day. You can also join us for meals, if you give us a couple of days' notice.


My husband invited me to lunch last week, he suggested several places near my office one being Guillermo's. He always swears by one of his coworker's recommendation, which is pretty accurate, most of the times. I've passed through that place so many times and I was always curious to stop by, but never did.
It is a big old yellow house with a deck, big TV's, a full bar and patio tables. I thought it was for downtown runners or cyclist because I couldn't see any parking space. After researching I realized the parking was on the back of the building and the place is bigger than it looks.
This is an Italian restaurant and although I was trying to be "good" and order salad, I couldn't resist the lasagna! I ordered the Mushroom and Spinach Lasagna, it comes with a house salad. The salad was amazing! It had pineapple, grapes, feta cheese, and the dressing was some sort of vinaigrette. At that point, I was regretting not ordering the salad, since it was delicious. Then the lasagna came out and it was a big portion. Half with spinach and marinara and the other half with mushrooms and creamy marinara. It was very tasty! I couldn't finish it so I took it home. Here is the complete ingredient description: Classic lasagna layered with our white wine pan sautéed spinach, mushrooms, house blended cheeses of ricotta, parmesan, romano, mozzarella and a touch of goat cheese. Complemented by a duo of marinara.
My husband ordered the Chicken Cilantro sandwich. I forgot to mention that my lasagna came with Foccacia bread, as well as the sandwiches. I did not try his sandwich, but he ate it all and said it was really good. Here is their Lunch Menu.
Overall I did enjoy this place. One of my observations is that they use a lot of plastic utensils, which I hope they recycle. Other than that I think I will be visiting them during summer and sip some margaritas on their deck! Guillermo's is located at 618 McCullough Ave. San Antonio, TX 78215.


When you launch a new business venture, you have a host of issues vying for your attention. One of the most significant business and legal issues you face at the beginning of an entrepreneurial journey is the selection of your business form. You must consider asset and liability protection, tax impacts and operational requirements, as well as potential for a viable exit strategy. Advice from an experienced attorney can be invaluable as you make these significant business decisions.
The Business and Transactional Group at Lyons Gaddis can help you understand the benefits and limitations of your entity choices – whether you select a C-Corporation, S-Corporation, Limited Liability Company (LLC), Limited Liability Partnership (LLP) or some other business form. At Lyons Gaddis, our lawyers provide experienced representation and guidance in the selection of an appropriate business entity for individuals, partnerships and established business operations.
Setting up the business is easy. The hard part is succeeding. Depending on your needs, we help generate legal documentation that includes shareholder, partnership and employment agreements. We assist family-owned companies with succession planning in order to make sure the business can continue to operate through changes in ownership. In addition, we provide ongoing legal counsel as needed for disputes that involve customers, vendors and employees, and we provide advice on tax problems and lawsuits that can threaten even the most successful of businesses. We can assist you with contracts, mergers, leases, sales, purchases and other transactions. We can act as your "outside in-house" counsel, advising you on a wide variety of business matters.
The choice of entity for your business will have long lasting legal and tax implications. Contact one of our Business Attorneys by calling 303-776-9900 or by emailing us directly.


text:
Писак — название нескольких географических объектов:
 Писак — город в Перу, где расположена древняя крепость инков.
  — округ в перуанской провинции Куско с центром в городе Писак.
  — туристический посёлок в Хорватии.

См. также
 Писака
 Писек

redpajama_set_name: RedPajamaWikipedia


The critical field Hs corresponding to the emergence of vortices in a superconductor without a threshold is found near the transition temperature and in limit as for an arbitrary value of the depairing factor Γ. In superconductors of the second kind, this field value coincides with the absolute instability point of the Meissner state. In large-κ superconductors, the order parameter tends to zero on the surface of the superconductor if the external magnetic field reaches the value Hs. We obtain that Hs=Hcm (where Hcm is the thermodynamic critical field) for an arbitrary value of the depairing factor Γ in the temperature region near Tc and at T=0.


text:
using System;
using System.Xml;
using System.IO;
using System.Collections.Generic;
using System.Text;
using System.Security;
using System.Globalization;
using System.Text.RegularExpressions;
using OfficeOpenXml.VBA;
using System.Drawing;
using OfficeOpenXml.Utils;
using System.Windows.Media;
using System.Windows;
using Ionic.Zip;
using OfficeOpenXml.FormulaParsing;
using OfficeOpenXml.FormulaParsing.Excel.Functions;
using OfficeOpenXml.FormulaParsing.LexicalAnalysis;
namespace OfficeOpenXml
{
	#region Public Enum ExcelCalcMode
	///
	/// How the application should calculate formulas in the workbook
	///
	public enum ExcelCalcMode
	{
		///
		/// Indicates that calculations in the workbook are performed automatically when cell values change.
		/// The application recalculates those cells that are dependent on other cells that contain changed values.
		/// This mode of calculation helps to avoid unnecessary calculations.
		///
		Automatic,
		///
		/// Indicates tables be excluded during automatic calculation
		///
		AutomaticNoTable,
		///
		/// Indicates that calculations in the workbook be triggered manually by the user.
		///
		Manual
	}
	#endregion

	///
	/// Represents the Excel workbook and provides access to all the
	/// document properties and worksheets within the workbook.
	///
	public sealed class ExcelWorkbook : XmlHelper, IDisposable
	{
		internal class SharedStringItem
		{
			internal int pos;
			internal string Text;
			internal bool isRichText = false;
		}
		#region Private Properties
		internal ExcelPackage _package;
		private ExcelWorksheets _worksheets;
		private OfficeProperties _properties;

		private ExcelStyles _styles;
		#endregion

		#region ExcelWorkbook Constructor
		///
		/// Creates a new instance of the ExcelWorkbook class.
		///
		/// <param name="package">The parent package</param>
		/// <param name="namespaceManager">NamespaceManager</param>
		internal ExcelWorkbook(ExcelPackage package, XmlNamespaceManager namespaceManager) :
			base(namespaceManager)
		{
			_package = package;
			WorkbookUri = new Uri("/xl/workbook.xml", UriKind.Relative);
			SharedStringsUri = new Uri("/xl/sharedStrings.xml", UriKind.Relative);
			StylesUri = new Uri("/xl/styles.xml", UriKind.Relative);

			_names = new ExcelNamedRangeCollection(this);
			_namespaceManager = namespaceManager;
			TopNode = WorkbookXml.DocumentElement;
			SchemaNodeOrder = new string[] { "fileVersion", "fileSharing", "workbookPr", "workbookProtection", "bookViews", "sheets", "functionGroups", "functionPrototypes", "externalReferences", "definedNames", "calcPr", "oleSize", "customWorkbookViews", "pivotCaches", "smartTagPr", "smartTagTypes", "webPublishing", "fileRecoveryPr", };
			GetSharedStrings();
		}
		#endregion

		internal Dictionary<string, SharedStringItem> _sharedStrings = new Dictionary<string, SharedStringItem>(); //Used when reading cells.
		internal List<SharedStringItem> _sharedStringsList = new List<SharedStringItem>(); //Used when reading cells.
		internal ExcelNamedRangeCollection _names;
		internal int _nextDrawingID = 0;
		internal int _nextTableID = 1;
		internal int _nextPivotTableID = 1;
		internal XmlNamespaceManager _namespaceManager;
        internal FormulaParser _formulaParser = null;
	    internal FormulaParserManager _parserManager;
        internal CellStore<List<Token>> _formulaTokens;
		///
		/// Read shared strings to list
		///
		private void GetSharedStrings()
		{
			if (_package.Package.PartExists(SharedStringsUri))
			{
				var xml = _package.GetXmlFromUri(SharedStringsUri);
				XmlNodeList nl = xml.SelectNodes("//d:sst/d:si", NameSpaceManager);
				_sharedStringsList = new List<SharedStringItem>();
				if (nl != null)
				{
					foreach (XmlNode node in nl)
					{
						XmlNode n = node.SelectSingleNode("d:t", NameSpaceManager);
						if (n != null)
						{
							_sharedStringsList.Add(new SharedStringItem() { Text = ExcelDecodeString(n.InnerText) });
						}
						else
						{
							_sharedStringsList.Add(new SharedStringItem() { Text = node.InnerXml, isRichText = true });
						}
					}
				}
                //Delete the shared string part, it will be recreated when the package is saved.
                foreach (var rel in Part.GetRelationships())
                {
                    if (rel.TargetUri.OriginalString.ToLower().EndsWith("sharedstrings.xml"))
                    {
                        Part.DeleteRelationship(rel.Id);
                        break;
                    }
                }
                _package.Package.DeletePart(SharedStringsUri); //Remove the part, it is recreated when saved.
			}
		}
		internal void GetDefinedNames()
		{
			XmlNodeList nl = WorkbookXml.SelectNodes("//d:definedNames/d:definedName", NameSpaceManager);
			if (nl != null)
			{
				foreach (XmlElement elem in nl)
				{
					string fullAddress = elem.InnerText;

					int localSheetID;
					ExcelWorksheet nameWorksheet;
					if(!int.TryParse(elem.GetAttribute("localSheetId"), out localSheetID))
					{
						localSheetID = -1;
						nameWorksheet=null;
					}
					else
					{
						nameWorksheet=Worksheets[localSheetID + 1];
					}
					var addressType = ExcelAddressBase.IsValid(fullAddress);
					ExcelRangeBase range;
					ExcelNamedRange namedRange;

					if (fullAddress.IndexOf("[") == 0)
					{
						int start = fullAddress.IndexOf("[");
						int end = fullAddress.IndexOf("]", start);
						if (start >= 0 && end >= 0)
						{

							string externalIndex = fullAddress.Substring(start + 1, end - start - 1);
							int index;
							if (int.TryParse(externalIndex, out index))
							{
								if (index > 0 && index <= _externalReferences.Count)
								{
									fullAddress = fullAddress.Substring(0, start) + "[" + _externalReferences[index - 1] + "]" + fullAddress.Substring(end + 1);
								}
							}
						}
					}

					if (addressType == ExcelAddressBase.AddressType.Invalid || addressType == ExcelAddressBase.AddressType.InternalName || addressType == ExcelAddressBase.AddressType.ExternalName || addressType==ExcelAddressBase.AddressType.Formula || addressType==ExcelAddressBase.AddressType.ExternalAddress)    //A value or a formula
					{
						double value;
						range = new ExcelRangeBase(this, nameWorksheet, elem.GetAttribute("name"), true);
						if (nameWorksheet == null)
						{
							namedRange = _names.Add(elem.GetAttribute("name"), range);
						}
						else
						{
							namedRange = nameWorksheet.Names.Add(elem.GetAttribute("name"), range);
						}

						if (fullAddress.StartsWith("\"")) //String value
						{
							namedRange.NameValue = fullAddress.Substring(1,fullAddress.Length-2);
						}
						else if (double.TryParse(fullAddress, NumberStyles.Any, CultureInfo.InvariantCulture, out value))
						{
							namedRange.NameValue = value;
						}
						else
						{
							namedRange.NameFormula = fullAddress;
						}
					}
					else
					{
						ExcelAddress addr = new ExcelAddress(fullAddress, _package, null);
						if (localSheetID > -1)
						{
							if (string.IsNullOrEmpty(addr._ws))
							{
								namedRange = Worksheets[localSheetID + 1].Names.Add(elem.GetAttribute("name"), new ExcelRangeBase(this, Worksheets[localSheetID + 1], fullAddress, false));
							}
							else
							{
								namedRange = Worksheets[localSheetID + 1].Names.Add(elem.GetAttribute("name"), new ExcelRangeBase(this, Worksheets[addr._ws], fullAddress, false));
							}
						}
						else
						{
							var ws = Worksheets[addr._ws];
							namedRange = _names.Add(elem.GetAttribute("name"), new ExcelRangeBase(this, ws, fullAddress, false));
						}
					}
					if (elem.GetAttribute("hidden") == "1" && namedRange != null) namedRange.IsNameHidden = true;
					if(!string.IsNullOrEmpty(elem.GetAttribute("comment"))) namedRange.NameComment=elem.GetAttribute("comment");
				}
			}
		}
		#region Worksheets
		///
		/// Provides access to all the worksheets in the workbook.
		///
		public ExcelWorksheets Worksheets
		{
			get
			{
				if (_worksheets == null)
				{
					var sheetsNode = _workbookXml.DocumentElement.SelectSingleNode("d:sheets", _namespaceManager);
					if (sheetsNode == null)
					{
						sheetsNode = CreateNode("d:sheets");
					}

					_worksheets = new ExcelWorksheets(_package, _namespaceManager, sheetsNode);
				}
				return (_worksheets);
			}
		}
		#endregion

		///
		/// Provides access to named ranges
		///
		public ExcelNamedRangeCollection Names
		{
			get
			{
				return _names;
			}
		}
		#region Workbook Properties
		decimal _standardFontWidth = decimal.MinValue;
        string _fontID = "";
        internal FormulaParser FormulaParser
        {
            get
            {
                if (_formulaParser == null)
                {
                    _formulaParser = new FormulaParser(new EpplusExcelDataProvider(_package));
                }
                return _formulaParser;
            }
        }

	    public FormulaParserManager FormulaParserManager
	    {
	        get
	        {
	            if (_parserManager == null)
	            {
	                _parserManager = new FormulaParserManager(FormulaParser);
	            }
	            return _parserManager;
	        }
	    }

        ///
		/// Max font width for the workbook
        /// <remarks>This method uses GDI. If you use Asure or another environment that does not support GDI, you have to set this value manually if you don't use the standard Calibri font</remarks>
		///
		public decimal MaxFontWidth
		{
			get
			{
                if (_standardFontWidth == decimal.MinValue || _fontID != Styles.Fonts[0].Id)
				{
					var font = Styles.Fonts[0];
                    try
                    {
                        //Font f = new Font(font.Name, font.Size);
                        _standardFontWidth = 0;
                        _fontID = font.Id;
                        Typeface tf = new Typeface(new System.Windows.Media.FontFamily(font.Name),
                                                     (font.Italic) ? FontStyles.Normal : FontStyles.Italic,
                                                     (font.Bold) ? FontWeights.Bold : FontWeights.Normal,
                                                     FontStretches.Normal);
                        for(int i=0;i<10;i++)
                        {
                            var ft = new System.Windows.Media.FormattedText("0123456789".Substring(i,1), CultureInfo.InvariantCulture, System.Windows.FlowDirection.LeftToRight, tf, font.Size * (96D / 72D), System.Windows.Media.Brushes.Black);
                            var width=(int)Math.Round(ft.Width,0);
                            if(width>_standardFontWidth)
                            {
                                _standardFontWidth = width;
                            }
                        }

                        //var size = new System.Windows.Size { Width = ft.WidthIncludingTrailingWhitespace, Height = ft.Height };

                        //using (Bitmap b = new Bitmap(1, 1))
                        //{
                        //    using (Graphics g = Graphics.FromImage(b))
                        //    {
                        //        _standardFontWidth = (decimal)Math.Truncate(g.MeasureString("00", f).Width - g.MeasureString("0", f).Width);
                        //    }
                        //}
                        if (_standardFontWidth <= 0) //No GDI?
                        {
                            _standardFontWidth = (int)(font.Size * (2D / 3D)); //Aprox. for Calibri.
                        }
                    }
                    catch   //Error, set default value
                    {
                        _standardFontWidth = (int)(font.Size * (2D / 3D)); //Aprox for Calibri.
                    }
				}
				return _standardFontWidth;
			}
            set
            {
                _standardFontWidth = value;
            }
		}
		ExcelProtection _protection = null;
		///
		/// Access properties to protect or unprotect a workbook
		///
		public ExcelProtection Protection
		{
			get
			{
				if (_protection == null)
				{
					_protection = new ExcelProtection(NameSpaceManager, TopNode, this);
					_protection.SchemaNodeOrder = SchemaNodeOrder;
				}
				return _protection;
			}
		}
		ExcelWorkbookView _view = null;
		///
		/// Access to workbook view properties
		///
		public ExcelWorkbookView View
		{
			get
			{
				if (_view == null)
				{
					_view = new ExcelWorkbookView(NameSpaceManager, TopNode, this);
				}
				return _view;
			}
		}
        ExcelVbaProject _vba = null;
        ///
        /// A reference to the VBA project.
        /// Null if no project exists.
        /// Use Workbook.CreateVBAProject to create a new VBA-Project
        ///
        public ExcelVbaProject VbaProject
        {
            get
            {
                if (_vba == null)
                {
                    if(_package.Package.PartExists(new Uri(ExcelVbaProject.PartUri, UriKind.Relative)))
                    {
                        _vba = new ExcelVbaProject(this);
                    }
                }
                return _vba;
            }
        }
        ///
        /// Create an empty VBA project.
        ///
        public void CreateVBAProject()
        {
            if (_vba != null || _package.Package.PartExists(new Uri(ExcelVbaProject.PartUri, UriKind.Relative)))
            {
                throw (new InvalidOperationException("VBA project already exists."));
            }

            _vba = new ExcelVbaProject(this);
            _vba.Create();
        }
		///
		/// URI to the workbook inside the package
		///
		internal Uri WorkbookUri { get; private set; }
		///
        /// URI to the styles inside the package
		///
		internal Uri StylesUri { get; private set; }
		///
        /// URI to the shared strings inside the package
		///
		internal Uri SharedStringsUri { get; private set; }
		///
		/// Returns a reference to the workbook's part within the package
		///
		internal Packaging.ZipPackagePart Part { get { return (_package.Package.GetPart(WorkbookUri)); } }

		#region WorkbookXml
		private XmlDocument _workbookXml;
		///
		/// Provides access to the XML data representing the workbook in the package.
		///
		public XmlDocument WorkbookXml
		{
			get
			{
				if (_workbookXml == null)
				{
					CreateWorkbookXml(_namespaceManager);
				}
				return (_workbookXml);
			}
		}
        const string codeModuleNamePath = "d:workbookPr/@codeName";
        internal string CodeModuleName
        {
            get
            {
                return GetXmlNodeString(codeModuleNamePath);
            }
            set
            {
                SetXmlNodeString(codeModuleNamePath,value);
            }
        }
        internal void CodeNameChange(string value)
        {
            CodeModuleName = value;
        }
        public VBA.ExcelVBAModule CodeModule
        {
            get
            {
                if (VbaProject != null)
                {
                    return VbaProject.Modules[CodeModuleName];
                }
                else
                {
                    return null;
                }
            }
        }

        const string date1904Path = "d:workbookPr/@date1904";
        internal const double date1904Offset = 365.5 * 4;  // offset to fix 1900 and 1904 differences, 4 OLE years
        ///
        /// The date systems used by Microsoft Excel can be based on one of two different dates. By default, a serial number of 1 in Microsoft Excel represents January 1, 1900.
        /// The default for the serial number 1 can be changed to represent January 2, 1904.
        /// This option was included in Microsoft Excel for Windows to make it compatible with Excel for the Macintosh, which defaults to January 2, 1904.
        ///
        public bool Date1904
        {
            get
            {
                return GetXmlNodeBool(date1904Path, false);

            }
            set
            {
                if (Date1904 != value)
                {
                    // Like Excel when the option it's changed update it all cells with Date format
                    foreach (var item in Worksheets)
                    {
                        item.UpdateCellsWithDate1904Setting();
                    }
                }

                SetXmlNodeBool(date1904Path, value, false);
            }
        }

		///
		/// Create or read the XML for the workbook.
		///
		private void CreateWorkbookXml(XmlNamespaceManager namespaceManager)
		{
			if (_package.Package.PartExists(WorkbookUri))
				_workbookXml = _package.GetXmlFromUri(WorkbookUri);
			else
			{
				// create a new workbook part and add to the package
				Packaging.ZipPackagePart partWorkbook = _package.Package.CreatePart(WorkbookUri, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", _package.Compression);

				// create the workbook
				_workbookXml = new XmlDocument(namespaceManager.NameTable);

				_workbookXml.PreserveWhitespace = ExcelPackage.preserveWhitespace;
				// create the workbook element
				XmlElement wbElem = _workbookXml.CreateElement("workbook", ExcelPackage.schemaMain);

				// Add the relationships namespace
				wbElem.SetAttribute("xmlns:r", ExcelPackage.schemaRelationships);

				_workbookXml.AppendChild(wbElem);

				// create the bookViews and workbooks element
				XmlElement bookViews = _workbookXml.CreateElement("bookViews", ExcelPackage.schemaMain);
				wbElem.AppendChild(bookViews);
				XmlElement workbookView = _workbookXml.CreateElement("workbookView", ExcelPackage.schemaMain);
				bookViews.AppendChild(workbookView);

				// save it to the package
				StreamWriter stream = new StreamWriter(partWorkbook.GetStream(FileMode.Create, FileAccess.Write));
				_workbookXml.Save(stream);
				//stream.Close();
				_package.Package.Flush();
			}
		}
		#endregion
		#region StylesXml
		private XmlDocument _stylesXml;
		///
		/// Provides access to the XML data representing the styles in the package.
		///
		public XmlDocument StylesXml
		{
			get
			{
				if (_stylesXml == null)
				{
					if (_package.Package.PartExists(StylesUri))
						_stylesXml = _package.GetXmlFromUri(StylesUri);
					else
					{
						// create a new styles part and add to the package
						Packaging.ZipPackagePart part = _package.Package.CreatePart(StylesUri, @"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", _package.Compression);
						// create the style sheet

						StringBuilder xml = new StringBuilder("");

						_stylesXml = new XmlDocument();
						_stylesXml.LoadXml(xml.ToString());

						//Save it to the package
						StreamWriter stream = new StreamWriter(part.GetStream(FileMode.Create, FileAccess.Write));

						_stylesXml.Save(stream);
						//stream.Close();
						_package.Package.Flush();

						// create the relationship between the workbook and the new shared strings part
						_package.Workbook.Part.CreateRelationship(UriHelper.GetRelativeUri(WorkbookUri, StylesUri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/styles");
						_package.Package.Flush();
					}
				}
				return (_stylesXml);
			}
			set
			{
				_stylesXml = value;
			}
		}
		///
		/// Package styles collection. Used internally to access style data.
		///
		public ExcelStyles Styles
		{
			get
			{
				if (_styles == null)
				{
					_styles = new ExcelStyles(NameSpaceManager, StylesXml, this);
				}
				return _styles;
			}
		}
		#endregion

		#region Office Document Properties
		///
		/// The office document properties
		///
		public OfficeProperties Properties
		{
			get
			{
				if (_properties == null)
				{
					//  Create a NamespaceManager to handle the default namespace,
					//  and create a prefix for the default namespace:
					_properties = new OfficeProperties(_package, NameSpaceManager);
				}
				return _properties;
			}
		}
		#endregion

		#region CalcMode
		private string CALC_MODE_PATH = "d:calcPr/@calcMode";
		///
		/// Calculation mode for the workbook.
		///
		public ExcelCalcMode CalcMode
		{
			get
			{
				string calcMode = GetXmlNodeString(CALC_MODE_PATH);
				switch (calcMode)
				{
					case "autoNoTable":
						return ExcelCalcMode.AutomaticNoTable;
					case "manual":
						return ExcelCalcMode.Manual;
					default:
						return ExcelCalcMode.Automatic;

				}
			}
			set
			{
				switch (value)
				{
					case ExcelCalcMode.AutomaticNoTable:
						SetXmlNodeString(CALC_MODE_PATH, "autoNoTable") ;
						break;
					case ExcelCalcMode.Manual:
						SetXmlNodeString(CALC_MODE_PATH, "manual");
						break;
					default:
						SetXmlNodeString(CALC_MODE_PATH, "auto");
						break;

				}
			}
			#endregion
		}
		#endregion
		#region Workbook Private Methods

		#region Save // Workbook Save
		///
		/// Saves the workbook and all its components to the package.
		/// For internal use only!
		///
		internal void Save()  // Workbook Save
		{
			if (Worksheets.Count == 0)
				throw new InvalidOperationException("The workbook must contain at least one worksheet");

			DeleteCalcChain();

            if (_vba == null && !_package.Package.PartExists(new Uri(ExcelVbaProject.PartUri, UriKind.Relative)))
            {
                if (Part.ContentType != ExcelPackage.contentTypeWorkbookDefault)
                {
                    Part.ContentType = ExcelPackage.contentTypeWorkbookDefault;
                }
            }
            else
            {
                if (Part.ContentType != ExcelPackage.contentTypeWorkbookMacroEnabled)
                {
                    Part.ContentType = ExcelPackage.contentTypeWorkbookMacroEnabled;
                }
            }

            UpdateDefinedNamesXml();

			// save the workbook
			if (_workbookXml != null)
			{
				_package.SavePart(WorkbookUri, _workbookXml);
			}

			// save the properties of the workbook
			if (_properties != null)
			{
				_properties.Save();
			}

			// save the style sheet
			Styles.UpdateXml();
			_package.SavePart(StylesUri, _stylesXml);

			// save all the open worksheets
			var isProtected = Protection.LockWindows || Protection.LockStructure;
			foreach (ExcelWorksheet worksheet in Worksheets)
			{
				if (isProtected && Protection.LockWindows)
				{
					worksheet.View.WindowProtection = true;
				}
				worksheet.Save();
                worksheet.Part.SaveHandler = worksheet.SaveHandler;
			}

            var part = _package.Package.CreatePart(SharedStringsUri, ExcelPackage.contentTypeSharedString, _package.Compression);
            part.SaveHandler = SaveSharedStringHandler;
            Part.CreateRelationship(UriHelper.GetRelativeUri(WorkbookUri, SharedStringsUri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/sharedStrings");
            //UpdateSharedStringsXml();

			// Data validation
			ValidateDataValidations();

            //VBA
            if (_vba!=null)
            {
                VbaProject.Save();
            }

		}
		private void DeleteCalcChain()
		{
			//Remove the calc chain if it exists.
			Uri uriCalcChain = new Uri("/xl/calcChain.xml", UriKind.Relative);
			if (_package.Package.PartExists(uriCalcChain))
			{
				Uri calcChain = new Uri("calcChain.xml", UriKind.Relative);
				foreach (var relationship in _package.Workbook.Part.GetRelationships())
				{
					if (relationship.TargetUri == calcChain)
					{
						_package.Workbook.Part.DeleteRelationship(relationship.Id);
						break;
					}
				}
				// delete the calcChain part
				_package.Package.DeletePart(uriCalcChain);
			}
		}

		private void ValidateDataValidations()
		{
			foreach (var sheet in _package.Workbook.Worksheets)
			{
                if (!(sheet is ExcelChartsheet))
                {
                    sheet.DataValidations.ValidateAll();
                }
			}
		}

        private void SaveSharedStringHandler(ZipOutputStream stream, Ionic.Zlib.CompressionLevel compressionLevel, string fileName)
		{
            //Packaging.ZipPackagePart stringPart;
            //if (_package.Package.PartExists(SharedStringsUri))
            //{
            //    stringPart=_package.Package.GetPart(SharedStringsUri);
            //}
            //else
            //{
            //    stringPart = _package.Package.CreatePart(SharedStringsUri, @"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", _package.Compression);
                  //Part.CreateRelationship(UriHelper.GetRelativeUri(WorkbookUri, SharedStringsUri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/sharedStrings");
            //}

			//StreamWriter sw = new StreamWriter(stringPart.GetStream(FileMode.Create, FileAccess.Write));
            //Init Zip
            stream.CompressionLevel = compressionLevel;
            stream.PutNextEntry(fileName);

            var cache = new StringBuilder();
            StreamWriter sw = new StreamWriter(stream);
            cache.AppendFormat("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?><sst xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" count=\"{0}\" uniqueCount=\"{0}\">", _sharedStrings.Count);
			foreach (string t in _sharedStrings.Keys)
			{

				SharedStringItem ssi = _sharedStrings[t];
				if (ssi.isRichText)
				{
                    cache.Append("<si>");
                    ExcelEncodeString(cache, t);
                    cache.Append("</si>");
				}
				else
				{
					if (t.Length>0 && (t[0] == ' ' || t[t.Length-1] == ' ' || t.Contains("  ") || t.Contains("\t")))
					{
                        cache.Append("<si><t xml:space=\"preserve\">");
					}
					else
					{
                        cache.Append("<si><t>");
					}
					ExcelEncodeString(cache, ExcelEscapeString(t));
                    cache.Append("</t></si>");
				}
                if (cache.Length > 0x600000)
                {
                    sw.Write(cache.ToString());
                    cache = new StringBuilder();
                }
			}
            cache.Append("</sst>");
            sw.Write(cache.ToString());
            sw.Flush();
            Part.CreateRelationship(UriHelper.GetRelativeUri(WorkbookUri, SharedStringsUri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/sharedStrings");
		}

		///
		/// OOXML requires that "," , and & be escaped, but ' and " should *not* be escaped, nor should
		/// any extended Unicode characters. This function only encodes the required characters.
		/// System.Security.SecurityElement.Escape() escapes ' and " as  ' and ", so it cannot
		/// be used reliably. System.Web.HttpUtility.HtmlEncode overreaches as well and uses the numeric
		/// escape equivalent.
		///
		/// <param name="s"></param>
		/// <returns></returns>
		private static string ExcelEscapeString(string s) {
			return s.Replace("&", "&").Replace("<", "<").Replace(">", ">");
		}

		///
		/// Return true if preserve space attribute is set.
		///
		/// <param name="sw"></param>
		/// <param name="t"></param>
		/// <returns></returns>
		internal static void ExcelEncodeString(StreamWriter sw, string t)
		{
			if(Regex.IsMatch(t, "(_x[0-9A-F]{4,4}_)"))
			{
				var match = Regex.Match(t, "(_x[0-9A-F]{4,4}_)");
				int indexAdd = 0;
				while (match.Success)
				{
					t=t.Insert(match.Index + indexAdd, "_x005F");
					indexAdd += 6;
					match = match.NextMatch();
				}
			}
			for (int i=0;i<t.Length;i++)
			{
				if (t[i] <= 0x1f && t[i] != '\t' && t[i] != '\n' && t[i] != '\r') //Not Tab, CR or LF
				{
					sw.Write("_x00{0}_", (t[i] < 0xa ? "0" : "") + ((int)t[i]).ToString("X"));
				}
				else
				{
					sw.Write(t[i]);
				}
			}

		}
        ///
        /// Return true if preserve space attribute is set.
        ///
        /// <param name="sb"></param>
        /// <param name="t"></param>
        /// <returns></returns>
        internal static void ExcelEncodeString(StringBuilder sb, string t)
        {
            if (Regex.IsMatch(t, "(_x[0-9A-F]{4,4}_)"))
            {
                var match = Regex.Match(t, "(_x[0-9A-F]{4,4}_)");
                int indexAdd = 0;
                while (match.Success)
                {
                    t = t.Insert(match.Index + indexAdd, "_x005F");
                    indexAdd += 6;
                    match = match.NextMatch();
                }
            }
            for (int i = 0; i < t.Length; i++)
            {
                if (t[i] <= 0x1f && t[i] != '\t' && t[i] != '\n' && t[i] != '\r') //Not Tab, CR or LF
                {
                    sb.AppendFormat("_x00{0}_", (t[i] < 0xa ? "0" : "") + ((int)t[i]).ToString("X"));
                }
                else
                {
                    sb.Append(t[i]);
                }
            }

        }
        internal static string ExcelDecodeString(string t)
		{
			var match = Regex.Match(t, "(_x005F|_x[0-9A-F]{4,4}_)");
			if(!match.Success) return t;

			bool useNextValue = false;
			StringBuilder ret=new StringBuilder();
			int prevIndex=0;
			while(match.Success)
			{
				if (prevIndex < match.Index) ret.Append(t.Substring(prevIndex, match.Index - prevIndex));
				if (!useNextValue && match.Value == "_x005F")
				{
					useNextValue = true;
				}
				else
				{
					if (useNextValue)
					{
						ret.Append(match.Value);
						useNextValue=false;
					}
					else
					{
						ret.Append((char)int.Parse(match.Value.Substring(2,4),NumberStyles.AllowHexSpecifier));
					}
				}
				prevIndex=match.Index+match.Length;
				match = match.NextMatch();
			}
			ret.Append(t.Substring(prevIndex, t.Length - prevIndex));
			return ret.ToString();
		}
		private void UpdateDefinedNamesXml()
		{
			try
			{
                XmlNode top = WorkbookXml.SelectSingleNode("//d:definedNames", NameSpaceManager);
				if (!ExistsNames())
				{
					if (top != null) TopNode.RemoveChild(top);
					return;
				}
				else
				{
					if (top == null)
					{
						CreateNode("d:definedNames");
						top = WorkbookXml.SelectSingleNode("//d:definedNames", NameSpaceManager);
					}
					else
					{
						top.RemoveAll();
					}
					foreach (ExcelNamedRange name in _names)
					{

						XmlElement elem = WorkbookXml.CreateElement("definedName", ExcelPackage.schemaMain);
						top.AppendChild(elem);
						elem.SetAttribute("name", name.Name);
						if (name.IsNameHidden) elem.SetAttribute("hidden", "1");
						if (!string.IsNullOrEmpty(name.NameComment)) elem.SetAttribute("comment", name.NameComment);
						SetNameElement(name, elem);
					}
				}
				foreach (ExcelWorksheet ws in _worksheets)
				{
                    if (!(ws is ExcelChartsheet))
                    {
                        foreach (ExcelNamedRange name in ws.Names)
                        {
                            XmlElement elem = WorkbookXml.CreateElement("definedName", ExcelPackage.schemaMain);
                            top.AppendChild(elem);
                            elem.SetAttribute("name", name.Name);
                            elem.SetAttribute("localSheetId", name.LocalSheetId.ToString());
                            if (name.IsNameHidden) elem.SetAttribute("hidden", "1");
                            if (!string.IsNullOrEmpty(name.NameComment)) elem.SetAttribute("comment", name.NameComment);
                            SetNameElement(name, elem);
                        }
                    }
				}
			}
			catch (Exception ex)
			{
				throw new Exception("Internal error updating named ranges ",ex);
			}
		}

		private void SetNameElement(ExcelNamedRange name, XmlElement elem)
		{
			if (name.IsName)
			{
				if (string.IsNullOrEmpty(name.NameFormula))
				{
					if ((name.NameValue.GetType().IsPrimitive || name.NameValue is double || name.NameValue is decimal))
					{
						elem.InnerText = Convert.ToDouble(name.NameValue, CultureInfo.InvariantCulture).ToString("R15", CultureInfo.InvariantCulture);
					}
					else if (name.NameValue is DateTime)
					{
						elem.InnerText = ((DateTime)name.NameValue).ToOADate().ToString(CultureInfo.InvariantCulture);
					}
					else
					{
						elem.InnerText = "\"" + name.NameValue.ToString() + "\"";
					}
				}
				else
				{
					elem.InnerText = name.NameFormula;
				}
			}
			else
			{
                elem.InnerText = name.FullAddressAbsolute;
			}
		}
		///
		/// Is their any names in the workbook or in the sheets.
		///
		/// <returns>?</returns>
		private bool ExistsNames()
		{
			if (_names.Count == 0)
			{
				foreach (ExcelWorksheet ws in Worksheets)
				{
                    if (ws is ExcelChartsheet) continue;
                    if(ws.Names.Count>0)
					{
						return true;
					}
				}
			}
			else
			{
				return true;
			}
			return false;
		}
		#endregion

		#endregion
		internal bool ExistsTableName(string Name)
		{
			foreach (var ws in Worksheets)
			{
				if(ws.Tables._tableNames.ContainsKey(Name))
				{
					return true;
				}
			}
			return false;
		}
		internal bool ExistsPivotTableName(string Name)
		{
			foreach (var ws in Worksheets)
			{
				if (ws.PivotTables._pivotTableNames.ContainsKey(Name))
				{
					return true;
				}
			}
			return false;
		}
		internal void AddPivotTable(string cacheID, Uri defUri)
		{
			CreateNode("d:pivotCaches");

			XmlElement item = WorkbookXml.CreateElement("pivotCache", ExcelPackage.schemaMain);
			item.SetAttribute("cacheId", cacheID);
			var rel = Part.CreateRelationship(UriHelper.ResolvePartUri(WorkbookUri, defUri), Packaging.TargetMode.Internal, ExcelPackage.schemaRelationships + "/pivotCacheDefinition");
			item.SetAttribute("id", ExcelPackage.schemaRelationships, rel.Id);

			var pivotCaches = WorkbookXml.SelectSingleNode("//d:pivotCaches", NameSpaceManager);
			pivotCaches.AppendChild(item);
		}
		internal List<string> _externalReferences = new List<string>();
        internal bool _isCalculated=false;
		internal void GetExternalReferences()
		{
			XmlNodeList nl = WorkbookXml.SelectNodes("//d:externalReferences/d:externalReference", NameSpaceManager);
			if (nl != null)
			{
				foreach (XmlElement elem in nl)
				{
					string rID = elem.GetAttribute("r:id");
					var rel = Part.GetRelationship(rID);
					var part = _package.Package.GetPart(UriHelper.ResolvePartUri(rel.SourceUri, rel.TargetUri));
					XmlDocument xmlExtRef = new XmlDocument();
                    LoadXmlSafe(xmlExtRef, part.GetStream());

					XmlElement book=xmlExtRef.SelectSingleNode("//d:externalBook", NameSpaceManager) as XmlElement;
					if(book!=null)
					{
						string rId_ExtRef = book.GetAttribute("r:id");
						var rel_extRef = part.GetRelationship(rId_ExtRef);
						if (rel_extRef != null)
						{
							_externalReferences.Add(rel_extRef.TargetUri.OriginalString);
						}

					}
				}
			}
		}

        public void Dispose()
        {
            _sharedStrings.Clear();
            _sharedStringsList.Clear();

            _sharedStrings = null;
            _sharedStringsList = null;
            _vba = null;
            _worksheets.Dispose();
            _package = null;
            _worksheets = null;
            _properties = null;
            _formulaParser = null;
        }
    } // end Workbook
}


Henrik is on the way to break the non-stop solo Around the World Record for 40-foot monohulls.
He will make the attempt in his Class 40, CROIX DU SUD, in accordance with the rules of the World Sailing Speed Record Council (WSSRC), who will time the start and finish on the line between Point Lissard and Ile de Ouessant.
Additionally, a 'WSSRC Black Box' will be installed on the boat to record data from his attempt to break the existing record of 137 days, 20 hours, 01 minute, 57 seconds set by Chinese sailor Guo Chuan in 2013. The 48-year-old Guo departed his hometown of Qingdao, China on November 18, 2012 and returned on April 5, 2013.